![Page 1: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/1.jpg)
Programmier-sprache
C
![Page 2: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/2.jpg)
Das einfachste Programm:
![Page 3: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/3.jpg)
#include "stdafx.h"
#include <stdio.h>
int main(){
return 0; } Hauptprogramm
Rückgabewert: intd.h. eine ganze Zahl
Kopf
Rumpf
Begrenzer (Block)
Anweisungen, hier nur eine. Diese muss mit Semikolon beendet werden.
return 0 gibt die Zahl 0 zurück.
![Page 4: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/4.jpg)
#include "stdafx.h"
#include <stdio.h>
int main(){
return 0;}
Kopiert den Inhalt der Dateien (Textdatein) stdafx.h und stdio.h an diese Stellen in diese Datei!
Ein- und Ausgabefunktionen wie z.B. printf benötigen dies.Dies wird später noch genauer erklärt.
Diese mit #include eingefügten Dateien werden aus Platzgründen oft in den Folien dieser Powerpoint-Präsentationen (aber nicht bei realen Programmen !!) weggelassen.
Was ist der Unterschied zwischen " " und < > ?
![Page 5: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/5.jpg)
Wenn der Name in < > eingeschlossen wird, bedeutet das, daß der Compiler den sogenannten Standard-Include-Pfad benutzen soll, um die Datei zu finden. Dort stehen die sogenannten Standard-Header-Files (Systemdateien), wie z.B. <stdio.h>, die zu der Entwicklungsumgebung von MS VC++ gehören und mit dem Programmpacket ausgeliefert wurden.
![Page 6: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/6.jpg)
Eselsbrücke:
Die Klammern < > kann man sich als der obere Teil bzw. untere Teil eines stilisierten S (wie Systemdateien) vorstellen:
![Page 7: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/7.jpg)
Wenn der Name in " " eingeschlossen wird, bedeutet das, dass der Compiler im aktuellen Verzeichnis (dort wo sich das Projekt befindet) suchen soll, um die Datei zu finden. Diese Datei wird "normalerweise" vom Programmierer selbst erstellt. Allerdings wird "stdafx.h" nicht vom Programmierer erstellt, sondern diese Datei wird beim Erstellen eines Programms (Projekt), für das jeweilige Projekt spezifisch vom MS VC++ Compiler erzeugt.
Bitte nachprüfen: Suchen Sie diese Dateien auf der Festplatte!
![Page 8: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/8.jpg)
Wichtige Bemerkung:
![Page 9: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/9.jpg)
Das obige Programm entspricht der sogenannten ANSI-Norm. Dies ist eine Norm, in der festgelegt wird, nach welchen Regeln ein C-Programm aufgebaut sein muss.
![Page 10: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/10.jpg)
Weitere Bemerkungen:
![Page 11: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/11.jpg)
int main(void){
return 0;
}
Keine Angst:Die Begriffe "Funktion", "return", usw. werden später noch genauer erklärt. (dies war nur eine kurze Vorabinformation)
Der Microsoft Visual C++ 6.0 Compiler arbeitet nicht 100% nach dieser ANSI-Norm.
Um deutlich zu machen, dass in den Klammern kein sogenannter Parameter stehen soll, kann man dies durch das englische Wort void bewerkstelligen.
Wenn aus Platzgründen nötig, wird in den folgenden Präsentationen die Anweisung return 0 weggelassen.
![Page 12: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/12.jpg)
Ein reines Ausgabe - Programm:
int main(){ printf("Guten \n Morgen"); return 0;}
Reservierte Worte; sollen nicht vom Programmierer für Variablennamen
vergeben werden
Zeilenvorschub
Der auf dem Bildschirm ausgegebene Text ist eine Zeichenkette. Diese steht immer zwischen Anführungszeichen. Auf dem Bildschirm erscheint also:GutenMorgen
Anweisungen einrücken
Semikolon am Ende einer jeden Anweisung
![Page 13: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/13.jpg)
In einer Zeichenkette, die durch printf ausgegeben wird, können sich aber nicht nur sichtbare Zeichen befinden, sondern auch sogenannte Escape-Sequenzen, die bestimmte Aktionen bewirken. Escape-Sequenzen sind Zeichenfolgen, die mit einem Schrägstrich beginnen, auf den eine oder mehrere Zeichen folgen.
![Page 14: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/14.jpg)
\n führt Zeilenvorschub durch (new line)\t setzt Horizontaltabulator\v setzt Vertikaltabulator\b geht Mit dem Kursor ein Zeichen zurück (backspace)\r führt Wagenrücklauf durch (carriage return)\f führt Seitenvorschub durch (form feed)\a löst Klingelzeichen aus (Alarm)\' Hochkomma\" Anführungszeichen\\ umgekehrter Schrägstrich (backslash)\ddd ASCII-Zeichen in Oktalnotation (d ist eine Okalziffer)\xdd ASCII-Zeichen in Hexadezimalnotation (d ist eine Hexadezimalziffer)
![Page 15: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/15.jpg)
Was bewirkt das folgende Programm ?Bitte ASCII-Tabelle benutzen !(näheres zur ASCII-Tabelle später)
#include "stdafx.h"
#include <stdio.h>
int main(){
printf("\x41\x42\x43\a");
return 0;
}
![Page 16: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/16.jpg)
Es wird auf dem Bildschirm ABC ausgegeben und ein Alarm (Ton) auf dem Lautsprecher erzeugt.
![Page 17: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/17.jpg)
Nochmals eine Bemerkung zu include
![Page 18: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/18.jpg)
#include "stdafx.h"#include <stdio.h>
int main(){ printf("Guten \n Morgen"); return 0;}
Die Funktion printf verlangt, daß sie vorher deklariert wird. In dieser Deklaration befinden sich Informationen wie z.B. der Name und die Anzahl der Parameter dieser Funktion. Diese Deklaration befindet sich in der Datei stdio.h, die mit #include <stdio.h> eingefügt wird. Bitte den Inhalt dieser Datei anschauen bzw.dort nach printf suchen.
![Page 19: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/19.jpg)
Ein Ein /Ausgabe - Programm:
int main (){
int z; printf("Bitte ganze Zahl eingeben \n"); scanf("%d", &z); z = z * z; printf("Das Quadrat ist: %d", z); return 0;}
Deklarationsteil = Zutaten
Anweisungsteil = Zubereitung
Einzelne Anweisungen
Datentyp
Variablenname
Semikolon am Ende einer Anweisung
Variable
Eingabe
![Page 20: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/20.jpg)
Elemente des
Rumpfs:
![Page 21: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/21.jpg)
int main (){ int z; int a; int b,c,d; ...
}
Variable
Datentyp: int int ist Abkürzung für integer
(bedeutet ganze Zahl)
Der Variablenname soll selbstsprechend bzw. selbsterklärend sein. Also sollte man z.B. eine Variable, die die Breite eines Rechtecks speichert auch breite nennen und NICHT wie hier (aus Platzgründen) nur mit einem Buchstaben benennen !
mehrere Variablen können auch durch Kommata getrennt werden.
Aber am Ende muss ein Semikolon kommen.
Der Datentyp gibt an, welche Werte (z.B. ganze Zahlen) eine Variable annehmen kann.
![Page 22: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/22.jpg)
int main (){ int z=123; int a; int b,c,d; ...
}
z wird mit dem Wert 123 initialisiert.
Eine Variable kann deklariert und gleichzeitig auch initialisiert (vorbelegt) werden
![Page 23: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/23.jpg)
Eine Variable kann während des Programmlaufs unterschiedliche Werte annehmen.
Eine Variable muss vor ihrer Verwendung im Deklarationsteil vereinbart werden.Eine Variable hat einen Namen und einen Datentyp.
Variable sind Daten mit folgenden Eigenschaften:
![Page 24: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/24.jpg)
Unter einer Variablen kann man sich einen Behälter vorstellen.In diesem Behälter wird ein Wert gespeichert (z.B. eine bestimmte Menge Flüssigkeit). Diese Menge bleibt solange konstant in diesem Behälter, solange sie nicht verändert wird. Diese Eigenschaft nennt man speichern. Es "verdunstet" deshalb auch nichts.
![Page 25: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/25.jpg)
Bitte folgende Regel einhalten:Anfangsbuchstabe eines Variablennamens immer klein schreiben. Dies ist dem Compiler zwar egal, doch an diese Regel halten sich alle Programmierer.
![Page 26: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/26.jpg)
Bitte folgende Regel einhalten:In einem Variablennamen darf kein Umlaut vorkommen! Also: Statt des Variablennamens zähler lieber zaehler verwenden. Dies ist dem Compiler nicht egal. (zähler ergibt eine Fehlermeldung).
![Page 27: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/27.jpg)
Die Anweisungen des letzten Ein/Ausgabeprogramms hier nochmals kurz erklärt:
![Page 28: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/28.jpg)
printf("Bitte ganze Zahl eingeben \n");
scanf("%d", &z);
z = z * z;
printf("Das Quadrat ist: %d", z);
Platzhalter mit Formatanweisung: gibt an, in welcher Form (ganze Zahl, Fließkommazahl
oder Zeichen) der eingegebene Wert abgespeichert wird, bzw. ausgegeben wird.
Bevor der Text zwischen den Anführungszeichen ausgegeben wird, wird der Platzhalter %d durch den Wert der Variablen z ersetzt.
Zuweisungsoperation (Näheres in der übernächsten Folie)
![Page 29: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/29.jpg)
printf("Das Quadrat ist: z");
Das Quadrat ist: z
Frage:Was gibt die folgende Anweisung auf dem Bildschirm aus ?
Der Compiler erkennt das z nicht als eine Variable,
sondern als einen “normalen“ Buchstaben !
![Page 30: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/30.jpg)
printf("Bitte ganze Zahl eingeben \n");scanf("%d", &z);z = z * z;printf("Das Quadrat ist: %d", z);
%d %c %f
ganze Zahl ZeichenFließkommazahl
d wie dezimalc wie charf wie Fließkomma
Platzhalter mit Formatanweisung: gibt an, in welcher Form (ganze Zahl, Fließkommazahl
oder Zeichen) der eingegebene Wert abgespeichert wird, bzw. ausgegeben wird.
Merke:
Formatieren heißt eine Form geben, so wie eine Backform einem Teig eine Form gibt.
![Page 31: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/31.jpg)
Zuweisungsoperation:
Der Variablen links des Gleichheitszeichens = wird der Wert rechts des Gleichheitszeichens zugewiesen. LEIDER benutzt der Entwickler der Programmiersprache C statt des Zeichens := das Gleichheitszeichen, obwohl es sich ...
![Page 32: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/32.jpg)
um eine Zuweisung und nicht um eine Gleichheit handelt. Dem Entwickler der Programmiersprache C ist dies offensichtlich egal. Die Syntax gibt er vor und das Gleichheitszeichen hat bei ihm die Semantik von :=
![Page 33: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/33.jpg)
Beispiele:
y=10;z=y;z=y+2;y=z;z=z+1;
Dynamische Entwicklung der Inhalte der Variablen y und z:
10 ?y z
10 1010 1212 1212 13
![Page 34: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/34.jpg)
Die Ausführung der Anweisungen des letzten Ein/Ausgabeprogramms detailliert erklärt:
![Page 35: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/35.jpg)
Was bewirken die einzelnen Anweisungen des gerade vorgestellten Programms ?
printf("Bitte ganze Zahl eingeben \n");
scanf("%d", &z);
z = z * z;
printf("Das Quadrat ist: %d", z);
![Page 36: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/36.jpg)
Was bewirkt also:
printf("Bitte ganze Zahl eingeben \n");
Es wird auf dem Bildschirm der Text "Bitte ganze Zahl eingeben" ausgegeben und dann ein Zeilenumbruch gemacht.
![Page 37: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/37.jpg)
Was bewirkt also:
scanf("%d", &z);
Das Programm hält an und der Benutzer muss über Tastatur eine ganze Zahl eingeben und mit dem Drücken der Return-Taste diese Eingabe beenden (erst dann macht das Programm weiter). Die eingegebene Zahl wird in der Variablen z gespeichert.Wir nehmen hier an, dass der Benutzer die Zahl 5 eingegeben hat.
![Page 38: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/38.jpg)
Was bewirkt also:
z = z * z;
Der Wert der Variablen z (hier also 5) wird mit sich selbst multipliziert (ergibt hier also 25) und wiederum in der Variablen z abgespeichert. Der Wert der Variablen z ist hier also vor der Ausführung der Anweisung 5 und nach der Ausführung 25.
![Page 39: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/39.jpg)
Was bewirkt also:
printf("Das Quadrat ist: %d", z);
Es wird zuerst in dem Text "Das Quadrat ist: %d" der Platzhalter %d durch den Wert der Variablen z (hier also 25) ersetzt. Dann wird dieser ersetzte Text "Das Quadrat ist: 25" auf dem Bildschirm ausgegeben.
![Page 40: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/40.jpg)
Aufgabe:Ein Schreiner will von einer rechteckigen Holzplatte den Flächeninhalt und den Umfang (für die Umleimer) bestimmen.Schreiben Sie dazu ein Programm.
![Page 41: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/41.jpg)
int main (){ int l; // Länge int b; // Breite // Variable besser untereinander deklarieren int u,f; printf("Bitte Länge eingeben \n"); scanf("%d", &l); printf("Bitte Breite eingeben \n"); scanf("%d", &b); u = 2 * (l + b); f = l * b; printf("Fläche = %d Umfang = %d",f, u) ; return 0;}
%d wird durch den Wert von f ersetzt
alles in der gleichen Zeile rechts von // wird als Kommentar aufgefasst und vom Compiler nicht berücksichtigt.
%d wird durch den Wert von u ersetzt
![Page 42: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/42.jpg)
Frage:Was ist der Nachteil des Programms ?
Antwort:Es können nur ganzzahlige Werte eingegeben werden.
![Page 43: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/43.jpg)
Wir machen deshalb einen kleinen Ausflug:
![Page 44: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/44.jpg)
Was ist ein Bit ?
![Page 45: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/45.jpg)
1 Bit ist die kleinste Maßeinheit für eine
Datenmenge
![Page 46: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/46.jpg)
1 Byte = 8 Bit
![Page 47: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/47.jpg)
Wie viele Zustände kann man mit 1 Byte
darstellen ?
![Page 48: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/48.jpg)
Wie viele Zustände kann man mit 1 Byte darstellen ?
Zu schwierig ?Also beginnen wir mit
einem Bit
![Page 49: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/49.jpg)
Wie viele Zustände kann man mit 1 Bit darstellen ?
1
0
und
also, Anzahl der Zustände: 2 * 1 = 2
![Page 50: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/50.jpg)
Wie viele Zustände kann man mit 2 Bit darstellen ?
0
0
und
1
0
11
also, Anzahl der Zustände: 2 * 2 = 4
Also insgesamt
0 00 11 01 1
![Page 51: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/51.jpg)
Wie viele Zustände kann man mit 3 Bit darstellen ?
0
0
und
0
also, Anzahl der Zustände: 2 * 4 =
...
1 1
4 Möglichkeiten
01
0...
1 1
4 Möglichkeiten
2 * 2 * 2 = 8
Also insgesamt0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1
![Page 52: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/52.jpg)
Wie viele Zustände kann man mit 8 Bit darstellen ?
2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 = 28 = 256
![Page 53: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/53.jpg)
Wie viele Zustände kann man mit 2 Byte darstellen ?
216 = 65536
2 Byte = 16 Bit
also:
![Page 54: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/54.jpg)
Wie viele Zustände kann man mit 4 Byte darstellen ?
232 = 4294967296
4 Byte = 32 Bit
also:
![Page 55: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/55.jpg)
Wie kann man dies schnell näherungsweise
ausrechnen ?
![Page 56: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/56.jpg)
210 = 1024 1000 = 103 , also: 210 103 220 = 210 · 2 = (210)2 (103)2 = 106
also: 220 106
230 = 210 · 3 = (210)3 (103)3 = 109
also: 230 109
240 = 210 · 4 = (210)4 (103)4 = 1012
also: 240 1012
![Page 57: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/57.jpg)
Weitere Maßeinheiten für (große) Datenmengen:
![Page 58: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/58.jpg)
103 Byte = 1 Kilobyte = 1 KB106 Byte = 1 Megabyte = 1 MB109 Byte = 1 Gigabyte = 1 GB1012 Byte = 1 Terabyte = 1 TB1015 Byte = 1 Petabyte = 1 PB1018 Byte = 1 Exabyte = 1 EB1021 Byte = 1 Zettabyte = 1 ZB1024 Byte = 1 Yottabyte = 1 YB
![Page 59: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/59.jpg)
Wie kann man schnell näherungsweise
ausrechnen, wie viele Zustände man mit 2 Byte
bzw. 4 Byte darstellen kann, d.h. wie gross ist
216 und 232 ?
![Page 60: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/60.jpg)
216 = 26+10 = 26 · 210= 64 · 210
64 · 103
also: 216 64103
232 = 22+30 = 22 · 230= 4 · 230 4 · 109
also: 232 4 109
![Page 61: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/61.jpg)
Zurück zum Datentyp:
![Page 62: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/62.jpg)
int main (){ int z; ...
}
Datentyp
![Page 63: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/63.jpg)
Der Datentyp einer Variablen legt fest, welche Werte eine Variable annehmen darf und in welchem Wertebereich sich diese Werte befinden dürfen.
Dieser Wertebereich hängt von der Anzahl der Bytes ab, in denen die Variable gespeichert wird.
![Page 64: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/64.jpg)
Ganze Zahlen
Können dargestellt werden durch:
![Page 65: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/65.jpg)
Datentyp int
Länge: 2 oder 4 Byte
Wertebereich:-32768...32767 oder
-2147483648...2147483647
Formatierung: %d
65536 bzw. 4294967296 Zahlen auf positiven und negativen Bereich aufgeteilt
![Page 66: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/66.jpg)
Datentyp unsigned int
Länge: 2 oder 4 Byte
Wertebereich:
0...65535 oder
0...4294967295
Formatierung: %d
65536 bzw. 4294967296 Zahlen auf positiven Bereich aufgeteilt
![Page 67: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/67.jpg)
Es gibt noch andere ganzzahlige Datentypen, wie z.B. long
long braucht mehr (oder gleich viel) Speicher als int.Näheres ist dazu der Hilfe der Entwicklungsumgebung zu entnehmen.
![Page 68: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/68.jpg)
Fließkommazahlen
(oder auch Gleitkommazahlen
genannt)
![Page 69: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/69.jpg)
Wichtig: Da es unendlich viele Fließkommazahlen gibt, können nur endlich viele in einer bestimmten Menge Bytes abgespeichert werden.Das geht nur, indem z.B. die Nachkommastellen ab einer bestimmten Stelle abgeschnitten werden.
![Page 70: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/70.jpg)
Für Fließkommazahlen gibt es folgende Datentypen:
![Page 71: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/71.jpg)
Datentyp float
Länge: 4 Byte
Wertebereich:
ca. -3.4*1038 bis
ca. 3.4*1038
Genauigkeit:
mindestens 6 Dezimalst.Formatierung: %f
![Page 72: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/72.jpg)
Datentyp double
Länge: 8 Byte
Wertebereich:
ca. -1.7*10308 bis
ca. 1.7*10308
Genauigkeit:
mindestens 15 Dezimalst.Formatierung: %f
![Page 73: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/73.jpg)
Datentyp doubleFür die Formatierung gibt es bei Microsoft MS VC++ beim Datentyp double eine Besonderheit:
bei scanf: %lf
bei printf: %f
bzw. bei neuen Versionen: %lf
Näheres dazu in der Hilfe der jeweiligen
Entwicklungsumgebung
![Page 74: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/74.jpg)
C wurde von einem Amerikaner entwickelt.
Im amerikanischen Sprachraum schreibt man in
Kommazahlen statt des Kommas einen Punkt.
Deshalb gilt für die Syntax...
![Page 75: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/75.jpg)
Beispiele für Gleitkommazahlen:
...double x;x = 3.1415;x = -4.67;x = 7.5e-23;x = E-45;...
7,5·10-23
10-45
3,1415
-4,67
![Page 76: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/76.jpg)
Funktioniert genauso für float:
...float x;x = 3.1415;x = -4.67;x = -3.14e23;x = -E17;...
-3,14·1023
-1017
3,1415
-4,67
![Page 77: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/77.jpg)
Zeichen
Ein Computer kann nur Zahlen speichern, keine Zeichen. Damit ein Zeichen gespeichert werden kann, wird ihm eine Zahl (ASCII-Wert) zugeordnet.
![Page 78: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/78.jpg)
Diese Zuordnung ist im
ASCII - Zeichensatz
festgelegt.
American Standard Code for
Information Interchange
![Page 79: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/79.jpg)
Datentyp char
Länge: 1 Byte
Wertebereich:
Alle ASCII-Zeichen
z.B: A <--> 65Bem: 7. Bit ist ein Vorzeichenbit
Formatierung: %c
![Page 80: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/80.jpg)
Datentyp unsigned char
Länge: 1 Byte
Wertebereich:
Alle ASCII-Zeichen
z.B: A <--> 65Bem: 7. Bit ist kein Vorzeichenbit
Formatierung: %c
![Page 81: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/81.jpg)
In Variablen der Datentypen char und unsigned char wird der ASCII-Wert des Zeichens gespeichert. Beim Datentyp char wird das 7. Bit als Vorzeichenbit benutzt, beim Datentyp unsigned char dagegen nicht.
![Page 82: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/82.jpg)
Bei Variablen des Datentypen char werden deshalb Zeichen mit dem ASCII-Wert grösser oder gleich 128 als negative Zahlen abgespeichert. Bei unsigned char werden alle Zeichen als positive Zahlen abgespeichert.
![Page 83: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/83.jpg)
Beispiele für Zeichen
...
char x;
char y;
x = 'c';
y = 'A';
...
Was würde der Compiler sagen, wenn die zwei Hochkommata
fehlen würden?
Er würde c als Variable auffassen. Da diese aber nicht deklariert (angemeldet) wurde, gibt er eine Fehlermeldung aus.
Deshalb werden in C alle Zeichen zwischen 2 Hochkommata gesetzt.
![Page 84: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/84.jpg)
Datentyp bool
Länge: 1 Byte
Wertebereich:
true, false
Formatierung: %c
bool gibt es nicht in C, sondern nur in C++
![Page 85: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/85.jpg)
Beispiele für boolsche Werte
...
bool b1;
bool b2;
b1 = true;
b2 = false;
...
![Page 86: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/86.jpg)
Siehe auch in der Hilfe zu MS VC++ unter:
data type ranges
![Page 87: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/87.jpg)
Aufgabe
Schreiben Sie ein Programm, das das zum
Wert 65 zugehörige Zeichen auf dem
Bildschirm ausgibt.
![Page 88: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/88.jpg)
int main(){
int i;
i = 65;
printf("%d %c\n", i, i);
return 0;
}
i wird als ganze Zahl dargestellt
i wird als Zeichen dargestellt
ergibt Bildschirmausgabe:
Anschaulich: Der Teig i wird einmal in der Backform %d und das andere Mal in der Backform %c gebacken (formatiert).
Formatieren heißt eine Form geben, so wie eine Backform einem Teig eine Form gibt.
![Page 89: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/89.jpg)
int main(){
int i;
i = 65;
printf("%d %c\n", i, i);
return 0;
}
i wird als ganze Zahl dargestellt
i wird als Zeichen dargestellt
ergibt Bildschirmausgabe: 65 A
Leerzeichen, da sich zwischen %c und %d auch ein Leerzeichen
befindet
![Page 90: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/90.jpg)
Aufgabe
Schreiben Sie ein Programm, das den zum Zeichen B zugehörigen ASCII-Wert auf dem Bildschirm ausgibt.
![Page 91: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/91.jpg)
int main(){
char z;
z = 'B';
printf("%c %d\n", z, z);
return 0;
}
z wird als Zeichen dargestellt
z wird als ganze Zahl dargestellt
Also ist die Bildschirmausgabe: B 66
Leerzeichen, da sich zwischen %c und %d auch ein Leerzeichen
befindet
![Page 92: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/92.jpg)
Aufgabe:Schreiben Sie ein C-Programm, das für ein eingegebenes Zeichen den ASCII-Wert auf dem Bildschirm ausgibt.
![Page 93: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/93.jpg)
int main(){
char z;
printf("Bitte Zeichen
eingeben\n");
scanf("%c",&z);
printf("%d %c\n",z,z);
return 0;
}
![Page 94: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/94.jpg)
Problem mit scanf:
![Page 95: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/95.jpg)
int main (){ char g; char s; printf("Geschl. w/m eingeben"); scanf("%c", &g); printf("\nDu bist %c\n", g); printf("Stand v/l eingeben\n"); scanf("%c", &s); printf("Du bist %c\n", s);}
![Page 96: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/96.jpg)
Warum wird der Familienstand nicht auf
dem Bildschirm ausgegeben ?
![Page 97: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/97.jpg)
Der TastaturpufferEine Eingabefunktion wie scanf prüft zuerst ab, ob sich (vielleicht noch von eineren früheren Eingabe) noch Zeichen im sogenannten Tastaturpuffer befinden (dort werden über Tastatur eingegebene Zeichen zuerst gespeichert).Wenn dies der Fall ist, hält scanf nicht an, sondern liest Zeichen aus.
![Page 98: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/98.jpg)
Befindet sich dagegen kein Zeichen mehr im Tastaturpuffer, hält scanf zuerst an und gibt dem Anwender die Möglichkeit, Zeichen einzugeben und die Eingabe mit ENTER zu beenden. Dann holt scanf diese Zeichen aus dem Tastaturpuffer.
![Page 99: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/99.jpg)
Zurück zur Beantwortung der vorigen Frage:
![Page 100: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/100.jpg)
Tastaturpuffer
nach der 1. Eingabe des Anwenders
w ENTER
Welches Zeichen holt die 1. scanf Anweisung aus dem Tastaturpuffer und
weist es der Variablen g zu ?
![Page 101: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/101.jpg)
ENTER
Wie sieht der Inhalt des Tastaturpuffers jetzt aus ?
Welches Zeichen holt die 2. scanf Anweisung aus dem Tastaturpuffer und
weist es der Variablen s zu ?
![Page 102: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/102.jpg)
Frage:Was würde das Programm für das Geschlecht und den Stand ausgeben, wenn der Anwender bei der ersten Eingabeaufforderung (beim 1. scanf im Programm) nicht ein Zeichen, sondern die Zeichenkette weiblich eingegeben hätte ?
![Page 103: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/103.jpg)
Antwort:Du bist wDu bist e
![Page 104: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/104.jpg)
Lösung:
Tastaturpuffer nach der Eingabe löschen mit:
fflush(stdin)
![Page 105: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/105.jpg)
int main (){ char g;
printf("Geschl. w/m eingeben"); scanf("%c", &g); fflush(stdin); ...}
![Page 106: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/106.jpg)
Bemerkung:Aus Platzgründen ist es möglich, dass fflush(stdin);in dieser und den folgenden Präsentationen weggelassen wird !
![Page 107: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/107.jpg)
Das
EVA
Prinzip
![Page 108: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/108.jpg)
int main (){ int z; printf("Bitte ganze Zahl eingeben \n"); scanf("%d", &z); fflush(stdin);
z = z * z;
printf("Das Quadrat ist: %d", z);
}
Eingabe
Verarbeitung
Ausgabe
![Page 109: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/109.jpg)
Aufgabe:
Ersatzwiderstand von 2 parallel geschalteten
Widerständen berechnen.
![Page 110: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/110.jpg)
int main(){ double R1; double R2; double ersatz; printf("1. Widerstand eingeben\n"); scanf("%lf", &R1); fflush(stdin); printf("2. Widerstand eingeben\n"); scanf("%lf", &R2); fflush(stdin); ersatz = 1/(1/R1 + 1/R2); printf("Ersatzwiderstand=%f\n",ersatz); return 0;}
![Page 111: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/111.jpg)
Weitere Lösung
![Page 112: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/112.jpg)
int main(){ double R1; double R2; double ersatz; printf("1. Widerstand eingeben\n"); scanf("%lf", &R1); fflush(stdin); printf("2. Widerstand eingeben\n"); scanf("%lf", &R2); fflush(stdin); ersatz = 1/R1 + 1/R2;
printf("Ersatzwiderstand=%f\n",ersatz); }
ersatz = 1 / ersatz;
Alles ist gleich (bis auf eine Anweisung) wie in der letzten Lösung. Was fehlt aber noch ?
![Page 113: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/113.jpg)
Frage:Wäre folgende Anweisung auch korrekt ?
1/ersatz = 1/R1 + 1/R2
Nein ! Links des Gleichheitszeichens darf nur genau eine Variable stehen !
![Page 114: Programmier- sprache C. Das einfachste Programm:](https://reader035.vdokument.com/reader035/viewer/2022081507/55204d6549795902118bac9a/html5/thumbnails/114.jpg)
Weiter mit:
Aufgaben aus dem Übungsblatt lösen.