Betriebstechnik | Biographien | Biologie | Chemie | Deutsch | Digitaltechnik |
Electronica | Epochen | Fertigungstechnik | Gemeinschaftskunde | Geographie | Geschichte |
Informatik | Kultur | Kunst | Literatur | Management | Mathematik |
Medizin | Nachrichtentechnik | Philosophie | Physik | Politik | Projekt |
Psychologie | Recht | Sonstige | Sport | Technik | Wirtschaftskunde |
Ähnliche Berichte:
|
Projekte:
|
Papers in anderen sprachen:
|
informatik referate |
Dieses Script soll die Unterschiede zwischen C und ANSI C
augenscheinlicher machen.
Turbo C 0
TURBO C 0 stellt im Gegensatz zu den neueren C++ Entwicklungssystemen relativ geringe Ansprüche an die Hardware, man kann damit rechnen , daß es auf den meisten Rechner läuft. C ist eine höhere Programmiersprache, eine universelle Sprache, hat die ALGOL_60 Blockstruktur. C hat eine modulare Struktur und hat einige elementare Sprachelemente zur Simulation paralleler Prozesse include file <signal.h>) und eignet sich eingeschränkt auch zur Beschreibung von Echtzeitprozessen. Herausgegeben wurde C (revised ) von der Bell Telephone Laboratories Incorporation als zweiter Nachfolger der Bell Sprache BCPL. Der Name C soll der zweite Buchstabe aus BCPL sein. Strukturiertes Programmieren, wie ehemals in PASCAL, ist in C nur möglich, wenn die standardmä ig vorhandenen Kontrollstrukturen, insbesondere die zu unstrukturiertem Programmieren geradezu einladenden for-Schleife, neu definiert werden. Dazu bieten sich die in C vorkommenden neuen Präprozessor Sprachänderungsmöglichkeiten an. C-Anweisungen werden stets mit einem Semikolon abgeschlossen.
Die Schlüsselwörter müssen in Kleinbuchstaben geschrieben werden. Für selbstgewählte Wörter empfiehlt es sich, eine einmalige Form einzuführen, aber bei dieser Form auch zu bleiben. Speziell für Anfänger ist es von Vorteil, solche Schreibweisen anzuwenden.
Um bei Programmen immer die Übersicht zu behalten, empfiehlt es sich, bei Anweisungen etwas einzurücken, sorgfältiger modaler Aufbau, leicht zu verständlicher Kommentar und Quellcodes und gute Lesbarkeit durch unterschiedliche Schreibweisen.
Solange ein Programm noch in der Entwicklung sich befindet, sollte man vermeiden, Testläufe auszuführen, ohne zuvor den Compiler allein durchgeführt zu haben. Auch Warnungen sollten ernst genommen werden, da sie meistens auf Mißstände oder mangelhafte Portabilität hinzeigen. Mi achtete Warnungen können einem völlig unerklärlich scheinenden Verhalten des Programms zugrunde liegen.
Zweckmä iges Strukturieren des Quellprogramms sollte sich an folgenden Regeln orientieren, welche es erleichtern, für den Ablauf besonders signifikante Symbole oder Schlüsselwörter einschlie lich ihrer Beziehungen zueinander schnell zu erfassen:
Zusammengehörige öffnende und schlie ende geschwungene Klammern genau senkrecht untereinander schreiben, am besten genau unter dem Anfang des Schlüsselwortes, zu dem der so definierte Block gehört.
Jeden Zeilenanfang in einem mit begrenztem Block gegenüber den geschwungenen Klammern um wenigstens 2 Spalten eingerückt schreiben
Zusammengehörige Schlüsselwörter wie if, else, do, while und case genau senkrecht untereinander schreiben.
Einzelne Anweisungen, die deshalb keiner bedürfen, gegenüber dem Anfang des dem Block übergeordnetem Schlüsselworts etwas einrücken, zu Beispiel bis zum nächsten Wortanfang in der darüber stehenden Zeile, allenfalls mindestens um 2 bis 3 Spalten.
Anweisungen, die nicht in eine Bildschirmzeile passen, geeignet auf mehrere Zeilen aufteilen, keinesfalls
Zeilen so lang schreiben, daß man wichtige Teile nicht auf dem Bildschirm sieht.
C verlangt auch, daß sogenannte Headerdateien, in denen die Prototypen der die Sprache ergänzenden Routinen zusammengefa t sind, im Programmkopf mittels inlclude <datei.h> angegeben sind. Werden solche Routinen als Funktionen aufgerufen können sich auch einen Rückwert liefern.
Wenn sie aber als Prozeduren aufgerufen werden, wird hier auf einen Rückwert naturgemäß verzeichnet. Kommentare dient dem allgemeinem Verständlichmachens des Quellprogramms. Im Gegensatz zu Assemblerprogrammen sollten Programme in einer höheren Programmiersprache nicht zu exzessiv kommentiert
sein. Es sollten vielmehr durch ausdrucksstarke Namensgebung darauf geachtet werden, daß der Quellcode verständlich ist.
Symbole sind Einheiten, die der Compiler als individuell erkennt und auf denen das Verständnis des Quellcodes basiert.
Präprozessor
Bevor der Compiler ein C-Quellprogramm übersetzt, führt der Präprozessor vorbereitende Arbeiten durch.
Mehrzeilige Quellprogramm-Aussagen werden zu einzeiligen zusammengefa t.
Die für das Verständnis durch den Compiler erforderlichen Grundsymbole werden durch
Zwischenraumzeichen getrennt.
Dateien, die durch include eingeführt wurden, werden in den an den Compiler weiterzuleitenden Quellcode eingeführt. Es sind dies insbesondere die Headerdateien. Diese enthalten insbesondere Funktions-Prototypen, weiters vordefinierte Bezeichnung, Makros und dergleichen, im Falle
unverständlicher Compiler-Fehlermeldungen lohnt es sich oft, die zuständige Header-Datei in den Editor zu laden und anzusehen.
define Direktiven werden im geamten Quellcode durch eine vereinbarten Wert ersetzt.
Bedingte Compilierung, das heißt, Quellprogramm-Abschnitte können je nach Abhängigkeit und anderen Direktiven nach Vorliegen bestimmter Bedingungen in den an den Compiler weiterzuleitenden Quellcode eingefügt werden. Mit #define können auch Makros definiert werden. Im Unterschied zu Unterprogrammen wird hier der ganze Code in das Programm eingeführt
Fehlende include Dateien führen zu Warnungen, die man beachten sollte. In C++ sogar zu ernsten Fehlermeldungen. Um Warnungen zu Gesicht zu bekommen, wird erst mal mit ALT-F9 nur compiliert. Nicht alle C Routinen sind allgemein portabel, das hei t, unter beliebigen anderen Betriebssystemen ebenso verfügbar. Die Ablaufsteuerung dient dem Steuern des Ablaufs eines Programms in Abhängigkeit von Bedingungen, die
sich während des Ablaufs ergeben. Für die Ablaufsteuerung stehen Schleifen und Auswahlanweisungen zur Verfügung. Um ein Assembler-Unterprogramm in ein C-Programm einzubinden, linken) muß der zugehörige Funktionsprototyp als extern vereinbart werden.
Die Speicherklassen eines Datenobjektes wird durch ein Speicherklassen-Attribut bestimmt. Die Speicherklasse bestimmt den G ltigkeitsbereich eines Datenobjektes. Die Sichtbarkeit wird häufig mit den Worten global und lokal beschrieben. Eine Variable kann gleichzeitig global und lokal sein. Global in dem Sinne, daß sie in dem
Block, in den sie vereinbart ist. Sowie in allen untergeordneten Bl cken sichtbar ist, lokal in den Sinn daß sie aus
einem übergeordnetem Blick nicht sichtbar ist.
ANSI C
Objektorientierte Programmierung ist zur Zeit ein Allheilmittel - obwohl es diese Methodik seit viel mehr als zehn Jahren gibt. Im Kern geht es um wenig mehr als darum, endlich die Prinzipien guter Programmierung anzuwenden, die man seit mehr als 0 Jahren beherrscht. Es stellt sich aber heraus daß man mit ANSI C schlicht und einfach weiter kommt als mit C++. C wurde ursprünglich von Dennis Ritchie im Anhang von K&R83] definiert. Der ANSI C Standard erschien ungefähr zehn Jahre später und führte bestimmte Anderungen und Erweiterungen ein. ANSI C legt fest, daß Namen fast beliebig lang sein können. Namen, die mit einem Unterstrich beginnen, sind für Bibliotheken vorgesehen, das hei t , sie sollten nicht im Benutzerprogrammen verwendete werden. Global vereinbarte Namen kann man mittels eines Befehls in einer Quelldatei verstecken. ANSI C erlaubt verlangt aber nicht daß bei der Vereinbarung von Funktionen die Parameter direkt in der Parameterliste deklariert werden. Funktionsdeklarationen legen damit auch die Typen ihrer Parameter fest Optional und ohne Einfluß auf die Funktionsdefinition können auch die Parameternamen angegeben werden.
Bei C und C++ reichen die portablen Möglichkeiten nicht aus. ANSI C wird benutzt um besonders objektorientiert zu programmieren Nur objektorientiertes Programmieren ermöglicht es Code von Projekt zu Projekt weiterzugeben.. Zu dieser Programmierung braucht man eine ganze Menge stilisierten Code. Die Namen können sich ändern aber die Struktur bleibt gleich. Durch einen eigenen Präprozessor werden wie bei C einige Arbeitsvorgänge durchgeführt. Dieser Präprozessor schreibt am Ende den gleichen ANSI Code wie er auch von Hand geschrieben werden könnte.
Abstrakte Datentypen F r den abstrakten Datentyp verbirgt sich sämtlicher Aspekt seiner Implementierung, wir zum Beispiel die Repräsentierung der einzelnen Werte, vor dem Anwendungsprogramm. Eine Anwendung hat nur Zugriff auf eine Definitionsdatei, in der ein Zeiger den Datentyp repräsentiert, und in der Operationen für den Datentyp als Funktionen deklariert sind, die generische Zeiger akzeptieren und liefern.
Dynamische Bindung, Generische Funktion Es werden hier auf eine einfache Weise Zeichenketten implementiert. Für diese Zeichenkette wird ein dynamischer Puffer angelegt, der dann den Text enthält. Wenn die Zeichenkette gelöscht wird, muß der dynamische Puffer freigegeben werden. Wenn ein Zeiger auf ein Objekt besteht, kann mit Hilfe der dynamischen Bindung typenspezifische Funktionen finden. Jedes Objekt beginnt mit einer Beschreibung, die Zeiger auf Funktionen enthält, die auf das Objekt angewendet werden.
Arithmetische Ausdrücke Dynamische Bindung ist ganz allein eine sehr mächtige Programmiertechnik.
An Stelle von wenigen Funktionen, die jeweils einen großen switch für viele Spezialfälle enthalten, können hier viel kleine Funktionen schrieben, die immer nur ein Fall bearbeiten müssen. Mit dynamischer Bindung sorgen man dafür, daß die korrekte Funktion aufgerufen wird. Diese Technik vereinfacht Routineaufgaben, und sie resultiert normalerweise in Code, der sich sehr leicht erweitern lä t. Dynamische Bindung kann sehr gut helfen, ein Problem in viele einfache Funktionen zu zerlegen. Ein daraus resultierendes Programm kann
sehr leicht erweitert werden.
Der ooc Präprozessor Es gibt eine Vielzahl von Konventionen, wie bestimmte Funktionen geschrieben werden müssen und welche zusätzlichen Funktionen nötig sind Selektoren, Initialisierung). Der Präprozessor hilft, die verscheidenden Konventionen einzuhalten. Der ooc hat nicht die Aufgabe jetzt einen neue Programmiersprache einzuführen, nur die Ausgabe von diesem Präprozessor könnte ebenso von Hand geschrieben es ist ANSI-Code. Es werden hier nur langweilige Routinen durch ein geeignetes Werkzeug erledigt. Wenn Codierstandards dazu führen, daß Teile eines Programms mechanisch erzeigt werden können, dann sollte man das auch tun.
Lecks in der Speicherverwaltung Moderne Arbeitsplatzrechner haben sehr viel Hauptspeicher. Wenn ein Programm hier und dort ein Byte verliert, macht das wahrscheinlich nicht viel aus. Lecks in der Speicherverwaltung sind aber normalerweise Anzeichen für Fehler in den Algorithmen entweder reagiert das Programm falsch auf unerwartete Eingaben, oder noch schlimmer, das Programm ist versehentlich so entworfen, daß es Verbindungen zu dynamisch beschafften Speicher abbricht.
Fehlerbehandlung mit System Moderne Programmiersprachen Wie Eiffel oder C++ verfügen über eine besondere Syntax zur Fehlerbehandlung. Bevor eine riskante Aktion versucht wird, führt man eine Fehler Behandlungsroutine ein. Während der riskanten Aktion können Software oder Hardware einen Fehler auslösen und damit die Fehlerbehandlung zu Fall bringen. Theoretische gibt es danach drei Möglichkeiten
1. Terminieren und zwar beides. Die Fehlerbehandlung und sowohl auch die riskante Aktion.
Fehlerbehandlung mit Terminierung kann in ANSI C sehr leicht durchgeführt werden.
2. Fortsetzen der riskanten Aktion unmittelbar nach dem Punkt, wo der Fehler entstand und die
Fehlerbehandlung ausgelöst wurde.
3. Wiederholen der riskanten Aktion, die den Fehler verursacht hat.
Textquellen: Strukturiertes Programmieren mit C von Harry Feldmann
Einführung in C von Walter Riemer Objektorientierte Programmierung mit ANSI C von Axel- Tobias Schreiner
Referate über:
|
Datenschutz |
Copyright ©
2024 - Alle Rechte vorbehalten AZreferate.com |
Verwenden sie diese referate ihre eigene arbeit zu schaffen. Kopieren oder herunterladen nicht einfach diese # Hauptseite # Kontact / Impressum |