Entdecken Sie die faszinierende Welt der C-Programmierung, von den grundlegenden Datentypen bis hin zu komplexen Schleifenstrukturen. Dieses Buch ist Ihr Schlüssel, um die verborgenen Pfade der Softwareentwicklung zu beschreiten und die Macht der Algorithmen zu entfesseln. Tauchen Sie ein in die Kernkonzepte wie Variablen Deklaration, Operatoren und Anweisungsblöcke, die das Fundament jeder C-Anwendung bilden. Lernen Sie, wie Sie mit `printf()` und `scanf()` die Kommunikation zwischen Programm und Benutzer gestalten, und beherrschen Sie die Kunst der formatierten Ausgabe. Erforschen Sie die verschiedenen Datentypen – `int`, `float`, `char` – und verstehen Sie deren Bedeutung für die effiziente Speicherverwaltung. Entschlüsseln Sie die Geheimnisse der Escape-Sequenzen und ANSI-Escape-Sequenzen, um Ihre Ausgaben zu verfeinern und visuell ansprechend zu gestalten. Wagen Sie sich in die Welt der Kontrollstrukturen vor, von einseitigen und zweiseitigen `if`-Anweisungen bis hin zu den vielseitigen `switch`-Konstruktionen. Meistern Sie die logischen Operatoren `&&` und `||`, um komplexe Bedingungen zu formulieren und Ihr Programm intelligent zu steuern. Programmieren Sie dynamische Abläufe mit `for`, `while` und `do`-Schleifen, und lernen Sie, wie Sie diese effektiv einsetzen, um repetitive Aufgaben zu automatisieren. Erweitern Sie Ihr Wissen um Funktionen, Funktionsprototypen und Wertrückgaben, um modularen und wiederverwendbaren Code zu schreiben. Entdecken Sie die Bedeutung von Header-Dateien wie `conio.h`, `math.h` und `ctype.h` und nutzen Sie deren Funktionen, um Ihre Programme zu bereichern. Dieses Buch ist Ihr unverzichtbarer Begleiter auf dem Weg zum C-Programmiermeister, gespickt mit praktischen Beispielen und leicht verständlichen Erklärungen, die Ihnen helfen, die Herausforderungen der Programmierung zu meistern und Ihre kreativen Visionen in die Realität umzusetzen. Erleben Sie, wie aus abstrakten Konzepten konkrete Anwendungen entstehen und wie Sie Ihre neu gewonnenen Fähigkeiten nutzen können, um die digitale Welt von morgen zu gestalten. Lassen Sie sich von der Eleganz und Effizienz der C-Programmierung begeistern und werden Sie Teil einer globalen Community von Entwicklern, die die Zukunft der Technologie gestalten. Programmierung, Softwareentwicklung, Algorithmen, Datentypen, Schleifen, Funktionen, Header-Dateien, Kontrollstrukturen, C-Programmierung lernen, Software entwickeln, C-Tutorial, Programmieren für Anfänger, Computer, Informatik, Technik.
Zusammenfassung C (Kapitel l und 2): | |
#include <Dateiname> | Präprozessordirektive zur Einbindung einer Informationsdatei, die es ermöglicht, bestimmte Funktionen dieser Datei im Pro-gramm zu verwenden, z. B. printf() und scanf (). |
main() | Beginn des Hauptprogramms. |
return <Wert> | Gibt einen Wert zurück (ANSI-C; ist für die Funktion der Datentyp void vorgesehen, so kann auf return verzichtet werden). |
{ und } | Begrenzungen eines Programmblocks. |
; | Abschließendes Zeichen für Deklarations-, Definitions- und Anweisungszeilen. |
printf() | Funktion zur Ausgabe von Text und Variablen (standardmäßig am Bildschirm). |
scanf() | Funktion zur Eingabe von Variablen (standardmäßig über Tastatur) |
int, float | Datentypen für Ganzzahlen (int) und Fließkommazahlen (float). |
%i, %f,... | Formatelemente für printf() und scanf(). |
\n, \t, \a,... | Escape-Sequenzen für printf(). |
\x1B... | Einleitung (ESC) für eine ANSI-Escape-Sequenz die z.B. in printf() Verwendung findet (Achtung: device=c:\dos\ansi.sys muß in der config.sys enthalten sein!). |
= | Zuweisungsoperator |
+, -,*, / | Arithmetische Operatoren |
Formatelemente in C und Turbo-C (in scanf() und printf() verwendbar): | |
Element: | Bedeutung: |
%d | vorzeichenbehaftete Ganzzahlen (dezimal) |
%i | vorzeichenbehaftete Ganzzahlen (dezimal) |
%u | vorzeichenlose Ganzzahlen (dezimal) |
%o | vorzeichenlose Ganzzahlen (oktal) |
%x | vorzeichenlose Ganzzahlen (hexadezimal) |
%f | Fließkommazahl %e Fließkomroazahl (exponentiell) |
%c | ein Zeichen |
%s | eine Zeichenkette |
Escape-Sequenzen in C (in printf() verwendbar): | |
Sequenz: | Wirkung: |
\n | Cursor an den Anfang der folgenden Zeile |
\t | Cursor an die nächste Tabulatorposition |
\r | Cursor an den Anfang der aktuellen Zeile |
\b | Cursor ein Zeichen zurück |
\a | erzeugt einen Piepton |
\′ | gibt das einfache Hochkomma aus |
\" | gibt das doppelte Hochkomma aus |
\? | gibt das Fragezeichen aus |
Datentyp, Größe und Wertebereich (signed) | ||
Typ | Wertebereich | Bits |
char | -128 bis 127 (Buchstaben und kleine Zahlen) | 8 |
int(short) | -327698 bis 32767 (Ganzzahlen) | 16 |
long | -2147483648 bis 2147483647 (Ganzzahlen) | 32 |
float | 3.4*10-38bis3.4*1038 (Fließkommazahlen) | 32 |
double | 1,7*10-308 bis 1,7*10308(Fließkomma mit erhöhter Genauigkeit) | 64 |
long double | 3.4*10-4932bis3.4*104932 | 80 |
char | Datentyp für Buchstaben und kleine Zahlen. |
int | Datentyp für Ganzzahlen. |
float, double | Datentypen für Fließkommazahlen. |
<Datentyp> <Name> | Deklaration einer Variablen durch Typangabe. |
int ganzzahl; | ... Variable ganzzahl als ganzzahliger Datentyp |
float kommazahl; | ... Variable kommazahl als Fließkommatyp |
int zahl1, zahl2; | ... zahl1 und zahl2 vom ganzzahligen Datentyp |
float pi =3.14; | ... Variable pi als Fließkommatyp mit Wert |
Anweisungsblöcke: | |
{ | |
int summand;... | Variablen können in jedem Anweisungsblock deklariert |
{ | werden. Die Gültigkeit beschränkt sich auf den aktuellen |
int summand;... | Block. Beim Verlassen des Blockes wird der Wert der |
} | Variablen "vergessen". |
} | |
typedef z. B.: typedef int zahl; | Für die Definition eigener Datentypen. ... erzeugt den ganzzahligen Datentyp zahl |
% | Modulo-Operator (ermittelt den ganzzahligen Rest einer ganz-zahligen Division). |
+=, -=, -=,* =, /=, %= | Verkürzende Schreibweise für Ausdrücke. (z. B.: i+= l entspricht i = i+l) |
zahll = zahl2 = 20 | Verkettete Zuweisung (zahll und zahl2 erhalten den Wert 20). |
(<Datentyp>) zahl | Cast-Operator. Erzwingt die Umwandlung der Variablen zahl in den durch Datentyp angegebenen Datentyp. |
Zusammenfassung (Kapitel 4): | |
conio.h | Header-Datei für Funktionen der Ein- und Ausgabe via Tastatur und Bildschirm (console input/output). |
clrscr() | Funktion zum Bildschirmlöschen (benötigt conio. h).Alternativ mit printf(x1B[2J)"), wenn die config. sys angepaßt wurde. |
getch() | Liest ein Zeichen von der Tastatur ohne Anzeige am Bildschirm (benötigt conio.h) |
z.B.: getch(); | ... hält das Programm an und wartet auf einen Tastendruck |
taste = getch(); | ... Übergibt den Tastenwert an die Char-Variable taste |
Zusammenfassung (Kapitel 5): | |
<, <=, >. >= | Vergleichsoperatoren (aus der Mathematik) |
== | Vergleichsoperator (Gleichheit) |
!= | Vergleichsoperator (Ungleichheit) |
&& | logischer UND-Operator |
|| | logischer ODER-Operator (zweimal Alt+ 124 bzw. AltGr+ |) |
if (Bedingung) Anweisung; | Einseitige Auswahl: |
oder | Einleitung durch "if"; die Bedingung muß in Klammem stehen; |
if (Bedingung) | bei mehr als einer Anweisung muß mit den geschweiften Klam- |
{ | mern ein Programmblock gebildet werden. |
Anweisung (en);... | |
} | |
if (Bedingung) Anweisung; | Zweiseitige Auswahl: |
else Anweisung; | wie oben, jedoch mit einem "else"-Teil. Mehrere Anweisungen |
oder | müssen geklammert werden. Der else-Teil ist optional (kann |
if (Bedingung) | weggelassen werden). Jede Anweisung wird mit einem Semi- |
{ | kolon abgeschlossen, auch die letzte Anweisung vor else (l). |
Anweisung (en);... | |
} | |
else | |
{ | |
Anweisung (en);... | |
} | |
switch (Ausdruck/Variable) | Mehrseitige Auswahl: |
{ | Dem Schlüsselwort "switch" folgt ein Ausdruck bzw. eine |
case Wert1: Anweisung; | Variable (in Klammem). Der Inhalt wird verglichen mit dem |
break; | hinter "case" stehenden Wen (Wert muß eine Konstante sein). |
case Wert2: Anweisung; | Hinter dem Doppelpunkt folgen dann eine oder mehrere An |
break; | weisungen (in {}!), die mit break beendet werden. Der gesamte, |
... | nach switch folgende Block, muß in Klammem ({}) stehen. |
default: Anweisung; | Dem Schlüsselwort "default" folgen die Anweisungen, die |
} | ausgeführt werden sollen, wenn keiner der Vergleiche zu |
treffend war. | |
break | Springt aus dem aktuellen Block in den nächst übergeordneten |
Block (Verwendung insbesondere für switch). | |
sqrt() | Berechnet die Quadratwurzel (benötigt math. h). |
getche() | Liest ein Zeichen von der Tastatur, wie getch. (), und zeigt es am Bildschirm an (benötigt conio. h). |
toupper() | Wandelt einen Kleinbuchstaben in einen Großbuchstaben um (benötigt ctype-h). |
exit() | Führt zum Programmabbruch (benötigt stdlib. h/process. h). |
Zusammenfassung (Kapitel 6): | |
<Datentyp> <Funktionsname> () { Anweisung (en); return (wert) } | Deklaration einer Funktion, der keine Werte übergeben werden. Datentyp ist der Rückgabetyp. Der Funktionswert (hier: wert) muß diesem Datentyp entsprechen. |
<Datentyp> <Funktionsname> (); | Definition eines Funktionsprototyps. Wird nach den Präprozessordirektiven notiert, enthält die Kopfzeile der Funktionsdeklaration (siehe oben) und wird mit einem Semikolon (!) abgeschlossen. |
\b | escape-Sequenz, die den Textcursor um eine Stelle nach links bewegt (ausgehen von der aktuellen Position). |
return (wert) | Wertrückgabe einer Funktion. Dabei kann Wert... |
z. B.: return (ergebnis) return (x+ y) return (berechnung()) | ... der Inhalt einer Variablen sein. ... das Ergebnis eines Ausdrucks sein. ... der Rückgabewert einer anderen Funktion sein. |
Zusammenfassung (Kapitel 7): | |
for (Startwert; Bedingung; Veränderung) | for-Schleife (statische Schleife): |
{ | Der Schleifenkopf besteht aus dem reservier- |
Anweisung (en); | ten Wort und einem Ausdruck in runden |
} | Klammem. Die einzelnen Teile des Ausdrucks |
sind mit Semikola zu trennen: | |
z. B.: | Startwert: Anfangswert (Schleifenvariable) |
for (i=1; i<=100;i++){...} | Bedingung: Eintrittsbedingung (Ungleichung) |
for (j=100; j>=0; j--){...} | Veränderung: Beeinflussung der Variablen |
Es können auch mehrere Startwerte, Bedin- | |
for (k=n, i=1; k<=m; s=s+i+k, k++, i++) {...} | gungen und Veränderungen aufgeführt wer |
den. Außerdem sind auch Anweisungen im | |
Veränderungsteil zulässig (mehrere Angaben | |
sind durch Kommata zu trennen). | |
while (Bedingung) | While-Schleife (A-Schleife): |
{ | Der Schleifenkopf besteht aus dem reservier- |
Anweisung (en); | ten Wort while und einer Bedingung, die in |
} | runden Klammem steht. Es wird vor Eintritt |
in die Schleife geprüft, ob die Bedingung zu | |
z. B.: | trifft. Innerhalb der Schleife muß die Variable, |
while (i<100) | die die Schleife steuert, geeignet beeinflußt |
{ | werden, damit die Schleife auch wieder ver- |
.... | lassen werden kann. |
i++; | |
} | |
do | Do-Schleife (E-Schleife): |
{ | Die Schleife wird mit den reservierten Worten |
Anweisung (en); | do und while gebildet. Hinter while steht die |
} | Abbruchbedingung in runden Klammem. Die |
while (Bedingung); | Schleife muß mit einem Semikolon hinter der |
Abbruchbedingung abgeschlossen werden | |
und wird mindestens einmal durchlaufen. | |
++ und -- | Inkrement- bzw. Dekrementoperator: |
kann nur auf ganzzahlige Datentypen ange- | |
z. B.: i++, j-,++ k, -m | wendet werden und vor (Präfix) oder nach |
(Postfix) dem Variablennamen stehen. Es wird | |
jeweils um l erhöht (Inkrementierung) bzw. | |
erniedrigt (Dekrementierung). | |
putch() | Ausgabe eines Zeichens auf dem Standard |
z. B.: putch (zeichen); | ausgabegerät (putch = put character). |
break | Der aktuelle Programmblock wird verlassen |
(siehe switch-Konstruktion). | |
continue | Die Anweisungen des Schleifenrumpfes, die |
nach continue stehen, werden übersprungen | |
und die Schleife an ihrem Beginn fortgesetzt |
Häufig gestellte Fragen
Was sind Präprozessordirektiven in C und wie verwende ich #include?
Die Präprozessordirektive #include <Dateiname>
wird verwendet, um eine Informationsdatei einzubinden. Dies ermöglicht es, bestimmte Funktionen dieser Datei im Programm zu verwenden, z. B. printf()
und scanf()
.
Was bedeuten main() und return <Wert> in einem C-Programm?
main()
markiert den Beginn des Hauptprogramms. return <Wert>
gibt einen Wert zurück (gemäß ANSI-C; bei Funktionen vom Typ void
kann auf return
verzichtet werden).
Wie werden Programmblöcke in C begrenzt und was ist die Funktion des Semikolons?
Programmblöcke werden durch {
und }
begrenzt. Das Semikolon ;
schließt Deklarations-, Definitions- und Anweisungszeilen ab.
Was sind printf() und scanf() und wie werden sie verwendet?
printf()
ist eine Funktion zur Ausgabe von Text und Variablen (standardmäßig am Bildschirm). scanf()
ist eine Funktion zur Eingabe von Variablen (standardmäßig über die Tastatur).
Welche Datentypen gibt es in C für Ganzzahlen und Fließkommazahlen und wie werden sie deklariert?
Es gibt die Datentypen int
für Ganzzahlen und float
für Fließkommazahlen. Variablen werden durch Angabe des Datentyps gefolgt vom Namen deklariert (z.B. int ganzzahl;
).
Was sind Formatelemente und Escape-Sequenzen in C und wozu dienen sie?
Formatelemente (z.B. %i
, %f
) werden in printf()
und scanf()
verwendet, um den Datentyp der auszugebenden oder einzulesenden Variablen anzugeben. Escape-Sequenzen (z.B. \n
, \t
) werden in printf()
verwendet, um spezielle Zeichen oder Formatierungen auszugeben.
Was bewirkt \x1B... in printf() und welche Voraussetzungen müssen erfüllt sein?
\x1B...
leitet eine ANSI-Escape-Sequenz ein, die z.B. in printf()
verwendet wird, um Textattribute wie Farbe zu ändern. Damit dies funktioniert, muss device=c:\dos\ansi.sys
in der config.sys
enthalten sein.
Was sind Zuweisungsoperatoren und arithmetische Operatoren in C?
Der Zuweisungsoperator ist =
. Arithmetische Operatoren sind +
(Addition), -
(Subtraktion), *
(Multiplikation) und /
(Division).
Welche Formatelemente gibt es in C für printf() und scanf() und was bedeuten sie?
%d
: Vorzeichenbehaftete Ganzzahlen (dezimal)%i
: Vorzeichenbehaftete Ganzzahlen (dezimal)%u
: Vorzeichenlose Ganzzahlen (dezimal)%o
: Vorzeichenlose Ganzzahlen (oktal)%x
: Vorzeichenlose Ganzzahlen (hexadezimal)%f
: Fließkommazahl%e
: Fließkommazahl (exponentiell)%c
: Ein Zeichen%s
: Eine Zeichenkette
Welche Escape-Sequenzen gibt es in C und was bewirken sie?
\n
: Cursor an den Anfang der folgenden Zeile\t
: Cursor an die nächste Tabulatorposition\r
: Cursor an den Anfang der aktuellen Zeile\b
: Cursor ein Zeichen zurück\a
: Erzeugt einen Piepton\'
: Gibt das einfache Hochkomma aus\"
: Gibt das doppelte Hochkomma aus\?
: Gibt das Fragezeichen aus
Welche Datentypen gibt es in C und wie groß sind ihre Wertebereiche?
char
: -128 bis 127 (8 Bit)int
(short
): -32768 bis 32767 (16 Bit)long
: -2147483648 bis 2147483647 (32 Bit)float
: 3.4*10-38 bis 3.4*1038 (32 Bit)double
: 1.7*10-308 bis 1.7*10308 (64 Bit)long double
: 3.4*10-4932 bis 3.4*104932 (80 Bit)
Was bewirkt typedef in C?
typedef
wird zur Definition eigener Datentypen verwendet, z.B. typedef int zahl;
erzeugt den ganzzahligen Datentyp zahl
.
Was ist der Modulo-Operator (%) in C und was macht er?
Der Modulo-Operator %
ermittelt den ganzzahligen Rest einer ganzzahligen Division.
Was bedeuten die verkürzenden Schreibweisen +=, -=, *=, /=, %= in C?
Dies sind verkürzende Schreibweisen für Ausdrücke, z.B. i += 1
entspricht i = i + 1
.
Was bewirkt der Cast-Operator in C und wie wird er verwendet?
Der Cast-Operator (<Datentyp>) zahl
erzwingt die Umwandlung der Variablen zahl
in den durch <Datentyp>
angegebenen Datentyp.
Was ist conio.h und welche Funktionen bietet sie?
conio.h
ist eine Header-Datei für Funktionen der Ein- und Ausgabe via Tastatur und Bildschirm (console input/output).
Was macht die Funktion clrscr() und welche Alternative gibt es?
clrscr()
löscht den Bildschirm (benötigt conio.h
). Alternativ kann printf("\x1B[2J")
verwendet werden, wenn die config.sys
entsprechend angepasst wurde.
Was macht die Funktion getch()?
getch()
liest ein Zeichen von der Tastatur, ohne es am Bildschirm anzuzeigen (benötigt conio.h
).
Welche Vergleichsoperatoren gibt es in C?
Die Vergleichsoperatoren sind: <
(kleiner als), <=
(kleiner oder gleich), >
(größer als), >=
(größer oder gleich), ==
(gleich), !=
(ungleich).
Was sind logische Operatoren in C?
Die logischen Operatoren sind: &&
(logisches UND) und ||
(logisches ODER).
Wie funktioniert die if-Anweisung in C?
Die if
-Anweisung ermöglicht einseitige und zweiseitige Auswahlentscheidungen basierend auf einer Bedingung. Bei mehr als einer Anweisung muss ein Programmblock mit geschweiften Klammern gebildet werden. Es gibt auch if-else Anweisungen.
Wie funktioniert die switch-Anweisung in C?
Die switch
-Anweisung ermöglicht eine mehrseitige Auswahlentscheidung. Der Wert einer Variablen oder eines Ausdrucks wird mit Konstanten in case
-Blöcken verglichen. Der default
-Block wird ausgeführt, wenn keiner der case
-Werte zutrifft. Jeder case
-Block sollte mit break
beendet werden.
Was bewirkt break in C?
break
springt aus dem aktuellen Block in den nächst übergeordneten Block (wird insbesondere in der switch
-Anweisung verwendet).
Was macht die Funktion sqrt()?
sqrt()
berechnet die Quadratwurzel (benötigt math.h
).
Was machen die Funktionen getche(), toupper() und exit()?
getche()
: Liest ein Zeichen von der Tastatur und zeigt es am Bildschirm an (benötigtconio.h
).toupper()
: Wandelt einen Kleinbuchstaben in einen Großbuchstaben um (benötigtctype.h
).exit()
: Führt zum Programmabbruch (benötigtstdlib.h
/process.h
).
Wie deklariert man eine Funktion in C?
Eine Funktion wird wie folgt deklariert: <Datentyp> <Funktionsname> () { Anweisung(en); return (wert); }
. Vor der Verwendung einer Funktion muss ein Funktionsprototyp definiert werden: <Datentyp> <Funktionsname> ();
Was macht die escape-Sequenz \b?
Die escape
-Sequenz \b
bewegt den Textcursor um eine Stelle nach links (ausgehend von der aktuellen Position).
Wie funktioniert die Wertrückgabe einer Funktion?
Die Wertrückgabe erfolgt mit return (wert)
, wobei wert
der Inhalt einer Variablen, das Ergebnis eines Ausdrucks oder der Rückgabewert einer anderen Funktion sein kann.
Wie funktionieren for-, while- und do-Schleifen in C?
for
-Schleife: Statische Schleife mit Startwert, Bedingung und Veränderung.while
-Schleife: A-Schleife, bei der vor Eintritt in die Schleife geprüft wird, ob die Bedingung zutrifft.do
-Schleife: E-Schleife, die mindestens einmal durchlaufen wird und bei der die Abbruchbedingung am Ende geprüft wird.
Was sind Inkrement- und Dekrementoperatoren?
++
und --
sind Inkrement- bzw. Dekrementoperatoren, die den Wert einer ganzzahligen Variablen um 1 erhöhen bzw. erniedrigen (z.B. i++
, --j
).
Was macht die Funktion putch()?
putch()
gibt ein Zeichen auf dem Standardausgabegerät aus (putch = put character).
Was bewirkt continue in C?
continue
überspringt die Anweisungen des Schleifenrumpfes, die nach continue
stehen, und setzt die Schleife an ihrem Beginn fort.
- Quote paper
- Ingo Tetzlaff (Author), 1998, C-Programmierung, Munich, GRIN Verlag, https://www.grin.com/document/96293