Upload
wilhelm-henny
View
112
Download
4
Embed Size (px)
Citation preview
Übung 1
BMEVIEEA100
Grundlagen der Programmierung
Informatik Übung
• C Sprache
• Algorithmen
• Effektivität von Algorithmen
• Programme specifizieren, Algorithmen zu ausarbeiten, Quelltext generieren, dokumentieren
Algorithmen
• Numerische Integration
• Lösungsverfahren für lineare Gleichungssysteme
• Lösungsverfahren für nichtlineare Gleichungen
• Interpolation
• Sortierverfahren
• Datenkompression
Literatur
Literatur
• Vor C:
Multics project—General Electric, MIT, und Bell Laboratory (1969) (kein Erfolg) – zu große OP System
Bell Laboratory - Ken Thompson, Dennis Ritchie, Brian Kernighan – „UNIX”
Ken Thompson – prog. Sprache B
• BCPL und B sind typenlose Sprachen
• C hat eine Reihe von Datentypen– Zeichen, ganze Zahlen, Gleitpunktzahlen– Es gibt eine Hierarchie von abgeleitete
Datentypen (mit Hilfe von Zeigern, Vektoren, Strukturen und Unionen erzeugt)
– Kontrollstrukturen, die für wohlstrukturierte Programme nötig sind:
– Kontrollstrukturen, die für wohlstrukturierte Programme nötig sind:• Zusammenfassung von Anweisungen { }• Entscheidungen (if-else)• Auswahl von einem aus einer Menge von
möglichen Fällen (switch)• Schleifen mit Test des Abbruchkriteriums
am Anfang (while, for)• oder am Ende (do)• Vorzeitiges Verlassen einer Schleife
(break)
– Funktionen können Werte der elementare Typen, aber auch von Strukturen, Unionen oder als Zeigern als Resultat liefern.
– Jede Funktion darf rekursiv aufgerufen werden
– Die lokalen Variablen einer Funktion sind typischerweise „automatisch”, das heißt, sie werden bei jedem Aufruf der Funtion neu erzeugt werden
– Funktionsdefinitionen können nicht verschachtelt werden,
– Die Funktionen eines C Programms können sich in verschiedenen Quelldateien befinden, die getrennt voneinander übersetzt werden
– Ein Preprozessor ersetzt Makros im Programmtext, fügt andere Quelldateien ein und ermöglicht bedingte Übersetzung
– ANSI C standard 1988– Definition einer Bibliothek, die zu C gehört
• Funktionen zum Zugriff auf das Betriebsystem (Dateien zu lesen und schreiben)
• Funktionen für formattierte Ein- und Ausgabe• Funktionen für Speicherverwaltung etc.
#include <stdio.h>
main()
{
printf(”hello, world\n”);
}
#include <stdio.h>
int main()
{
int a,b,c;
int summe;
a = 1; b = 2; c = 3;
summe = a+b+c;
printf(”summe=%d \n”,summe);
return 0;
}
RekurzionFibonacci Zahlen
F(n)=F(n-1)+F(n-2)
F(0)=0; F(1)=1;
int fibo(int n){
if (n==0) return 0;if (n==1) return 1;return fibo(n-1)+fibo(n-2);}
Fibonacci Zahlen
Rekurzion
• Arithmetische Operatorenbinäre +, -, /, *, %unäre +, -
• Vorrang
arithmetische Operatoren werden von links her zusammenfaßt
• Verbindung von arithmetische Operatorenc = a = d+e;von rechts her
+, - (unären)
*, / , %
+, - (binären)
Datentypen
• 4 elementare Datentypenchar ein Byte, ein Zeichen – Grundelement des
Speichers
int ganzahliger Wert, 16 oder 32 Bits
float ein einfach genauer Gleichpunktwert
double ein doppelt genauer Gleichpunktwert
Varianten dieser elementaren Typen
• short int
• long int
das Wort int kann ausgelassen werden
short und int haben wenigstens 16 Bits
long hat mindestens 32 Bits
short ist nicht länger als int
int ist nicht länger als long
Varianten dieser elementaren Typen
• signed
• unsigned
char oder int (sind ≥ 0)
Vorlesung 2
Beispiele
• Wertebereich
int -32768...32767
unsigned int 0...65535
float 3.4e-38...3.4e+38
double 1.7e-308...1.7e+308
long double 3.4e-4932...1.1e+4932
Elementare printf UmwandlungenZeichen Argument; Ausgabe als
d,i int; dezimale Zahl
O int; oktale Zahl ohne Vorzeichen
x, X int; hexadezimale Zahl ohne Vorzeichen
u int; dezimale Zahl ohne Vorzeichen
c int; einzelnes Zeichen
printf(”summe=%d \n”,summe);printf(”summe=%x \n”,summe);
• %d als dezimale ganze Zahl ausgeben• %6d als dezimale ganze Zahl ausgeben,
mindestens 6 Zeichen breit• %f als Gleitpunktzahl ausgeben• %6f als Gleitpunktzahl ausgeben, mindestens 6
Zeichen breit• %.2f als Gleitpunktzahl ausgeben, 2 Zeichen hinter
Dezimalpunkt• %6.2f als Gleitpunktzahl ausgeben, 6 Zeichen breit
und 2 Zeichen hinter Dezimalpunkt
• Vereinbarungen
int i,j,k;
double a,b;
• Eine Variable kann bei ihrer Vereinbarung auch initialisiert werden
double a = 1.3, b = 2.3;
• Mit dem Attribut const kann bei der Vereinbarung einer Variablen angegeben werden, daß sich ihr Wert nicht ändert.
const int a=3;
dann a=a+1; /*ist falsch*/
• Das Komma Operator
mehrere Zuweisungen kann verbindet werden
int i,j,k;
i = 3; j = 4;
k = i, i = j;
die Auswertung geht von links her
Schleifen
• for Schleife
• while Schleifewhile (Ausdruck) Anweisungen
• do while Schleifedo Anweisungenwhile (Ausdruck);
for Schleife
for (init;test;post-expr)
statement;
Beispiele
int i,sum;
for(i=10,sum=0;i;i=i-1)
sum=sum+i;
int i,sum;
for(i=10,sum=0;i; sum=sum+i,i=i-1);