Lösungen zu den Aufgaben des C/C++ Kurses

Größe: px
Ab Seite anzeigen:

Download "Lösungen zu den Aufgaben des C/C++ Kurses"

Transkript

1 Universität Regensburg Fakultät Physik IT-Ausbildung Lösungen zu den Aufgaben des C/C++ Kurses Die hier aufgeführten Lösungen zu den Aufgaben sind als Vorschläge gedacht, wobei auf eine kurze und knappe Problemlösung Wert gelegt wurde. Oft gibt es Alternativlösungen zu den Aufgaben, sowohl in C als auch in C++. Bei den angegebenen Lösungen wird C++ und C- Code bewußt gemischt, um die Transparenz zwischen den beiden Sprachen zu demonstrieren (Ausnahme: Aufgaben 1, 3). Aufgabe 1 Schreiben Sie ein Programm, das den Namen des Benutzers einliest und ihn dann mit seinem Namen begrüßt. Verwenden Sie sowohl printf bzw. scanf als auch cout und cin. Erweitern Sie dazu das in Kapitel 1 abgedruckte Hello world -Programm. (ANSI-C) 1 # include <stdio.h> 3 int main ( void ) { 5 char name [30]; 6 7 printf (" Name eingeben : "); 8 scanf ("% s", name ); 9 printf (" Hallo %s!\n", name ); 10 } (C++) 3 using namespace std ; 5 int main ( void ) 6 { 7 char name [30]; 8 9 cout << " Name eingeben : "; 10 cin >> name ; 11 cout << " Hallo " << name << "!" << endl ; 1 }

2 Aufgabe Lesen Sie mit scanf und cin ein Wort, ein Zeichen und eine Fließkommazahl ein und geben Sie die Inhalte mit printf und cout wieder aus. 1 # include <stdio.h> # include < iostream > 3 using namespace std ; 5 6 int main ( void ) 7 { 8 char wort [30]; 9 char c; 10 float x; 11 1 printf (" Wort, Zeichen und Zahl eingeben : "); 13 scanf ("% s %c %f", wort, &c, &x); 1 printf (" Eingegeben wurde : %s, %c, %f\n", wort, c, x); cout << " Wort, Zeichen und Zahl eingeben : "; 17 cin >> wort >> c >> x; 18 cout < <" Eingegeben wurde : "<<wort <<", "<<c <<", "<<x<< endl ; 19 } Aufgabe 3 Lesen Sie zwei ganze Zahlen ein und geben Sie deren Summe, Produkt, Differenz und Quotienten aus. Achten Sie beim Teilen auf die Richtigkeit des Ergebnisses! 1 # include <stdio.h> 3 int main ( void ) { 5 int n, m; 6 7 printf (" Zahlen eingeben : "); 8 scanf ("% d %d", &n, &m); 9 printf ("% d + %d = %d\n", n, m, n+m); 10 printf ("% d - %d = %d\n", n, m, n-m); 11 printf ("% d * %d = %d\n", n, m, n*m); 1 printf ("% d / %d = %f\n", n, m, ( float )n/m); 13 }

3 Aufgabe Geben Sie mithilfe des Modulo-Operators % die letzte Ziffer einer vom Benutzer eingegebenen Ganzzahl (int) aus. 1 # include <stdio.h> 3 int main ( void ) { 5 int zahl ; 6 7 printf (" Zahl eingeben : "); 8 scanf ("% d", & zahl ); 9 printf (" Die letzte Ziffer von %d ist %d\n", zahl, zahl %10); 10 } Aufgabe 5 Ein Zeichen soll eingelesen und dann wieder ausgegeben werden. Dabei soll die Ausgabe sowohl als Zeichen als auch als Dezimal- bzw. Hexadezimalwert erfolgen (z.b.: z z 1 0x7A). Verwenden Sie sowohl scanf als auch cin für die Eingabe, bei der Ausgabe probieren Sie cout und printf aus. 1 # include <stdio.h> # include < iostream > 3 using namespace std ; 5 6 int main ( void ) 7 { 8 char z; 9 cout << "\ nein Zeichen eingeben : "; 10 cin >> z; 11 cout <<" Das Zeichen war : "<<z <<", dezimal : "<< int (z) 1 <<", hex : 0x"<<hex << int (z); 13 printf ("\ ndas Zeichen war : %c, dezimal : %d, hex : 0x%x\n",z,z,z); 1 }

4 Aufgabe 6 Erstellen Sie ein Programm, das mithilfe einer for-schleife alle durch 7 teilbaren Zahlen zwischen zwei zuvor eingegebenen Grenzen ausgibt. 3 using namespace std ; 5 int main ( void ) 6 { 7 int a, b; 8 9 cout << " Untergrenze : "; cin >> a; 10 cout << " Obergrenze : "; cin >> b; 11 1 for ( int i=a; i <=b; i=i +1) 13 if (i %7==0) cout << i << " "; 1 } Aufgabe 7 Schreiben Sie ein Programm, das zu einem gegebenen Anfangskapital bei einem vorgegebenem jährlichen Zinssatz berechnet, wie viele Jahre benötigt werden, damit das Kapital eine bestimmte Zielsumme überschreitet. 3 using namespace std ; 5 int main ( void ) 6 { 7 int jahre =0; 8 double kapital, zins, endkapital ; 9 10 cout << " Anfangskapital : "; 11 cin >> kapital ; 1 cout << " Zinssatz in %: "; 13 cin >> zins ; 1 cout << " Angestrebtes Endkapital : "; 15 cin >> endkapital ; while ( kapital < endkapital ) 19 { 0 jahre ++; 1 kapital += kapital *( zins /100); } 3 cout << " Es dauert " << jahre << " Jahre!" << endl ; 5 }

5 Aufgabe 8 Erweitern Sie das in Kapitel 3.3 abgedruckte Programm so, dass ein Schachbrettmuster auf dem Bildschirm erscheint. 1 # include <stdio.h> 3 int main ( void ) { 5 int zeile, n, m; 6 7 for ( zeile =1; zeile <=; zeile = zeile +1) 8 { 9 for (m =1; m <=; m=m +1) 10 { 11 for (n =1; n <=; n=n +1) 1 printf ("*** "); 13 printf ("\ n "); 1 } for (m =1; m <=; m=m +1) 17 { 18 for (n =1; n <=; n=n +1) 19 printf (" ***"); 0 printf ("\ n "); 1 } } 3 } Aufgabe 9 Schreiben Sie ein Programm, das das kleine Einmaleins berechnet und in Tabellenform auf dem Bildschirm ausgibt. 1 # include <stdio.h> 3 int main ( void ) { 5 int i,j; 6 7 printf (" \ n "); printf (" \n "); 11 for (i =1; i <=10; i ++) 1 { 13 printf ("% d ", i); 1 for (j =1; j <=10; j ++) printf ("%3 d ", i*j); 15 printf ("\ n "); 16 } 17 }

6 Aufgabe 10 Geben Sie alle Primzahlen zwischen und einer vom Benutzer einzugebenen Obergrenze aus. Bestimmen Sie die Primzahlen mittels Ganzzahldivision. 3 using namespace std ; 5 int main ( void ) 6 { 7 int zahl, teiler, limit ; 8 9 cout << " Obergrenze eingeben : "; 10 cin >> limit ; 11 cout << "\ nprimzahlen bis " << limit << ":\ n"; 1 13 for ( zahl =; zahl < limit ; zahl ++) 1 { 15 teiler = ; 16 while ( zahl % teiler!= 0) teiler ++; 17 if ( teiler == zahl ) cout << zahl << " "; 18 } 19 } Aufgabe 11 Geben Sie einen Christbaum durch Ausdruck entsprechend vieler Leerzeichen und Sterne auf dem Bildschirm aus. 3 using namespace std ; 5 int main ( void ) 6 { 7 int blzahl =0, sternzahl =1, i, zeile ; 8 9 for ( zeile =0; zeile <10; zeile ++) 10 { 11 for (i =0; i< blzahl ; i ++) cout << ; 1 for (i =0; i< sternzahl ; i ++) cout << * ; 13 blzahl - -; sternzahl +=; 1 cout << \n ; 15 } 16 }

7 Aufgabe 1 In unserem Kalender sind zum Ausgleich der astronomischen und kalendarischen Jahreslänge in regelmäßigen Abständen Schaltjahre eingebaut. Zur exakten Festlegung der Schaltjahre dienen die folgenden Regeln: Ist die Jahreszahl durch teilbar, so ist das Jahr ein Schaltjahr. Diese Regel hat allerdings eine Ausnahme: Ist die Jahreszahl durch 100 teilbar, so ist das Jahr kein Schaltjahr. Diese Ausnahme hat wiederum eine Ausnahme: Ist die Jahreszahl durch 00 teilbar, so ist das Jahr doch ein Schaltjahr. Erstellen Sie ein Programm, das berechnet, ob eine vom Benutzer eingegebene Jahreszahl ein Schaltjahr bezeichnet oder nicht. 1 # include <stdio.h> 3 int main () { 5 int jahr ; 6 7 printf (" Geben Sie ein Jahr ein : "); 8 scanf ("% d",& jahr ); 9 10 if ( jahr %==0) 11 if( jahr %100==0) 1 if( jahr %00==0) 13 printf (" Schaltjahr!\n"); 1 else 15 printf (" Kein Schaltjahr!\n"); 16 else 17 printf (" Schaltjahr!\n"); 18 else 19 printf (" Kein Schaltjahr!\n"); 0 }

8 Aufgabe 13 Programmieren Sie das Spiel Zahlenraten : Der Computer generiert eine Zufallszahl zwischen 1 und 100, die der Spieler erraten muß. Es wird bei jedem Durchgang mitgeteilt, ob die eingegebene Zahl zu groß oder zu klein war. Tipp: Zufallszahlen werden wie folgt generiert: Ein einmaliger Aufruf srand(time(null)) initialisiert den Zufallszahlengenerator. Anschließend liefert jeder Aufruf von rand()%100 eine Zufallszahl zwischen 0 und 99. Die Funktionen sind in stdlib.h bzw. time.h deklariert. 1 # include <stdio.h> # include <time.h> 3 # include < stdlib.h> 5 int main ( void ) 6 { 7 int zahl, rat, versuche =0; 8 9 srand ( time ( NULL )); 10 zahl = rand ()% ; 11 1 do 13 { 1 printf (" Zahl eingeben : "); 15 scanf ("% d", & rat ); 16 if (rat > zahl ) printf (" Zu gross!\n"); 17 if (rat < zahl ) printf (" Zu klein!\n"); 18 versuche ++; 19 } 0 while ( rat!= zahl && versuche <6); 1 if ( rat == zahl ) printf (" Erraten!\n"); 3 else printf (" Verloren! Die gesuchte Zahl war % d\ n", zahl ); }

9 Aufgabe 1 (fakultativ) Lösen Sie die quadratische Gleichung ax + bx + c = 0 für vom Benutzer eingegebene Parameter a, b und c. Falls Ihnen komplexe Zahlen geläufig sind, sollen auch komplexe Lösungen ausgegeben werden. Tipp: Die Lösungsformel für die quadratische Gleichung lautet: x 1/ = b ± b ac. a Die Funktion float sqrt(float) zur Berechnung der Wurzel einer positiven Zahl ist in math.h deklariert. Zum Testen des Programms können Sie folgende Parametersätze verwenden:, -36, 81.5;,, -1, 3; 1, -, 1+ i. # include <math.h> 3 using namespace std ; 5 6 int main ( void ) 7 { 8 float a,b,c,d; //a*x*x + b*x + c = cout << "\ nkoeffizienten a b c: "; 11 cin >> a >> b >> c; 1 13 D=b*b -* a*c; 1 if (D ==0) cout << "x = " << -b /(* a) << endl ; 15 if (D >0) cout << "x = " << (-b+ sqrt (D ))/(* a) << " und x = " 16 << (-b- sqrt (D ))/(* a) << endl ; 17 if (D <0) cout << "x = " << -b /(* a) << "+ -" 18 << sqrt (-D )/(* a) << "*i" << endl ; 19 }

10 Aufgabe 15 Programmieren Sie mithilfe der switch-case Anweisung einen Mini-Taschenrechner, der zwei Zahlen und einen Operator (+, -, *, /) einliest und das Ergebnis ausgibt. Eine eventuelle Division durch 0 soll abgefangen werden. 3 using namespace std ; 5 int main ( void ) 6 { 7 float z1,z; 8 char op; 9 cout << " Zahlen mit Operator dazwischen [+ -*/]: "; 10 cin >> z1 >> op >> z; 11 cout << z1 << op << z << " ="; 1 switch ( op) 13 { 1 case + : 15 cout << z1+z << \n ; 16 break ; 17 case - : 18 cout << z1 -z << \n ; 19 break ; 0 case * : 1 cout << z1*z << \n ; break ; 3 case / : if ( z ==0) 5 cout << " Div durch 0 geht nicht \ n"; 6 else 7 cout << z1/z << \n ; 8 break ; 9 default : 30 cout << " Den Operator kenne ich nicht \ n"; 31 } 3 }

11 Aufgabe 16 Primzahlberechnung nach dem Sieb-Verfahren: Schreiben Sie alle Zahlen (z.b. von bis 100) in ein Array. Beginnend mit der kleinsten Zahl wird die Zahl als Primzahl auf dem Bildschirm ausgegeben und gleichzeitig alle Vielfachen dieser Zahl im Array auf 0 gesetzt d.h. aus der Liste gestrichen. Anschliessend wird die nächste Zahl 0 im Array bearbeitet. 3 using namespace std ; 5 int main ( void ) 6 { 7 int a [100],i,j; 8 9 for (i =0; i <100; i ++) a[i]=i; 10 cout << "\ ndie Ersten Primzahlen...\ n"; 11 for (i =; i <100; i ++) 1 { 13 if (a[i] >0) 1 { 15 cout << a[i] << ; 16 for (j =* i; j <100; j+=i) a[j ]=0; 17 } 18 } 19 }

12 Aufgabe 17 Lesen Sie eine Integerzahl ein und geben Sie deren Bitmuster aus (z.b.: ). 3 using namespace std ; 5 int main ( void ) 6 { 7 short int n; 8 unsigned short int maske =0 x80 ; 9 10 cout << "8 - Bit - Integer eingeben : "; 11 cin >> n; 1 cout << " dezimal : " << n << " binaer : "; 13 while ( maske ) 1 { 15 if (( n & maske ) > 0) 16 cout << 1 ; 17 else 18 cout << 0 ; 19 maske > >=1; 0 } 1 }

13 Aufgabe 18 Bestimmen Sie die Primfaktorzerlegung einer eingegebenen Zahl (z.b.: 00 = ***5*5). 3 using namespace std ; 5 int main ( void ) 6 { 7 int zahl, i, anz =0; 8 9 cout << " Gib Integerzahl ein : "; 10 cin >> zahl ; 11 cout << " Zerlegung : "; 1 for (i =; i <= zahl ; i ++) 13 while ( zahl % i == 0) 1 { 15 if ( anz ==0) 16 cout << i; 17 else 18 cout << * << i; 19 anz ++; 0 zahl /=i; 1 } }

14 Aufgabe 19 Sortieren Sie ein mit Zufallszahlen belegtes Array beliebiger Größe mit dem Bubble-Sort- Verfahren: jeweils zwei benachbarte Feldelemente werden vertauscht, wenn sie in der falschen Reihenfolge sind. # include < stdlib.h> 3 using namespace std ; 5 6 int main ( void ) 7 { 8 int a [10], i, zw, change ; 9 10 cout << " unsortiert : "; 11 for (i =0; i <10; i ++) 1 { 13 a[i]= rand ()%100; 1 cout << a[i] << ; 15 } // sortieren ( und dabei ausgeben...) 18 do 19 { 0 cout << "\ nzwischenschritt : "; 1 change =0; // keine Vertauschung noetig for (i =0; i <9; i ++) 3 if (a[i]>a[i +1]) { 5 zw=a[i]; a[i]=a[i +1]; a[i +1]= zw; 6 change =1; // Vertauschung 7 } 8 for (i =0; i <10; i ++) cout << a[i] << ; 9 } 30 while ( change ); 31 }

15 Aufgabe 0 Schreiben Sie ein Sortierprogramm, das nach dem Selection-Sort Algorithmus arbeitet: 1. suche das kleinste/größte Element des Arrays,. vertausche dieses mit dem ersten Element des Arrays, 3. gehe wieder zu Schritt 1, jetzt aber mit dem verkürzten Array. Wieso ist dieses Verfahren effizienter als Bubble-Sort? # include < stdlib.h> 3 using namespace std ; 5 6 int main ( void ) 7 { 8 int a [10], i, k, zw, min, stelle ; 9 10 cout << " unsortiert : "; 11 for (i =0; i <10; i ++) 1 { 13 a[i]= rand ()%100; 1 cout << a[i] << ; 15 } for (k =0; k <10; k ++) 18 { 19 cout << "\ nzwischenschritt : "; 0 min =a[k]; 1 stelle =k; for (i=k; i <10; i ++) /* suche kleinstes Element */ 3 if (a[i]< min ) { 5 min =a[i]; 6 stelle =i; 7 } 8 zw=a[ stelle ]; a[ stelle ]=a[k]; a[k]= zw; 9 for (i =0; i <10; i ++) cout << a[i] << ; 30 } 31 }

16 Aufgabe 1 (fakultativ) Familie Müller ist zu einer Geburtstagsfeier eingeladen. Leider können sich die Familienmitglieder (Anton, Berta, Claus und Doris) nicht einigen, wer hingeht und wer nicht. In einer gemeinsamen Diskussion kann man sich jedoch auf die folgenden Grundsätze verständigen: Mindestens ein Familienmitglied geht zu der Feier. Anton geht auf keinen Fall zusammen mit Doris. Wenn Berta geht, dann geht Claus mit. Wenn Anton und Claus gehen, dann bleibt Berta zu Hause. Wenn Anton zu Hause bleibt, dann geht entweder(!) Doris oder Claus. Helfen Sie Familie Müller, indem Sie ein Programm erstellen, das alle Gruppierungen ermittelt, in denen Familie Müller zur Feier gehen könnte. Tipp: Erstellen Sie alle denkbaren Kombinationen und prüfen Sie jede darauf, ob sie alle obigen Grundsätze erfüllt. 1 # include <stdio.h> # include < stdlib.h> 3 int main ( void ) 5 { 6 unsigned char a, b, c, d; 7 unsigned char gehen ; 8 unsigned char z =0; 9 10 printf (" Folgende Personen koennen zusammen gehen : \ n\ n "); 11 1 /* Dabei heisst z. B. a == 1, dass Anton mitgehen moechte,*/ 13 for ( a = 0; a <= 1; a = a + 1) 1 for ( b = 0; b <= 1; b = b + 1) 15 for ( c = 0; c <= 1; c = c + 1) 16 for ( d = 0; d <= 1; d = d + 1) 17 { 18 // EINE Moeglichkeit der Implementierung 19 gehen = ( ( a b c d ) 0 && (!d!a ) 1 && (!b c ) && ((!( a && c))!b) 3 && ( a ( d c ))); 5 if ( gehen == 1) 6 { 7 printf (" %d. ", z = z +1); 8 if (a) printf (" Anton "); 9 if (b) printf (" Berta "); 30 if (c) printf (" Claus "); 31 if (d) printf (" Doris "); 3 printf ("\ n "); 33 } 3 } 35 }

17 Aufgabe (fakultativ) Man berechne die Nullstellen einer Funktion mithilfe des sogenannten Bisektionsverfahrens: eine linke und rechte Intervallgrenze wird eingelesen, die Funktionswerte hier und in der Mitte des Intervalls werden bestimmt. Dann wird das Intervall immer wieder halbiert, bis genügend Genauigkeit erreicht ist. Verwenden Sie als Beispiel die Funktion f(x) = x 3 x x Diese hat Nullstellen in den Intervallen [0,1], [-1,0] und [1,]. # include <math.h> 3 using namespace std ; 5 6 int main ( void ) 7 { 8 int i =1; /* Zahl der Iterationen */ 9 float a,b,c; /* linker und rechter x-wert, Mitte */ 10 float fa, fc; /* Funktionswerte */ 11 1 cout << " Linke und rechte Grenze : "; 13 cin >> a >> b; 1 15 do 16 { 17 c=(a+b )/.0; 18 fa=a*a*a-a*a-a +0.0; 19 fc=c*c*c-c*c-c +0.0; 0 cout << " Iteriere : Nr ="<<i < <"x="<<c <<", f(x)=" < <fc << \n ; 1 if (fc*fa > 0) a=c; 3 else b=c; 5 i ++; 6 } 7 while ( ( fabs (b-a) > 1e -7) && (i <10) ); 8 9 }

18 Aufgabe 3 Freunden Sie sich zunächst einmal mit Unterprogrammen an. Im Skript sind folgende Programmfragmente zu finden: Berechnung von n m : Funktion mypow Näherung für exp(x): Funktion myexp Einfache Rekursion: Funktion fak Türme von Hanoi: Funktion hanoi Machen Sie daraus jeweils ein lauffähiges Programm. (Potenz und Exponentialfunktion) 1 # include <stdio.h> 3 long int mypow ( int n, int m); double myexp ( double x, int k); 5 6 int main ( void ) 7 { 8 int n=, m =10; 9 double x =3. 0; printf ("% d hoch %d ist %ld\n", n, m, mypow (n,m )); 1 printf (" exp (% lf) ist etwa %lf\n", x, myexp (x, 1000)); 13 } 1 15 long int mypow ( int n, int m) 16 { 17 int i; 18 long int erg =1; 19 0 for (i =1; i <=m; i ++) 1 erg *=n; return erg ; 3 } 5 double myexp ( double x, int k) 6 { 7 int n; 8 double summand =1.0, sum =1. 0; 9 30 for (n =1; n <=k; n ++) 31 { 3 summand *= x/n; 33 sum += summand ; 3 } 35 return sum ; 36 }

19 (Fakultät, rekursiv) 1 # include <stdio.h> 3 long fak ( int wert ); 5 int main ( void ) 6 { 7 int m =10; 8 9 printf ("% d! = %ld\n", m, fak (m )); 10 } 11 1 long fak ( int wert ) 13 { 1 if ( wert ==1) return 1; 15 else return ( wert * fak (wert -1)); 16 } (Türme von Hanoi, rekursiv) 1 # include <stdio.h> 3 void hanoi (int, int, int ); 5 int main ( void ) 6 { 7 hanoi (5,1,); 8 } 9 10 void hanoi ( int n, int p1, int p) 11 { 1 int parkplatz ; 13 1 if (n >1) 15 { 16 parkplatz = 6-p1 -p; 17 hanoi (n -1, p1, parkplatz ); 18 } 19 0 printf ("1 Scheibe von %d nach %d\n", p1, p ); 1 if (n >1) hanoi (n -1, parkplatz, p ); 3 }

20 Aufgabe Schreiben Sie das Programm zur Primzahlzerlegung (Aufgabe 18) so um, dass das Einlesen der Zahl von einer Funktion eingabe erledigt wird und die Berechnung und Ausgabe der Primfaktoren von einer anderen Funktion zerlegung. Überlegen Sie zuerst, welche Variablentypen die Funktionen erhalten und zurückliefern sollen! 3 using namespace std ; 5 int eingabe ( void ); 6 void zerlegung ( int zahl ); 7 8 int main ( void ) 9 { 10 zerlegung ( eingabe ()); 11 } 1 13 int eingabe ( void ) 1 { 15 int z; do 18 { 19 cout << " Gib Integerzahl ein : "; 0 cin >> z; 1 } while (z <); 3 return z; 5 } 6 7 void zerlegung ( int zahl ) 8 { 9 int i, anz =0; cout << zahl << " = "; 3 for (i =; i <= zahl ; i ++) 33 { 3 while ( zahl % i == 0) 35 { 36 if (! anz ) cout << i; 37 else cout << * << i; 38 anz ++; 39 zahl /=i; 0 } 1 } }

21 Aufgabe 5 Erstellen Sie ein Programm zur numerischen Integration einer Funktion mit der Rechtecks- Methode. Das Programm soll eine Funktion double f(double x) enthalten, die zu jedem x einen Funktionswert liefert, sowie eine Funktion double integral(double a, double b, int n). Darin soll das Intervall [a, b] in n kleine Intervalle aufgeteilt werden, die Fläche der Rechtecke unter dem Funktionsgraphen berechnet werden und die Gesamtfläche zurückgeliefert werden. Tipp: Zum Testen Ihres Programms können Sie # include <math.h> 3 using namespace std ; exp( x )dx benutzen. 6 double f( double x); 7 double integral ( double a, double b, int n); 8 9 int main ( void ) 10 { 11 double a,b; int n; 1 cout << " Grenze links, rechts und Intervallzahl : "; 13 cin >> a >> b >> n; 1 cout << " Ergebnis : " << integral (a,b,n) << \n ; 15 return 0; 16 } double f( double x) 19 { 0 return exp (-x*x); 1 } 3 double integral ( double a, double b, int n) { 5 double flaeche =0,h; 6 int i; 7 8 h=(b-a)/n; 9 for (i =0; i<n; i ++) 30 flaeche = flaeche + h*f(a+i*h); 31 return flaeche ; 3 }

22 Aufgabe 6 Schreiben Sie eine Funktion int palin(char *c, int erstes, int letztes), die rekursiv prüfen soll, ob ein gegebenes Wort oder ein Satz ein Palindrom i ist. Ihr wird das Wort oder der Satz in einem char-array c sowie die Stelle des ersten und letzten Zeichens als int übergeben. Stimmen beide Zeichen überein, so kann man mit dem Prüfen des verkürzten Wortes oder Satzes fortfahren. Tipp: Die Funktion strlen(text) liefert die Länge des Textes char text[]. Sie ist in string.h deklariert. Überlegen Sie sich auch, wie Sie Leerzeichen behandeln (siehe Bsp. in der Fussnote). Beachten Sie bitte die Schreibweise...palin(char *c... zur Übergabe des char-arrays. 1 # include <stdio.h> # include < string.h> 3 int palin ( char *, int, int ); 5 6 int main ( void ) 7 { 8 char wort [] =" derfreibierfred "; 9 char unwort [] =" derfreibiersepp "; 10 char satz [] =" Ein Schwarzer mit Gazelle zagt im Regen nie "; 11 1 if ( palin (wort, 0, strlen ( wort ) -1) == 1) 13 printf ("\"% s\" ist ein Palindrom \n", wort ); 1 else printf ("\"% s\" ist kein Palindrom \n", wort ); if ( palin ( unwort, 0, strlen ( unwort ) -1) == 1) 17 printf ("\"% s\" ist ein Palindrom \n", unwort ); 18 else printf ("\"% s\" ist kein Palindrom \n", unwort ); 19 0 if ( palin (satz, 0, strlen ( satz ) -1) == 1) 1 printf ("\"% s\" ist ein Palindrom \n", satz ); else printf ("\"% s\" ist kein Palindrom \n", satz ); 3 } 5 int palin ( char * c, int erstes, int letztes ) 6 { 7 while (c[ erstes ] == && letztes - erstes > ) 8 erstes ++; 9 while ( c[ letztes ] == && letztes - erstes > ) 30 letztes - -; 31 if (!( c[ erstes ]== c[ letztes ] 3 c[ erstes ]== c[ letztes ]+3 33 c[ erstes ]== c[ letztes ] -3)) 3 return 0; 35 else 36 { 37 if ( letztes - erstes <= ) 38 return 1; 39 return palin ( c, erstes +1, letztes - 1); 0 } 1 } i vorwärts rückwärts z.b.: anna, otto, ein schwarzer mit gazelle zagt im regen nie. Danke an dieser Stelle an Hr. De Muirier von der DLR, der mich darauf hingewiesen hat, dass das im Original-Palindrom verwendete Wort heutzutage rassistisch und stark pejorativ ist. (Zitat)

23 Aufgabe 7 Das Treppenproblem: Sie können bei einer Treppe entweder genau eine Stufe pro Schritt nehmen, oder, falls sie sportlich und durchtrainiert sind, Stufen auf einmal. Damit haben sie mehrere Möglichkeiten eine mehrstufige Treppe zu überwinden (z.b.: 1 Stufe 1 Möglichkeit, Stufen Möglichkeiten, 3 Stufen 3 Möglichkeiten, Stufen 5 Möglichkeiten,...). Schreiben Sie ein Programm, welches Ihnen rekursiv die Anzahl der Möglichkeiten berechnet, eine Treppe T mit n Stufen zu erklimmen: { n für n < 3 T n = T (n 1) + T (n ) für n 3 Berechnen Sie dann die Anzahl der Möglichkeiten für n=5. Wieso und wie müssen Sie ihr Programm modifizieren, damit dieses auch die Anzahl der Möglichkeiten für n=768 (Ulmer Münster) und n=1860 (Empire State Building) berechnen kann? Tipp: Bei der Treppe zur Physik-Bibliothek (n=5) haben Sie Möglichkeiten, beim Ulmer Münster etwa 3 x Möglichkeiten und beim Empire State Building immerhin etwa 37 x Möglichkeiten. (rekursiv) 1 # include <stdio.h> 3 int treppe ( int ); 5 int main ( void ) 6 { 7 int stufen ; 8 9 printf ("\ n\ nanzahl der Stufen?: "); 10 scanf ("% d", & stufen ); 11 printf (" Bei % d Stufen haben Sie % d Moeglichkeiten \ n", 1 stufen, treppe ( stufen )); 13 } 1 15 int treppe ( int stufen ) 16 { 17 if( stufen <= ) 18 return stufen ; 19 else 0 return treppe ( stufen -1) + treppe ( stufen - ); 1 } (additiv) 1 # include <stdio.h> 3 void treppe ( int ); 5 int main ( void ) 6 { 7 int stufen ; 8 9 printf ("\ n\ nanzahl der Stufen?: "); 10 scanf ("% d", & stufen ); 11 printf (" Bei % d Stufen haben Sie ", stufen ); 1 treppe ( stufen ); 13 printf (" Moeglichkeiten "); 1 } void treppe ( int stufen ) 17 {

24 18 int letztes [1000], vletztes [1000], ergebnis [ 1000]; 19 int result =0, carry =0; 0 int z, index, lastindex =999, treffer =0; 1 for (z =0; z <1000; z ++) 3 vletztes [z]= letztes [z]= ergebnis [z ]=0; 5 letztes [0]=; 6 vletztes [ 0] =1; 7 8 if( stufen < 3) 9 ergebnis [0] = stufen ; while ( stufen -- > ) 3 { 33 for (z =0; z <1000; z ++) 3 { 35 result = vletztes [ z] + letztes [ z] + carry ; 36 if( result >= 10) 37 { 38 ergebnis [ z] = result - 10; 39 carry = 1; 0 } 1 else { 3 ergebnis [ z] = result ; carry = 0; 5 } 6 } 7 8 for (z =0; z <1000; z ++) 9 { 50 vletztes [z] = letztes [z]; 51 letztes [z] = ergebnis [z]; 5 } 53 } 5 55 while ( treffer!= 1) 56 if ( ergebnis [ lastindex ] == 0) 57 lastindex - -; 58 else 59 treffer = 1; 60 index = lastindex ; 61 while ( index >= 0) 6 { 63 if ( index!= 0 && index % 3 == 0) 6 printf ("% d.", ergebnis [ index - -]); 65 else 66 printf ("% d", ergebnis [ index - -]); 67 } 68 if ( lastindex >= 9) 69 printf (" (=%d,% de%d)", ergebnis [ lastindex ], 70 ergebnis [ lastindex - 1], 71 lastindex ); 7 }

25 Aufgabe 8 (fakultativ) Zur Berechnung der Wurzel einer Zahl gibt es ein rekursives Verfahren. Die Rekursionsformel lautet: { [ ] 1 x w(n 1, x) + für n 1 w(n, x) = w(n 1,x) 1 für n = 0 Schreiben Sie eine Funktion double wurzel(int n, double x), die rekursiv die Wurzel einer eingegebenen Zahl x berechnet. Die Zahl n gibt die Rekursionstiefe an. Vergleichen Sie das Ergebnis mit dem exakten Wert. 1 # include <stdio.h> # include <math.h> 3 double wurzel ( int n, double x) 5 { 6 if ( n ==0) return 1; 7 else return 0.5*( wurzel (n -1, x)+x/ wurzel (n -1, x )); 8 } 9 10 int main ( void ) 11 { 1 double x; 13 int n; 1 15 printf (" Zahl eingeben : "); 16 scanf ("% lf", &x); 17 printf (" Anzahl der Rekursionen : "); 18 scanf ("% d", &n); 19 printf (" Die Wurzel von %f ist etwa %1.1f, exakt %1.1 f\n", 0 x, wurzel (n, x), sqrt (x )); 1 }

26 Aufgabe 9 Man berechne für kleine ganze Zahlen m, n (m 3, n 8) die Ackermann-Funktion a(m, n): n + 1 falls m = 0 a(m, n) := a(m 1, 1) falls n = 0 a(m 1, a(m, n 1)) sonst Tipp: Zum Testen Ihres Programms können Sie a(1, 1) = 3, a(3, 3) = 61, a(3, 8) = 05 benutzen. 3 using namespace std ; 5 int acker ( int m, int n); 6 7 int main ( void ) 8 { 9 int a,b; cout << " Zahlen : "; 1 cin >> a >> b; 13 cout << "a(" << a << ", " << b << ") = " 1 << acker (a,b) << endl ; 15 } int acker ( int m, int n) 18 { 19 if (m ==0) return n +1; 0 else 1 { if (n ==0) return acker (m -1,1); 3 else return acker (m -1, acker (m,n -1)); } 5 }

27 Aufgabe 30 Erstellen Sie ein Programm mit einer Struktur namens person, die einige Daten (Name, Vorname, Alter, Schuhgröße,...) einer Person speichert. Eine Funktion eingabe soll einen Datensatz einlesen und zurückliefern. Das Programm soll dann mithilfe von eingabe die Daten zweier Personen aufnehmen und den Namen des Älteren ausgeben. 3 using namespace std ; 5 typedef struct 6 { 7 char name [0], vname [0]; 8 int alter, schuhgroesse ; 9 } person ; person einlesen ( void ); 1 13 int main ( void ) 1 { 15 person p1, p; p1 = einlesen (); 18 cout << endl ; 19 p = einlesen (); 0 1 if (p1. alter > p. alter ) cout << p1. vname << " " << p1. name 3 << " ist der aeltere." << endl ; else 5 cout << p. vname << " " << p. name 6 << " koennte der aeltere sein." << endl ; 7 } 8 9 person einlesen ( void ) 30 { 31 person p; 3 33 cout << " Vorname : "; 3 cin >> p. vname ; 35 cout << " Name : "; 36 cin >> p. name ; 37 cout << " Alter : "; 38 cin >> p. alter ; 39 cout << " Schuhgroesse : "; 0 cin >> p. schuhgroesse ; 1 return p; 3 }

28 Aufgabe 31 Im Sript finden Sie ein Beispielprogramm zur Dateibearbeitung. Versuchen Sie, es zu verstehen, und experimentieren Sie damit. Hier hilft nun wirklich nur noch lesen, verstehen und abtippen! Für die Lösungen der Aufgaben 3 3 werden die folgenden Textdateien im jeweils aktuellen Verzeichnis vorausgesetzt: demo.txt 1 Hallo, das ist eine Testdatei! Hier steht die zweite Zeile. 3 Und schon ist s wieder zu Ende... text.txt 1 In diesem Text sind viel zu viele Leerzeichen 3 vorhanden, die entfernt werden muessen. Aufgabe 3 Erstellen Sie ein Programm, das einen Text aus einer Datei einliest und auf dem Bildschirm ausgibt, wobei Groß- in Kleinbuchstaben verwandelt werden sollen und umgekehrt. # include < fstream > 3 using namespace std ; 5 6 int main ( void ) 7 { 8 char c; 9 ifstream datei ; datei. open (" demo. txt ", ios :: in ); 1 if (! datei ) 13 { 1 cout << " Datei nicht gefunden!\ n"; 15 return 1; 16 } while ( datei. get (c)) 19 { 0 if (c >= a && c <= z ) c=c+( A - a ); 1 else if (c >= A && c <= Z ) c=c -( A - a ); cout << c; 3 } datei. close (); 5 }

29 Aufgabe 33 Schreiben Sie ein Programm, das einen Text aus einer Datei und einen Buchstaben einliest und ermittelt, wie oft der Buchstabe in dem Text vorkommt. # include < fstream > 3 using namespace std ; 5 6 int main ( void ) 7 { 8 char c, buchst ; 9 int anzahl =0; 10 ifstream datei ; 11 1 cout << " Zeichen eingeben : "; 13 cin >> buchst ; 1 15 cout << " Der Text \n"; datei. open (" demo. txt ", ios :: in ); 18 while ( datei. get (c)) 19 { 0 if (c== buchst ) anzahl ++; 1 cout << c; } 3 datei. close (); cout << "\ nenthaelt " << anzahl << " mal das Zeichen " 5 << buchst << endl ; 6 } Aufgabe 3 Schreiben Sie ein Programm, das aus einem Text in einer Datei alle mehrfach vorkommenden Leerzeichen entfernt und den Text auf dem Bildschirm ausgibt. # include < fstream > 3 using namespace std ; 5 6 int main ( void ) 7 { 8 char c, voriges = a ; 9 ifstream datei ; datei. open (" text. txt ", ios :: in ); 1 13 while ( datei. get (c)) 1 { 15 if (!( voriges == && c== )) 16 cout << c; 17 voriges =c; 18 } 19 datei. close (); 0 }

30 Aufgabe 35 Es ist feld ein int-array und p ein int-zeiger. Welche der folgenden Zuweisungen sind zulässig, welche nicht? (Ggf. ausprobieren!) p = feld; feld = p; p = &feld[3]; feld[] = p[5]; Alle Zuweisungen sind zulässig ausser der Zweiten da feld eine Zeigerkonstante ist und die Adresse der Elemente enthält, welche durch die Definition von feld reserviert wurden. Diese Adresse kann nicht geändert werden. Der Zeigervariablen p dürfen beliebige Adressen zugewiesen werden. Die erste und dritte Zuweisung sind daher korrekt, weil auch die Ausdrücke zur Berechnung dieser Adressen korrekt sind. In der letzten Zuweisung wird ein einzelner int-wert (evtl. unbekannter Herkunft, je nach Vorgeschichte) in ein Element von feld gespeichert, was formal richtig ist. Aufgabe 36 Es seien p1 und p zwei int-zeiger und i eine int-variable. Welche Zuweisungen wird der Compiler akzeptieren, welche nicht? (Ggf. ausprobieren!) p1 = p + i; p1 = i + p; i = p1 * p; i = p1 - p; i = p1 + p; Die erste Zuweisung wird vom Compiler akzeptiert. Hier wird zu einer Adresse eine ganze Zahl addiert. Das Resultat ist ein um einen konstanten Wert (i*sizeof(int)) verschobener Zeiger. Die meisten Compiler akzeptieren auch die zweite Zuweisung, da das Vertauschen der Operanden bei + durchaus erlaubt ist. Die dritte Zuweisung ist völliger Blödsinn. Bei der vierten Zuweisung wird die Entfernung der Elemente (in sizeof(int)) ermittelt, auf die die Zeigervariablen p1 und p zeigen. Die letzte Zuweisung ist wiederum keine sinnvolle Operation.

31 Aufgabe 37 Schreiben Sie ein bestehendes Programm (z.b. Lösung der quadratischen Gleichung) so um, dass die Benutzereingabe von einer Funktion eingabe erledigt wird, der man die Variablen übergeben muss (Pointer!). # include <math.h> 3 using namespace std ; 5 6 void eingabe ( double *, double *, double *); 7 8 int main ( void ) 9 { 10 double a,b,c,d; 11 1 eingabe (&a, &b, &c); 13 D=b*b -* a*c; 1 if (D ==0) cout << "x = " << -b /(* a) << endl ; 15 if (D >0) cout << "x = " << (-b+ sqrt (D ))/(* a) 16 << " und x = " << (-b- sqrt (D ))/(* a) << endl ; 17 if (D <0) cout << "x = " << -b /(* a) << "+ -" 18 << sqrt (-D )/(* a) << "*i" << endl ; 19 } 0 1 void eingabe ( double * a, double * b, double * c) { 3 cout << " Die Parameter a, b und c eingeben : "; cin >> *a >> *b >> *c; 5 }

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Winter 2009/2010, 18. Februar 2010 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name:

Mehr

Kurzeinführung in C++

Kurzeinführung in C++ Kurzeinführung in C++ Johannes J. Schneider 27.10.2004 1 Einleitung C++ ist eine heutzutage in vielen Bereichen sehr häufig verwendete Programmiersprache, die auf der Programmiersprache C aufsetzt, aber

Mehr

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

Mehr

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **

Mehr

L6. Operatoren und Ausdrücke

L6. Operatoren und Ausdrücke L6. Operatoren und Ausdrücke 1. Arithmetische Operatoren: +, -, *, /, %, --, ++ 2. Zuweisung-Operatoren: =, +=, -=, *=, /= 3. Vergleichsoperatoren: =, ==,!= 4. Logische Operatoren:!, &&, 5.

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Anweisungsblöcke (dazu zählen auch Programme) werden in geschweifte Klammern eingeschlossen.

Anweisungsblöcke (dazu zählen auch Programme) werden in geschweifte Klammern eingeschlossen. Programmierung in C++ Seite: 1 Beispielprogramm 1: Programmierung in C++ int main() int hoehe = 3; int grundseite = 5; double flaeche = hoehe*grundseite*0.5; cout

Mehr

Übungspaket 19 Programmieren eigener Funktionen

Übungspaket 19 Programmieren eigener Funktionen Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame

Mehr

FB Informatik. Fehler. Testplan

FB Informatik. Fehler. Testplan Fehler #include int i,n,summe; int summe (int); cout 0) cin>n; i=summme(n); cout

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

DAP2-Programmierpraktikum Einführung in C++ (Teil 1) DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume

Mehr

Grundlagen der Informatik - 6. Praktikum

Grundlagen der Informatik - 6. Praktikum Grundlagen der Informatik - 6. Praktikum In diesem Praktikum soll es neben der Anwendung von Funktionsdefinitionen auch um einfache Prinzipien der verteilten Quelltext-Strukturierung gehen. Diese spielt

Mehr

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff Programmieren in C Operatoren, Variablen und deren Sichtbarkeit Prof. Dr. Nikolaus Wulff Auswertung von Ausdrücken Was passiert wenn ein Ausdruck wie z. B. int y,x=2; y = ++x * x++; im Computer abgearbeitet

Mehr

Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber

Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber 1) Welche Antworten zur Operatorüberladung sind richtig? (1) a) C++ - Operatoren können zusammen mit Objekten funktionieren b) C++ - Operatoren wird

Mehr

C++-Zusammenfassung. H. Schaudt. August 18, 2005

C++-Zusammenfassung. H. Schaudt. August 18, 2005 C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

Z:\Informatik 3\Labor_GINF3\Labor_01-Sonstiges.txt

Z:\Informatik 3\Labor_GINF3\Labor_01-Sonstiges.txt Z:\Informatik 3\Labor_GINF3\Labor_0-Sonstiges.txt Laborbericht Nils Gemba Informatik 3 - OOP Labor 0 Vorbereitungszeit: ca. 4 Stunden Durchführungszeit: ca. 3 Stunden z:\informatik 3\Labor_GINF3\Labor_0\Labor_0.0\main.cpp

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Grundlagen Programmierung

Grundlagen Programmierung 1. Aufgabe (Spielen mit Objekten) Gegeben sei der auch von der Veranstaltungsseite erhältliche Programmcode auf der rechten Seite, der im Detail zuerst nicht verstanden werden muss. a) Erzeugen Sie sich

Mehr

1.4.12 Sin-Funktion vgl. Cos-Funktion

1.4.12 Sin-Funktion vgl. Cos-Funktion .4. Sgn-Funktion Informatik. Semester 36 36.4.2 Sin-Funktion vgl. Cos-Funktion Informatik. Semester 37 37 .4.3 Sqr-Funktion Informatik. Semester 38 38.4.4 Tan-Funktion Informatik. Semester 39 39 .5 Konstanten

Mehr

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 12: Numerik der Standardbibliothek

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 12: Numerik der Standardbibliothek Computergrundkenntnisse und Programmieren, WS 07/08, Übung 12: Numerik der Standardbibliothek Bei der Behandlung von physikalischen Problemen spielen numerische Rechnungen eine wichtige Rolle. Die C ++

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16 Kapitel 5 Arithmetische Operatoren Seite 1 von 16 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff Programmieren in C Felder, Schleifen und Fließkommaarithmetik Prof. Dr. Nikolaus Wulff Addition von Zahlen 1 2 3 4 5 #include int main() { int x,y,z,sum; x = 1; y = 2; z = 4; sum = x + y + z;

Mehr

Programmentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur 20.02.2004

Programmentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur 20.02.2004 Programmentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur 20.02.2004 Name : Vorname : Matrikelnummer : Hauptfach : Nebenfach/Fachrichtung Hinweise : 1. Überprüfen

Mehr

C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek

C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek C++ - Funktionen und mehr Kerstin Gößner und Ralf Wondratschek Übersicht Deklaration, Definition und Initialisierung Variablen- und Konstantendeklaration Funktionsaufrufe und rückgabewerte Technische Grundlage

Mehr

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1 Sortieren durch Einfügen Prof. Dr. W. Kowalk Sortieren durch Einfügen 1 Schon wieder aufräumen Schon wieder Aufräumen, dabei habe ich doch erst neulich man findet alles schneller wieder Bücher auf Regal

Mehr

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

HEUTE. Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: Was ist Effizienz? vollständige Induktion

HEUTE. Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: Was ist Effizienz? vollständige Induktion 17.11.04 1 HEUTE 17.11.04 3 Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: was ist Effizienz? vollständige Induktion JAVA: Arrays die for -Schleife die Sprunganweisungen break und continue

Mehr

C/C++ Programmierung

C/C++ Programmierung 1 C/C++ Programmierung Verbunde, Reihungen, Zeiger Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Typen 6.2.5 Primitive

Mehr

Java programmieren: Konsolen-Programme

Java programmieren: Konsolen-Programme Java programmieren: Es war einmal vor langer Zeit in einer weit entfernten Galaxis ok, das ist etwas übertrieben. In den Anfängen der Personal Computer in den 1980er sahen Computer noch etwa so aus: Diese

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Informationsverarbeitung

Informationsverarbeitung 1/19 Informationsverarbeitung Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2011/2012 Vorlesung 13 (Download Quelldateien)

Mehr

C/C++-Programmierung

C/C++-Programmierung 1 C/C++-Programmierung Aufzählungen, Zeichenketten Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Aufzählungen enumerations,

Mehr

Erste Schritte mit HG 2

Erste Schritte mit HG 2 Erste Schritte mit HG 2 Malte Ried FH-Gießen Version: 1.0 21. November 2003 Inhaltsverzeichnis 1 Einführung 2 2 Allgemeines 2 2.1 Koordinaten...................................... 2 2.2 Farben.........................................

Mehr

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Algorithmen und deren Programmierung Prof. Dr. Nikolaus Wulff Definition Algorithmus Ein Algorithmus ist eine präzise formulierte Handlungsanweisung zur Lösung einer gleichartigen

Mehr

Einführung in das Objektorientierte Programmieren mit C++

Einführung in das Objektorientierte Programmieren mit C++ BEREICH DATENTECHNIK I CP 500 00 TH 02 Einführung in das Objektorientierte Programmieren mit C++ Kapitel 5 5. Überladen von Operatoren 5.1. Allgemeines 5.2. Operator-Funktionen 5.3. Zuweisungs-Operator

Mehr

Logische Verknüpfungen. while-schleifen. Zahlendarstellung auf dem Computer. Formatierung von Zahlen in MATLAB.

Logische Verknüpfungen. while-schleifen. Zahlendarstellung auf dem Computer. Formatierung von Zahlen in MATLAB. Logische Verknüpfungen. while-schleifen. Zahlarstellung auf dem Computer. Formatierung von Zahlen in MATLAB. Logische Verknüpfungen In der letzten Sitzung haben wir kennengelernt, wie wir Zahlen mit Operationen

Mehr

1 Verarbeitung eines Feldes aus Objekten einer Struktur

1 Verarbeitung eines Feldes aus Objekten einer Struktur C++ für Anfänger des Programmierens, Prüfungen des 1.Semesters Rieckeheer GSO-Hochschule Nürnberg März 2009-1- 1. Semester Informatik/Wirtschaftsinformatik Leistungsnachweis Wintersemester 2007/08 Programmieren

Mehr

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,

Mehr

1. Das erste Programm

1. Das erste Programm www.c-programme.de Stefan Thiemert Kapitel 1 - Seite 1 von 8 1. Das erste Programm 1. 1. Analyse Bevor Du mit dem Programmieren beginnst, solltest Du erst einmal verstanden haben, was das Programm überhaupt

Mehr

Der C++ Crashkurs v1.0

Der C++ Crashkurs v1.0 Der C++ Crashkurs v1.0 Daniel Stöckel, M. Sc. October 14, 2013 1 Grundlegendes 1.1 Das erste Programm Wir beginnen mit einem einfachen Hello world Programm. Listing 1: hello world.cpp // Einbinden der

Mehr

Objective-C CheatSheet

Objective-C CheatSheet App-Templates: Erstellt automatisch einen Navigation Controller mit editierbarem UITableView und DetailView, der bei Klick auf einzelne UITableViewCell angezeigt wird. Kreiert einen GLKitViewController

Mehr

Beispiel für eine rekursive Funktion

Beispiel für eine rekursive Funktion Rekursive Funktionen Werden verwendet, wenn ein Problem in Teilprobleme aufgespalten werden kann, von denen eines sofort lösbar ist und die weiteren eine etwas vereinfachte Form des Originalproblems sind.

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling

Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling Input / Output in C, C++ Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling Page 1 Ausgaben in C,C++ - generell Fuer C basierte Ausgaben:

Mehr

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013 Programmiervorkurs Wintersemester 2012/2013 Organisation: Steffen Gebert, Alexander Wolff Tutoren: Jürgen Zöller, Jonathan Stoll Kontakt (für Organisatorisches, Fehler auf Folien...): Steffen Gebert steffen.gebert@informatik.uni-wuerzburg.de

Mehr

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4 Arbeiten mit s Eine effiziente Programmierung mit PHP ohne seine s ist kaum vorstellbar. Diese Datenstruktur muss man verstanden haben, sonst brauchen wir mit weitergehenden Programmiertechniken wie der

Mehr

Programmierung und Angewandte Mathematik

Programmierung und Angewandte Mathematik Programmierung und Angewandte Mathematik Einleitung von Visual Studio C++ SS 2012 Miscrosoft Visual studio C++ Express unterladen 2 weiter Gehen Sie auf die im Rote gekreiste Seite siehe Oben bzw. auf

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian

Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian Einführung in die Programmierung Arvid Terzibaschian 1 Konstanten 2 Motivation Unveränderliche, wichtige Werte mathematische Konstanten z.b. PI String-Konstanten wie z.b. häufige statische Meldungen mögliche

Mehr

Definition: Die Sprache C++ ist die Menge aller korrekter C++-Programme. Theoretischer Aspekt. // mile2km.cpp: Umwandlung von Meilen in Kilometer

Definition: Die Sprache C++ ist die Menge aller korrekter C++-Programme. Theoretischer Aspekt. // mile2km.cpp: Umwandlung von Meilen in Kilometer Programmierkurs C++ 1. Überblick über C++ Seite 1 1 Überblick über C++ Definition: Die Sprache C++ ist die Menge aller korrekter C++-Programme. Theoretischer Aspekt 1.1 Elemente der Sprache C++ // mile2km.cpp:

Mehr

Hello world. Sebastian Dyroff. 21. September 2009

Hello world. Sebastian Dyroff. 21. September 2009 Hello world Sebastian Dyroff 21. September 2009 1 / 35 Inhaltsverzeichnis Organisatorisches Hello World Typen und Operatoren Programmfluss Weitere Konstrukte Nützliche Tipps 2 / 35 Inhalte dieser Veranstaltung

Mehr

Teilbarkeit von natürlichen Zahlen

Teilbarkeit von natürlichen Zahlen Teilbarkeit von natürlichen Zahlen Teilbarkeitsregeln: Die Teilbarkeitsregeln beruhen alle darauf, dass man von einer Zahl einen grossen Teil wegschneiden kann, von dem man weiss, dass er sicher durch

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

C vs. C++ Sebastian Meyer. Proseminar C - Grundlagen und Konzepte. Universität Hamburg

C vs. C++ Sebastian Meyer. Proseminar C - Grundlagen und Konzepte. Universität Hamburg C vs. C++ Sebastian Meyer Universität Hamburg Proseminar C - Grundlagen und Konzepte 2013 1 / 31 Gliederung 1 Einführung 2 Vergleich der Spracheigenschaften 3 Neue Sprachelemente in C++ 4 Fazit 5 Zusammenfassung

Mehr

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans... Erste Schritte Dieser Teil der Veranstaltung gibt einen ersten Eindruck der Programmierung mit C++. Es wird ein erstes Gefühl von Programmiersprachen vermittelt, ohne auf die gezeigten Bestandteile genau

Mehr

DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2)

DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2) DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2) Aufgabe 3 Bankkonto Schreiben Sie eine Klasse, die ein Bankkonto realisiert. Attribute für das Bankkonto sind der Name und Vorname des Kontoinhabers,

Mehr

Sortieren. Eine Testmenge erstellen

Sortieren. Eine Testmenge erstellen Sortieren Eine der wohl häufigsten Aufgaben für Computer ist das Sortieren, mit dem wir uns in diesem Abschnitt eingeher beschäftigen wollen. Unser Ziel ist die Entwicklung eines möglichst effizienten

Mehr

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

C++ - Operatoren. Eigene Klassen mit neuen Funktionen C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 9c: Datenbankapplikationen Architektur einer Web-Applikation mit Servlets, JSPs und JavaBeans

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die

Mehr

REGIONALES GYMNASIUM Maturitätsprüfungen 2011. 4242 Laufen 4. MAR

REGIONALES GYMNASIUM Maturitätsprüfungen 2011. 4242 Laufen 4. MAR REGIONALES GYMNASIUM Maturitätsprüfungen 2011 LAUFENTAL-THIERSTEIN Ergänzungsfach Informatik 4242 Laufen 4. MAR Fachlehrperson: Dauer: Urs Meyer 4 Stunden Hilfsmittel: Aufgaben 1-6 Taschenrechner (TI 30)

Mehr

Numerisches Programmieren, Übungen

Numerisches Programmieren, Übungen Technische Universität München SoSe 0 Institut für Informatik Prof Dr Thomas Huckle Dipl-Math Jürgen Bräckle Nikola Tchipev, MSc Numerisches Programmieren, Übungen Musterlösung Übungsblatt: Zahlendarstellung,

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

2.4 Das erste C++-Programm *

2.4 Das erste C++-Programm * 2.4 Das erste C++-Programm * 11 2.4 Das erste C++-Programm * Den besten Lernerfolg erzielen Sie, wenn Sie alle Beispiele dieses Buchs selbst nachvollziehen. Sie können hierzu einen Compiler verwenden,

Mehr

1. Grundlegende Konzepte der Informatik

1. Grundlegende Konzepte der Informatik 1. Grundlegende Konzepte der Informatik Inhalt Algorithmen Darstellung von Algorithmen mit Programmablaufplänen Beispiele für Algorithmen Aussagenlogik Zahlensysteme Kodierung Peter Sobe 1 Algorithmen

Mehr

Funktionen und Parameter

Funktionen und Parameter Funktionen in C++ Funktionen und Parameter Wie in Java: Parameter sind lokale Variablen Argumente werden bei Aufruf zugewiesen Extras: Zeiger-Parameter für alle Typen: als Rückgabewerte um große Kopien

Mehr

Eine kurze Einführung in die Programmierung mit C++

Eine kurze Einführung in die Programmierung mit C++ Eine kurze Einführung in die Programmierung mit C++ Eine Starthilfe für den Kurs Informatik I D-ITET Teil 1: Grundlegende Sprachelemente Vorwort C++ ist eine komplexe und praxisorientierte Sprache mit

Mehr

Java Einführung Operatoren Kapitel 2 und 3

Java Einführung Operatoren Kapitel 2 und 3 Java Einführung Operatoren Kapitel 2 und 3 Inhalt dieser Einheit Operatoren (unär, binär, ternär) Rangfolge der Operatoren Zuweisungsoperatoren Vergleichsoperatoren Logische Operatoren 2 Operatoren Abhängig

Mehr

Technische Infor matik 2 C/C++-Kurs. Datenabstraktion (Klassen) 2005 AG Rechner netze 4.1

Technische Infor matik 2 C/C++-Kurs. Datenabstraktion (Klassen) 2005 AG Rechner netze 4.1 Technische Infor matik 2 C/C++-Kurs Datenabstraktion (Klassen) 2005 AG Rechner netze 4.1 Overloading Überladene Funktionen Auswahl einer Funktion anhand ihrer Signatur Signatur : Name + Parameter Rückgabe-Wer

Mehr

Sprachbeschreibung und Erweiterung

Sprachbeschreibung und Erweiterung Sprachbeschreibung und Erweiterung Worte, Sprachen, reguläre Ausdrücke, Automaten, BNF, Grammatik, Syntax- Diagramme, Spracherweiterungen do, for, break, switch Formale Beschreibung von Programmiersprachen

Mehr

C++ Programmierung. Uwe Naumann. LuFG Informatik 12, RWTH Aachen University, Germany

C++ Programmierung. Uwe Naumann. LuFG Informatik 12, RWTH Aachen University, Germany C++ Programmierung Uwe Naumann LuFG Informatik 12, RWTH Aachen University, Germany Leave me alone world... Hauptprogramm int main(); return 0; Ausgabe auf Bildschrim #include std :: cout

Mehr

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean 01.11.05 1 Noch für heute: 01.11.05 3 primitie Datentypen in JAVA Primitie Datentypen Pseudocode Name Speichergröße Wertgrenzen boolean 1 Byte false true char 2 Byte 0 65535 byte 1 Byte 128 127 short 2

Mehr

Suchen und Sortieren (Die klassischen Algorithmen)

Suchen und Sortieren (Die klassischen Algorithmen) Suchen und Sortieren (Die klassischen Algorithmen) Lineare Suche und Binäre Suche (Vorbedingung und Komplexität) Sortieralgorithmen (allgemein) Direkte Sortierverfahren (einfach aber langsam) Schnelle

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

Mehr

Übung 4: Schreiben eines Shell-Skripts

Übung 4: Schreiben eines Shell-Skripts Aufgabenteil 1 Ziel der Übung Übung 4: Schreiben eines Shell-Skripts Anhand eines einfachen Linux-Skripts sollen die Grundlagen der Shell-Programmierung vermittelt werden. Das für die Bash-Shell zu erstellende

Mehr

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Compiler: Vom Code zum Maschinen-Code C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Prof. Dr. Jan Dünnweber Zusammenhänge: C und Assembler Hochsprachen

Mehr

Klausur zur Vorlesung Grundlagen der C++-Programmierung

Klausur zur Vorlesung Grundlagen der C++-Programmierung Institut für Simulation und Graphik Magdeburg, 15.7.2013 Dr. Christian Rössl Klausur zur Vorlesung Grundlagen der C++-Programmierung Name, Vorname Studiengang Matrikelnummer Zusatzblätter Unterschriften

Mehr

Einführung in C++ Operatoren überladen (Klassen)

Einführung in C++ Operatoren überladen (Klassen) Einführung in C++ Operatoren überladen (Klassen) Operatoren überladen Die Überladung von Operatoren ermöglicht es, vorhandene Operatoren (+,-,...) auch auf Objekte von Klassen anzuwenden. Die meisten der

Mehr

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens Mathematische Grundlagen der Kryptographie 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe Stefan Brandstädter Jennifer Karstens 18. Januar 2005 Inhaltsverzeichnis 1 Ganze Zahlen 1 1.1 Grundlagen............................

Mehr

Lua - Erste Schritte in der Programmierung

Lua - Erste Schritte in der Programmierung Lua - Erste Schritte in der Programmierung Knut Lickert 7. März 2007 Dieser Text zeigt einige einfache Lua-Anweisungen und welchen Effekt sie haben. Weitere Informationen oder eine aktuelle Version dieses

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Christian-Albrechts-Universität zu Kiel CAU 2-1 Datentypen und Formate Mit der Festlegung des Datentyps wird die Art bestimmt, mit der der Computer die Informationen

Mehr

Numerisches Programmieren

Numerisches Programmieren Technische Universität München SS 2012 Institut für Informatik Prof Dr Thomas Huckle Dipl-Inf Christoph Riesinger Dipl-Math Alexander Breuer Dipl-Math Dipl-Inf Jürgen Bräckle Dr-Ing Markus Kowarschik Numerisches

Mehr

Computerarithmetik ( )

Computerarithmetik ( ) Anhang A Computerarithmetik ( ) A.1 Zahlendarstellung im Rechner und Computerarithmetik Prinzipiell ist die Menge der im Computer darstellbaren Zahlen endlich. Wie groß diese Menge ist, hängt von der Rechnerarchitektur

Mehr

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Aufgaben: Ein Ausgabe Ein Rechner verwaltet nicht nur Daten, die während der Laufzeit des Programms erzeugt werden. Die meisten Programme greifen auf ältere Datenbestände zurück oder erzeugen für einen

Mehr

5 Zahlentypen und mathematische Funktionen in C

5 Zahlentypen und mathematische Funktionen in C 5 Zahlentypen und mathematische Funktionen in C Jörn Loviscach Versionsstand: 25. September 2014, 18:39 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html

Mehr

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse

Mehr

Überblick. Lineares Suchen

Überblick. Lineares Suchen Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität

Mehr

Aufbau von Programmen/Dateien

Aufbau von Programmen/Dateien Aufbau von Programmen/Dateien Typen von Dateien Header-Dateien (.h): enthalten Deklarationen (auch Signatur, Prototyp, Rumpf) von Funktionen, Variablen, Konstanten und in C++ auch Klassendefinitionen eines

Mehr

Kurzanleitung für die mobile Novell Messenger 3.0.1-App

Kurzanleitung für die mobile Novell Messenger 3.0.1-App Kurzanleitung für die mobile Novell Messenger 3.0.1-App Mai 2015 Novell Messenger 3.0.1 und höher ist für unterstützte ios-, Android- und BlackBerry-Mobilgeräte verfügbar. Da Sie an mehreren Standorten

Mehr

Sebastian Houben Intensivkurs C++ 1. Intensivkurs C++ 21. September 2015

Sebastian Houben Intensivkurs C++ 1. Intensivkurs C++ 21. September 2015 Sebastian Houben Intensivkurs C++ 1 Intensivkurs C++ 21. September 2015 Themen Sebastian Houben Intensivkurs C++ 2 Warum C++? Ziel dieses Kurses Voraussetzungen Verwandschaft zu C, Java und anderen Sprachen

Mehr

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Themen heute Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Besprechung des 3. Übungsblattes Aufgabe 3 Speicherplätze für Mikrocode-Anweisungen

Mehr