Dienstag, 23 Feb, 2010
Grundlagen C
Hallo an diese Stelle möchte ich euch die Grundlagen zur Sprache C nahe bringen, damit euerer Spiele entwicklung nichts mehr im Weg steht.
Wie in jeden Buch oder Tutorial biginnen wir auch hier mit einem “Hello World” Programm, nur das wir uns jedes Vorgeplänkel sparen und sofort beginnen.
Also schaut euch mal dieses Programm an:
#include <stdio.h>
void main( ){
printf("Hey schaut mal ich lerne C!!!");
}
Ausgabe: Hey schaut mal ich lerne C!!!
So biginnen wir von Anfangan das Programm uns anzu schauen.
#include <stdio.h> Bindet sogenante Header Dateien ein. Was in unserem Fall bedeutet es erweitert den nativ C Befehlsumfang um weiter Befehle. Nun ihr werdet euch fragen warum müssen wir schon bei einem Hello World unsere C Befehle erweitern. stdio steht für standard input/otput und da wir etwas augeben möchten brauchen wir diesen Befehlsumfang. Ohne den input/output Befehlen könnten wir nichts Anzeigen.
void Main() Heist die Hauptfunktion die bei einem Programmstart aufgerufen wird. Doch was ist eigentlich so eine Funktion. Eine Funktion bündelt mehere Befehle zu eine Gruppe. Dazu gibt es aber später mehr.
printf ist der Eigentlich Ausgabebefehle, der unseren Text auf dem Bildschirm ausgibt.
Was gibt es noch bei dem Beispiel zu sehen? Nun ihr könnt sehen das Befehle imm mit einem “;” abgeschlossen werden (außer einige Ausnahmen wie z.B. das include) und das Funktionen mit den Gescheiften Klammern eingeramt werden.
Okay nun seit ihr ja aufgewärmt und wir können direkt weiter machen.
Variablen
Puh ich glaube die Überschrift kam jetzt überaschent, denn was sind zum Teufel Variablen. Variablen speichern zur Laufzeit eines Programmes Informationen und je nach Information gibt es Verschiedene Variablen, die alle unterschiedliche Datentypen speichern können. Hier mal die wichtigsten Datentypen von C:
- char - speichert ein Zeichen
- int - Eine ganze Zahl zwischen -32 768 .. 32 767
- long - Eine ganze Zahl zwischen -2 147 483 648 .. 2 147 483 647
- unsigned int - Eine ganze Zahl zwischen 0 .. 65 535
- float - Eine Kommazahle zwischen 1.17E-38 .. 3.4E38
- double - Eine Kommazahle zwischen 2.2E-308 .. 1.8E308
Nun wenn man die Auflistung so sieht könnte man zum Schluss kommen “Dann nehm ich doch immer den Datentyp der das meiste Speicher kann”. Das ist jedoch eine Schlechte Idee da jeder Datentayp einen gewisse Menge an Speicher belegt. Schauen wir uns also noch einmal die Tabelle unter dem Gesichtspunkt des Speicher bedarfes in Byte (zur erinnerung 8 Bit sind ein Byt) an.
- char - 1 Byte
- int - 2 Byte
- long - 4 Byte
- unsigned int - 2 Byte
- float - 4 Byte
- double - 8 Byte
Es ist also immer Sinnvoll genau den Datentyp zu benutzen den man Wirklich braucht um nicht Speicher zu verschwenden. Desweiteren ist zu beachten das je nach System ein Datentype wie z.B. auch 4Byte benötigen kann. Der Speicherbedarf der Datentypen ist also auch System abhängig.
Aber last uns noch mal genau den “char” anschauen, bevor wir unser neues Wissen anwenden. Was heist es eigentlich ein Zeichen zu Speichern? Nun im Grunde Speichert der Datentyp char kein zeichen sondern eine Zahl zwischen -128 und 128 (es gibt auch ein unsigned char der eine Zahl zwischen 0 und 255 speichern kann). Diese Zahl steht dann für ein Zeichen, der mittels des ASCI-Codes interpritiert wird (es gibt neben dem ASCI Zeichensatz auch noch andere, was aber den Rahmen an dieser Stelle sprengen würde). ASCI ist eine Tabelle die einer Zahl ein Zeichen zuordent schau wir uns mal die ASCI-Table an:
Dezimal Zeichen Beschreibung
0 Ctrl-@ Null prompt, Null character, Null, Nul
1 Ctrl-A Start of header, Kopfbeginn
2 Ctrl-B Start of text, Textstart
3 Ctrl-C End of text, Textende
4 Ctrl-D End of transmission, Ende der Übertragung
5 Ctrl-E Enquiry, Anfrage
6 Ctrl-F Acknowledge, Bestätigung
7 Ctrl-G BELL, Klingeln (Tonsignal), BEL bell
8 Ctrl-H GET Backspace, Rückschritt
9 Ctrl-I Horizontal tab, Horizontaltabulator, TCT HT Tab
10 Ctrl-J Line feed, Zeilenvorschub, new line
11 Ctrl-K Vertical tab, Vertikaltabulator
12 Ctrl-L Form feed, Seitenvorschub, new page
13 Ctrl-M Carriage return, Wagenrücklauf
14 Ctrl-N Shift out, Breitschrift
15 Ctrl-O Shift in, Enge Schrift
16 Ctrl-P Data link escape, Verbindungs-Steuerung
17 Ctrl-Q Device control 1, LLO, go, XON, xon, Gerätesteuerung 1
18 Ctrl-R Device control 2, c-R, c-r, Gerätesteuerung 2
19 Ctrl-S Device control 3, stop, XOFF, xoff, c-S, c-s, Gerätesteuerung 3
20 Ctrl-T Device control 4, DCL, c-T, c-t, Gerätesteuerung 4
21 Ctrl-U PPU, Negative acknowledge, Negative Bestätigung
22 Ctrl-V Synchronous idle, c-V, c-v, synchronisierter Leerlauf
23 Ctrl-W End of transmission blocks, Ende des Übertragungsblocks
24 Ctrl-X Cancel, SPE c-X, c-x, Abbruch
25 Ctrl-Y End of medium, SPD, c-Y, c-y, Ende des Mediums
26 Ctrl-Z Substitute, Suspend, c-Z, c-z, Ersetzen
27 Ctrl-[ Escape, c-[ c-{ m-, Steuerung, Strg
28 Ctrl-\ File Separator, Datei-Trenner
29 Ctrl-] Group Separator, Gruppen-Trenner
30 Ctrl-^ Record Separator, Datensatz-Trenner
31 Ctrl-_ Unit Separator, Einheiten-Trenner
Sonderzeichen und Ziffern:
Dezimal Zeichen Beschreibung
32 Leerzeichen
33 ! Ausrufungszeichen, exclamation mark, exclamation-point
34 " (Doppeltes) Anführungszeichen, straight-double-quotation-mark, (double) quotation mark, APL Quote
35 # Nummernzeichen, Doppelkreuz, Hash, number-sign she sharp crosshatch octothorpe
36 $ Dollarzeichen
37 % Prozentzeichen
38 & Kaufmännisches UND, Ampersand, Et-Zeichen, Und-Zeichen
39 ' Apostroph, Einfaches Anführungszeichen, quote tick prime
40 ( Runde Klammer auf
41 ) Runde Klammer zu
42 * Stern, Asterisk, star, wildcard, times, Hale
43 + Pluszeichen, Additions-Zeichen, And
44 , Komma
45 - Minuszeichen, Subtraktions-Zeichen, Negativ(-Zeichen), hyphen
46 . Punkt, period, dot, decimal, radix, full-stop
47 / Schrägstrich, Slash
48 0 Zahl 0
49 1 Zahl 1
50 2 Zahl 2
51 3 Zahl 3
52 4 Zahl 4
53 5 Zahl 5
54 6 Zahl 6
55 7 Zahl 7
56 8 Zahl 8
57 9 Zahl 9
58 : Doppelpunkt, Colon
59 ; Semikolon
60 < Kleiner-als-Zeichen
61 = Gleichheitszeichen, equals
62 > Grösser-als-Zeichen
63 ? Fragezeichen, UNL,
Großbuchstaben:
Dezimal Zeichen Beschreibung
64 @ Klammeraffe bzw. "at", commercial at sign
65 A Grossbuchstabe A
66 B Grossbuchstabe B
67 C Grossbuchstabe C
68 D Grossbuchstabe D
69 E Grossbuchstabe E
70 F Grossbuchstabe F
71 G Grossbuchstabe G
72 H Grossbuchstabe H
73 I Grossbuchstabe I
74 J Grossbuchstabe J
75 K Grossbuchstabe K
76 L Grossbuchstabe L
77 M Grossbuchstabe M
78 N Grossbuchstabe N
79 O Grossbuchstabe O
80 P Grossbuchstabe P
81 Q Grossbuchstabe Q
82 R Grossbuchstabe R
83 S Grossbuchstabe S
84 T Grossbuchstabe T
85 U Grossbuchstabe U
86 V Grossbuchstabe V
87 W Grossbuchstabe W
88 X Grossbuchstabe X
89 Y Grossbuchstabe Y
90 Z Grossbuchstabe Z
91 [ Eckige Klammer auf
92 \ Backslash, left-slash, bash
93 ] Eckige Klammer zu, right-bracket, close-square
94 ^ Caret, Hut, circumflex
95 _ Unterstrich, spacing underscore, low line, horizontal bar
Kleinbuchstaben:
Dezimal Zeichen Beschreibung
96 ` Back quote, Accent-grave, Backprime, spacing grave, accent, back apostrophe
97 a Kleinbuchstabe a, alpha
98 b Kleinbuchstabe b, bravo
99 c Kleinbuchstabe c, charlie
100 d Kleinbuchstabe d, delta
101 e Kleinbuchstabe e, echo
102 f Kleinbuchstabe f, foxtrot (fox)
103 g Kleinbuchstabe g, golf
104 h Kleinbuchstabe h, hotel
105 i Kleinbuchstabe i, india
106 j Kleinbuchstabe j, juliett
107 k Kleinbuchstabe k, kilo
108 l Kleinbuchstabe l, lima
109 m Kleinbuchstabe m, mike
110 n Kleinbuchstabe n, november
111 o Kleinbuchstabe o, oscar
112 p Kleinbuchstabe p, papa
113 q Kleinbuchstabe q, quebec
114 r Kleinbuchstabe r, romeo
115 s Kleinbuchstabe s, sierra
116 t Kleinbuchstabe t, tango
117 u Kleinbuchstabe u, uniform
118 v Kleinbuchstabe v, victor
119 w Kleinbuchstabe w, whiskey
120 x Kleinbuchstabe x, x-ray
121 y Kleinbuchstabe y, yankee
122 z Kleinbuchstabe z, zulu
123 { Geschweifte Klammer auf, left brace, curly bracket, begin, leftit
124 | Vertikale Linie, Logisches oder, vertical bar
125 } Geschweifte Klammer zu, right-brace, end, rightit
126 ~ Tilde, similar, tilde accent
127 Delete or rubout
So da wir jetzt auch gesehen haben wie Zeichen dargestellt/interpritiert werden und ihr die ASCI Tabelle auswendiggelernt habt, geht es jetzt zur Umsetzung.
So deklariert man eine Varaiable mit dazugehörigen Daten typ
// Variable Zahl mit Datentyp iniger
int zahl;
//Wie zuvor nur das gleich ein Wert zugewiesen wird
int zahl = 5;
Nun gibt es noch die Nöglichkeit eine Variable als Konstante fest zu legen, was einfach nur bedeutet das diese Varible zur Laufzeit nicht geändert wird.
//Zahl als Konstante
const int zahl = 5;
Und jetzt wenden wir das ganze auf unser Hello Worl an:
#include <stdio.h>
void main( ){
int zahl = 5;
float kommazahl = 4.7;
char zeichen = 'c';
printf("Zahl: %i , Kommazahl: %.2f , Zeichen: %c, Zeichen als Zahl dargestellt: %i", zahl, kommazahl, zeichen, zeichen);
}
Ausgabe: Zahl: 5 , Kommazahl: 4.70 , Zeichen: c, Zeichen als Zahl dargestellt: 99
Wir haben als erstes 3 Variablen zum Programmstart angelegt (dies muss bei C immer zum Programmstart erfolgen). Eine Zahl, eine Kommazahl und eine Zeichen Variable. Dann geben wir die Variablen mit Printf aus. Stört euch jetzt bitte nicht am Printf, das wird zu einem späteren Zeitpunkt erklärt. Konzentriert euch auf die Ausgabe die sowohl das “c” als auch die dazugehörige Zahl “99” zeigt.
Erweiterte Datentypen
Im vorangegangenen Punkt habt ihr Variablen und einfache Datentypen kennen gelern. Nun ist es aber auch möglich erweiterte Daten Typen zu nutzen. Was genau Erweiterte Datentypen sind schauen wir uns jetzt an.