Hilfe & Service von EDV-Fachleuten
source0b.gif

Edit v5.010 from 2005-03-29 to 2023-10-02 by HSc+SBa

Konventionen für die Programmiersprach C von 8 bis 16 Bit

+ Wollen Sie in unserem Team programmieren, sind Regeln der Zusammenarbeit gefragt. Eine ist die Schreibweise von Variablen und Objekten in Quelltexten. Wie diese bei H&S<-EDV erfolgt, wird im nachfolgend beschrieben.

Konvention für den Aufbau von Quelltexten in
  • "Header Input Process Output" auch als HIPO bezeichnet.
Die Benennung mittels [Präfix]Typkürzel [Basisname[Suffix]] und die dazugehörige Schreibweise bei den

Aufbau von Quelltexten

Header Input Process Output

Sie ist eine der ersten Art und Weisen, wie Quelltexte dokumentiert werden sollen.
Vorteil:
  • Sie ist in jedem Texteditor anwendbar!
  • Die Erläuterung, was der folgende Quelltext realisieren soll, was er übergeben bekommt, was er intern gebraucht und was er zurückgibt, steht direkt vor dem Quelltext!
Nachteil: Sie streckt den Quelltext!
Als zusätzlicher Nutzen ergibt sich daraus
  • abgegrenzte Funktionen,
  • einfache Datenschnittstelle und
  • Geheimhaltung der Wirkungsweise durch Übergabe der Art und Weise des Funktionsaufrufs und den Kommentarkopf.
Beispiel: Moon.CPP
   …
/******************************************************************************
* main = Kopf der Hauptdatei und deren Beschreibungen                        *
* -------------------------------------------------------------------------- *
* Process                                                                    *
* = Konstante siehe Definition.                                              *
* = Variable                                                                 *
* + Extern                                                                   *
* - giFehler: Siehe husvedvf.cpp!                                            *
* + Intern siehe Deklaration.                                                *
******************************************************************************/
int main(int iArg, char* pcaArg[], char* pcaEnv[])
{
/******* Definition from constant *********************************************/
enum ePHASE {FREI, STOSZD, BODEN};

const float
fCWasser=4190,   // Waermekapazitaet von Wasser = 4,19 J/kg/K!
fDSatzMax=300.0,   // Der maximale Massedurchsatz des Triebwerks in kg/s!
fG=6.673E-11,   // Gravitationskonstante G = 6,673*10-11 m^3 / kg / s^2^!
fGErde=9.81,   // Erdbeschleunigung auf der Oberflaeche in m/s^2.
fGMax=3,   // Die maximale Beschleunigung fuer Besatzung und Technik in g.
fMMond=7.35E+22,   // Masse vom Mond m = 7,35* 10+22kg!
fMWasser=1,   // Masse des Wassers im Stoszdaempfer = 1kg!
   …
   

Da diese Art und Weise der Beschreibung des Quelltextes immer möglich ist, ist diese bei uns das Minimum dessen Dokumentation!

Benennung

Der Name von Konstanten, Variablen und Objekten hat die Aufgabe diese zu beschreiben. Es sollte aber nicht die maximale Größe von 240 Zeichen pro Name ausgenutzt werden. Der Seitenrand eines Blattes Papier im Format A4 und bei einer Schriftgröße von 10, ist bei 80 Zeichen pro Zeile auch ausgereizt. Und es sollte mehr als nur einen Namen pro Zeile stehen. Ein Kompromiss ist irgendwo zwischen 8 und 16 Zeichen pro Name zu finden.

Die ungarische Konvention, welche auch von namhaften Herstellern verwendet wird, wurde mit Einführung der objektorientierten Programmierung, durch Reddig für Visual Basic überarbeitet. An diese angelehnt sind die Vorgaben die in der Firma "H&S<−EDV" für diese gelten.

Die grundsätzliche Form der ungarischen Notation ist: [Präfix]Typkürzel [Basisname[Suffix]].
An Hand der Präfixe, Typbezeichnung und eventuellem Suffix von Konstanten, Variablen und Objekten, erkennt man, ohne nach der Deklaration der selbigen suchen zu müssen, von welchem Datentypen diese sein sollte und wofür eingesetzt wird.
Der Basisname ist der eigentliche Name der Konstante bzw. Variable bzw. des Objekts. Auf die Beschreibung des Basisnamens und der Komponenten davor und danach wird jeweils bei den eingegangen.

Variablen

Der Basisname der Variable wird deutsch geschrieben. D.h. mit einen großen Anfangsbuchstaben, ebenso der Suffix, welcher gleich an den Variablennamen angefügt wird.
Zum Bsp. die Variable für die Anzahl der € als Integervariable ohne Vorzeichen (unsigned integer) könnte uitEuroAnz mit
  • der Typ uitEuroAnz für unsigned integer,
  • dem Name der Variable uitEuroAnz für € und
  • dem Suffix uitEuroAnz für die Anzahl.

Konstanten

Der Basisname wird hier komplett in Grossbuchstaben geschrieben, ebenso der Suffix. Um eine Trennung zwischen Basisname und Suffix erkennen zu können, wird als Trennzeichen der Unterstrich verwendet.
Zum Bsp. die Konstante für den €-Umrechnungsfaktor im Zahlenformat double könnte heißen dblEURO_FAKTOR,
  • der Typ dblEURO_FAKTOR für double,
  • den Name der Konstante dblEURO_FAKTOR für und
  • der Suffix dblEURO_FAKTOR für den Umrechnungsfaktor.

Präfixe

Tabelle 2: Präfixe vor der Variable
Präfix Kürzel Beispiel
Gültigkeitsbereich und Lebensdauer

(kein)
intZaehler = eine lokal verfügbare Integer-Variable für das Zählen.
globally
(global gültig)
g gintFehler = eine global verfügbare Integer-Variable für auftretende Fehler und deren Behandlung.
modul
(Gültigkeit ist statisch auf die Datei, das Modul, beschränkt)
m mstfMuster = eine überall in der Datei Start.CPP, auch Modul genannt, statisch verfügbare Variable, welche ein Muster in Form einer Zeichenkette (String Fix) enthält.
Adressen und Zeiger
array
(Feld)
a caMuster[40] = die Variable vom Typ Zeichen, eingesetzt für das Muster, als ein Feld (a) mit einen Platz für maximal 40 Zeichen. Die Kombination "ca" wurde dann später durch "stf" abgelöst!
point
(Zeiger auf eine Variable vom Typ …)
p stfpVersion = Zeichenketten-Zeiger (p) auf eine Variable, die die Versionsnummer als reine Zeichenkette mit einer festen Länge (stf) enthält.

Es ist das 1 Zeichen, welches das nachfolgende Typkürzel um eine Ortsangabe versehen werden soll. Oder das vorangehende Typkürzel um die Modifikation des Typs erweitert. Zum Beispiel wenn es ein Zeiger auf diesen Datentyp bzw. ein Feld von diesem Datentyp ist. Das Präfix steht immer nach dem Datentyp.

Suffix

Tabelle 3: Suffixe für die ergänzende Typebezeichnung
Suffix Kürzel Beispiel
Anzahl Anz intZimmerAnz = Die Anzahl des verfügbaren Zimmer.
Anfang Anf intZaehlerAnf = Startwert des Zählers.
Ende End intZaehlerEnd = Endwert des Zählers.
Limit Lim fltGewinnLim = Gewinn-Limit bei dem die Firma in eine andere Rechtsform wechseln muss.
Maximum Max fltGewinnMax = Größter Gewinn pro Monat in diesem Jahr.
Minimum Min fltGewinnMin = Geringster Gewinn pro Monat in diesem Jahr.
Nachher Nch fltGewinnNch = Gewinn nach dem aktuellen Monat.
Vorher Vor fltGewinnVor = Gewinn nach dem vor dem aktuellen Monat.

Der Suffix (Anf, Anz, Max, Min, Vor, Nach, Ende, ...) kann das 2. Wort in der Benennung der Variable sein. Sie bietet zusätzliche Informationen zum Basisname. Zur Trennung vom Basisnamen wird wieder das erste Zeichen des Suffixes großgeschrieben . Zum Beispiel für die Anfangsarbeitszeit könnte die Variable dtmArbeitAnf sein. Sie haben analog wie die Präfixe i.d.R. eine Länge von 3 Zeichen und sie steht nach dem Namen der Variable.

Typbezeichnungen

Tabelle 1: Typebezeichnung für Konstanten und Variablen
Typ Kürzel Länge Wertebereich Beispiel
Basic-Variablen
boolean, logical
(Logisch)
bln, l 8 Bit 0=false
und 1=true
blnLichtAn bzw. lLichtAn
byte,
(8 Bit)
byt, b 8 Bit Unsigned: 0 … 255
bytDatenPrn bzw. bDatenPrn = Das Datenbyte für den Drucker an der Schnittstelle Prn für Printer.
character
(Zeichen)
chr, c 8 Bit Signed: -127 … 128
Unsigned: 0 … 255
'1', 'a', '~'
chrZeichen bzw. cZeichen
handle
(Zeiger auf eine Datei oder ein Objekt oder eine Instanz)
h 32 Bit Unsigned: 0 … 4.294.967.296 hSender = Nummer dew aufrufende Objekt bzw. Programms (Instanz), welches diese Funktion aufgerufen hat.
Ganzzahlen und Zähler
double word
(Doppelte Größe von Word)
dwd 32 Bit
4 Byte
Unsigned: 0 … 4.294.967.296
entspricht damit unsigned integer
dwdDateigroesze, welche diese bis 4GByte abdeckt.
short int, int16_t
(Ganzzahl)
i, i16 16 Bit
2 Byte
Signed: -32.767 … 32.768
Unsigned: 0 … 65.536
iJahre oder i16Jahre
int, int32_t
(Ganzzahl)
int
i32
32 Bit
4 Byte
Signed: -2.147.483.647 … 2.147.483.648
Unsigned: 0 … 4.294.967.296
intMeilen oder i32Meilen = Die Anzahl der Meilen als große Ganzzahl.
long long, int64_t
(Ganzzahl)
lng, i64 64 Bit
8 Byte
Signed: -9.223.372.036.854.775.807
… 9.223.372.036.854.775.808
Unsigned: 0 … 18.446.744.073.709.551.616
lngLichtjahrKm bzw. i64LichtjahrKm = Lichtjahr in km ausgedrückte, als super große Umrechnungsvariable.
quad word
(unsigened long integer)
qwd 64 Bit
4 Byte
Unsigned: 0 … 18.446.744.073.709.551.616 entspricht damit unsigned long integer wAdresse, welche diese bei MS-DOS mit einem RAM bis 64kByte abgedeckt hatte.
word
(unsigened short integer)
w 16 Bit
2 Byte
Unsigned: 0 … 65.536 entspricht damit unsigned short integer wAdresse, welche diese bei MS-DOS mit einem RAM bis 64kByte abgedeckt hatte.
Gebrochenen und Gleitkommazahlen
currency
(Festkommaabrechnungen für Geldbeträge)
cur 64 Bit -922.337.203.685.477,5808
…922.337.203.685.477,5807 und ergibt sich aus einer 8 Byte Ganzzahl, welche vor der Ausgabe durch 10.000 geteilt wird, was eine Festkommazahl von 15 Vor- und 4 Nachkommastellen ergibt.
curRettungsschirm = Ein Betrag der im Oktober 2011 1.000 1.000 Milliarden € betrug.
float
(Gleitkommazahl)
flt, f 32 Bit 1.5E-45 … 3.4E38
(7- 8 Stellen)
fltBetrag = Ein Betrag als Fließkommauzahl.
double
(Gleitkommazahl Doppelte Genauigkeit)
dbl 64 Bit 5.0E-324 … 1.7E308
(15-16 Stellen)
dblPi = Die Zahl Pi mit so vielen Stellen wie möglich.
long double
(Gleitkommazahl Doppelte Genauigkeit, Lang)
ldb 80 Bit 1.9E-4951 … 1.1E4932
(19-20 Stellen)
ldbAtome = Die Anzahl der Atome ist wirklich gewaltig.
Spezielle Felder und strukturierte Variablen
date time
(Datum Uhrzeit)
dtm Struktur mit x Variablen 1900-01-01, 00:00:00 … 2009-11-25, 16:23:95
dtmGeburt = Geburtstag
char name[n]
(Feste Zeichenkette auch "string fix" genannt.)
stf Feld mit n Byte Eine Zeichenkette mit fester Länge. stfName = Eine Variable für einen Namen, wo der reine Text, ohne Format, Farbe, etc., aufgenommen werden kann.
variant
(Variables, eigentlich unbekanntes Format)
var n Byte Speicherbereich varUebergabe = Bekannt ist, was für Inhalt übergeben wird, aber die Form und damit der Typ ist unbekannt.
Das Typenkürzel besteht aus einer normalerweise 1 oder 3 Zeichen langen, kleingeschriebenen Zeichenfolge, die den Datentyp angibt. Konstanten und Variablen benutzten die gleichen Typkürzel. In der Tabelle 1 wird die Bezeichnung der gängigen Datentypen ( /311/ S. 74-80: 3.4 Datentypen) für Konstanten und Variablen mit Datenbreiten und Wertebereichen aufgelistet.

Objekte

Tabelle 4: Grundlegende Objekte mit deren Typen
Typ Kürzel Beispiel
Formulare und Menüs
Formular frm frmStart ist das 1. Formular, welches beim Programmstart aufgerufen wird.
Menu mnu mnuHaupt ist das Hauptmenü.
MIDI Formular mdi mdiSong zeigt in einem Formular.
Steuerelemente
BitBottom bbm bbmOk als Kommandoknopf mit hinterlegter Bitmap zum Bestätigen
CheckBox cbx cbxFarben als Testbox mit den möglichen Farben.
ComboBox cbo cboDateitypen mit einer aufklappbaren Liste für die Auswahl eines Dateityps.
Command Button cmd cmdOk als Kommandoknopf zum Bestätigen
Database dbe dbeAufgabe ist die Datenbank für die Tabellen, welche notwendig sind um die Verwaltung der Aufgaben zu erfassen.
Database table dbt dbtPostionen ist eine Tabelle aus einer Datenbank, welche erstellt worden ist, um die Positionen in der Datenbank zu erfassen.
DirListBox dir dirAblage ist das Objekt, welches die Auswahl des Pfades für die Dateiablage anbietet.
DriveListBox drv drvDaten ist das Objekt, welches die Auswahl des Laufwerkes für die Dateiablage anbietet.
Edit
Edit
edt edtEingabe als Eingabefeld für Texteingabe und -korrektur, welche später mittels Konvertierung in jeden anderen Typ umgewandelt werden kann.
Formular
Form
frm frmMain das Hauptformular, welche die anderen Elemente als Startformular aufnimmt.
FileListBox fil filDaten ist das Objekt, welches die Dateiauswahl für die Datenablage anbietet.
Frame fra fraBitBang ist das Objekt, welches andere Objekte zum Thema BitBang aufnehmen und gruppieren soll.
Image img imgLogo, welches das Logo des Programms in der Infobox anzeigen soll.
Label
Label (Editkett)
lbl lblOperation zur Ausgabe der Operation als Text zur Ansicht.
Listbox lbx lbxAnhaenge zur Anzeige der geschriebenen Anhänge in Form einer Liste.
MaskeEdit
(Eingabemaske)
met metProtokoll (####cc#)zur Aufnahme des Logbuches mit 4 Ziffern, 3 Zeichen und einer abschließenden Ziffer im Namen, welches unter anderen später als *.TXT gespeichert werden kann.
Memo
(Textfeld)
mmo mmoProtokoll zur Aufnahme des Logbuches, welches unter anderen später als *.TXT gespeichert werden kann.
String str strBezeichnung zur Aufnahme der Artikelbezeichnung mit den Möglichkeiten der Schriftformatierung. Oft ist der grundlegende Datentyp dafür ANSI.
Textbox txt txtAnhang zur Aufnahme des Textes mittels einer Box, welches unter anderen später als *.TXT gespeichert werden kann.
Variablen vom Datentyp Objekt werden als 32−Bit−Adressen (4 Bytes) gespeichert, die auf Objekte in einer Anwendung verweisen. Der Basisname von Objekten wird wie bei den Variablen deutsch geschrieben. Einen Suffix gibt es in der Regel nicht. Wenn doch ist dieser auch wie bei den Variablen deutsch zu schreiben und an den Basisnamen gleich anzufügen.
Ihre Typbezeichnungen haben nur eine andere Bedeutung. Da es aber eine große Anzahl von Objekt- als Variablen−Typen gibt, gilt hier folgende allgemeine Regel bei der 3stelligen Typbezeichnung: Die Anfangsbuchstaben der
  • einzelnen Silben oder
  • einzelnen zusammengesetzten Substantive und bei Bedarf noch den letzten Buchstaben.
Ist man bzgl. der Typs unsicher kann man den allgemeinen Typ obj für Objekte verwenden! Wurde kein passender Typ gefunden, und der Entwickler kreiert eine eigenes Objekt ohne dafür schon einen Typbezeichnung zu haben, ist auch das Typkürzel UserDefinedTyp mit der Kurzbezeichnung udt üblich. Wurde sich dann auf eine Typbezeichnung geeinigt, kann mittels "Suchen und Ersetzen" dies ohne großen Aufwand geändert werden.
Nach Oben