Kap 7. Funktionen und Arrays
|
|
- Bärbel Schulz
- vor 6 Jahren
- Abrufe
Transkript
1 Kap 7. Funktionen und Arrays
2 Elementare Algorithmen Allgemein Mathematik Text Eingabe ٧ Skalarprodukt wie Allgemein Ausgabe ٧ Länge ersetzen Summation Winkel Laenge Maximum ٧ Polynome berechnen ausschneiden Minimum ٧ Matrixoperationen aneinanderhängen Löschen Lineares Gl-System kopieren Einfügen Eigenwerte umwandeln Suchen Sortieren ٧ Mischen Dr. Norbert Spangler / Grundlagen der Informatik
3 7.1 Mathematische Funktionen Beispiel: Es soll der Winkel in Grad zwischen 2 Vektoren berechnet werden. x=(x 1,,x n ) y=(y 1,,y n ) Es gilt: cos( α) = ( x, y) x * y Erforderliche Funktionen: Skalarprodukt (x,y) Laenge x arccos sowie π zur Winkelumrechnung Dr. Norbert Spangler / Grundlagen der Informatik
4 Skalarprodukt ( x, y) = n i= 1 xi * yi double skalarprodukt(int n,double x[],double y[] ) double summe=0; for ( int i=0;i<n;i++) summe+=x[i]*y[i]; return summe; Dr. Norbert Spangler / Grundlagen der Informatik
5 Länge n x = x i= 1 2 i = ( x, x) double laenge(int n,double x[] ) double summe=0; for ( int i=0;i<n;i++) summe+=x[i]*x[i]; return sqrt(summe); Erforderlich: #include <cmath> double laenge(int n,double x[] ) double skalarprodukt(int,double [],double [] ); return sqrt( skalarprodukt(n,x,x) ); Dr. Norbert Spangler / Grundlagen der Informatik
6 Winkel double winkelgrad(int n,double x[],double y[] ) double summes=0,summex=0,summey=0; for ( int i=0;i<n;i++) summes+=x[i]*y[i]; summex+=x[i]*x[i]; summey+=y[i]*y[i]; double cosalpha=summes/sqrt(summex*summey); return 45*acos(cosalpha)/ arctan(1.0);//pi/4=atan(1); // Konstante M_PI bereitstellen #include <iostream> #define _USE_MATH_DEFINES #include <cmath> using namespace std; void main() cout<<m_pi<<endl; double winkelgrad(int n,double x[],double y[] ) double skalarprodukt(int,double [],double [] ); double laenge(int,double [] ); double cosalpha=skalarprodukt(n,x,y)/( laenge(n,x)*laenge(n,y) ); return 45*acos(cosalpha)/ arctan(1.0);//pi/4=atan(1.0); Dr. Norbert Spangler / Grundlagen der Informatik
7 Beispiel #include <iostream> using namespace std; void main() double winkelgrad(int n,double x[],double y[] ); double a[]=1,0,0,b[]=1,1,0; cout<<" Winkel in Grad : "<<winkelgrad(3,a,b)<<end Dr. Norbert Spangler / Grundlagen der Informatik
8 Polynome berechnen Mit dem Hornerschema lässt sich der Wert eines Polynoms an einer Stelle berechnen Algorithmus: Es sei Hornerschema p( x) p( x) = = ((( a a 0 x + a + a n 1 s=a[n] s=s*x+a[j] j=n-1 0 n 1 x + ) x + a a 2 x 2 n a n x n ) x +...) + a 0 double polynom(int n,double a[],double x) double s=a[n]; for ( int i=n-1;i>=0;i--) s=s*x+a[i]; return s; Dr. Norbert Spangler / Grundlagen der Informatik
9 7.2 Character-Arrays Aufgabenstellung Umwandlung von Zahlen, die in einem Character-Array gespeichert sind. nach int. Die Zahl sei ohne Vorzeichen. Beispiel character Array: '1' '7' '5' Ergebnis (int) 175 Anwendung: Eingabe mit Plausibilitätskontrolle. int char_to_int(n,a[]) Anmerkung: Umkehrung int_to_char als Übung Dr. Norbert Spangler / Grundlagen der Informatik
10 Ziffern als Zeichen Die Ziffern sind im ASCII-Code wie folgt gespeichert: Zeichen Hexadezimal Dezimal Plausibilitätskontrolle Ist ein Zeichen c eine Ziffer? 48<= c && c<=57 oder besser '0'<= c && c<='9' Dr. Norbert Spangler / Grundlagen der Informatik
11 Umwandlung der Zahl Character-Array c: c[0] c[1].. c[n-1] ergebnis = c[0]*10 n 1 + c[1]*10 n * c[ n 2] + c[ n 1] = ((( c[0]*10 + c[1])*10 + c[2])* *10 + c[ n 2]*10) + c[ n 1] Dies entspricht dem Hornerschema für Polynome Da jedoch c[i] ein Zeichen ist, muss anstelle von c[i] richtigerweise der Zahlenwert von c[i] als int genommen werden. -> Umwandlung Zeichen die Ziffern sind Dr. Norbert Spangler / Grundlagen der Informatik
12 Umwandlung einer Ziffer Zeichen Hexadezimal Dezimal Der dezimale Wert des Zeichens '0' ist 48 Der Wert von'1' ist 49 usw. Um den echten Wert der Ziffer zu erhalten muss man also 48 abziehen oder besser '0' d.h. wenn c eine Ziffer als Zeichen ist ergibt sich der echte Wert durch c 48 bzw. c '0' Im Hornerschema muss man also statt c[i] nun c[i]-'0' setzen. Dr. Norbert Spangler / Grundlagen der Informatik
13 char_to_int (atoi) void main() int char_to_int(int n, char c[] ); char c[]="23145"; int n=5; In C++ bereitgestellt cout<<" Ergebnis char: "<<char_to_int(5,c)<<endl; cout<<" Ergebnis int: "<<c<<endl; //cout<<" Ergebnis atoi: "<<atoi(c)<<endl; int char_to_int(int n, char c[] ) //Hornerschema int ergebnis= 0; for ( int i=0;i<n;i++) ergebnis=ergebnis*10+(c[i]-'0'); return ergebnis; Dr. Norbert Spangler / Grundlagen der Informatik
14 7.3 Suchen Eine der Standardaufgaben der Informatik und insbesondere für Arrays ist die Suche eines Elements in einer Liste. Gegeben ist also ein Array mit n Elementen und ein zu suchendes Element. Geliefert wird der Index, wo sich das zu suchende Element befindet (genauer: üblicherweise der erste Index, fall das Element mehrfach vorhanden ist). Wird das Element nicht gefunden wird als Ergebnis -1 geliefert. Es gibt zahlreiche Algorithmen. Dr. Norbert Spangler / Grundlagen der Informatik
15 Suchen Testplan (unabhängig vom ausgewählten Verfahren) Nr. Fall Element Anz. Array Ergebnis Sonderfall 1 Leeres Array Grenzfall 2. 1 Element/positiv Element/negativ Normalfall 4. Negative Suche Positive Suche Element gesucht 3 " mitteleres Element gesucht 7 " letztes Element gesucht 2 " mehrfach vorhandenes 4 " 2 Dr. Norbert Spangler / Grundlagen der Informatik
16 Sequenzielle Suche/Entwurf Idee: Die Elemente werden der Reihe nach überprüft sequenziellesuche(n,a,element) i von 0 bis n-1 ja a(i)=element nein return i return -1 Dr. Norbert Spangler / Grundlagen der Informatik
17 Sequenzielle Suche Programm void main() int a[7]=3,5,4,7,4,8,2; int sequenziellesuche(int n, int a[],int element); cout<<" Fall 1 : "<<setw(2)<<sequenziellesuche(0,a,1)<<endl; cout<<" Fall 2+ : "<<setw(2)<<sequenziellesuche(1,a,3)<<endl; cout<<" Fall 3- : "<<setw(2)<<sequenziellesuche(1,a,5)<<endl; cout<<" Fall 4- : "<<setw(2)<<sequenziellesuche(7,a,9)<<endl; cout<<" Fall 5.1: "<<setw(2)<<sequenziellesuche(7,a,3)<<endl; cout<<" Fall 5.2: "<<setw(2)<<sequenziellesuche(7,a,7)<<endl; cout<<" Fall 5.3: "<<setw(2)<<sequenziellesuche(7,a,2)<<endl; cout<<" Fall 5.4: "<<setw(2)<<sequenziellesuche(7,a,4)<<endl; int sequenziellesuche(int n, int a[],int element) for ( int i=0;i<n;i++) if ( a[i]==element ) return i;//gefunden return -1;//nicht gefunden Dr. Norbert Spangler / Grundlagen der Informatik
18 Binäre Suche Voraussetzung: Die Daten liegen in sortierter Reihenfolge vor Idee: Suchelement < mittleres Element: links weiter suchen Mitte wählen Suchelement >mittleres Element: rechts weiter suchen Ansonsten gefunden Dr. Norbert Spangler / Grundlagen der Informatik
19 Binäre Suche / Schleife int b_suche1(int v[], int abschnitt_anfang,, int abschnitt_ende, int suchwert) //Solange Abschnitt nicht leer while (abschnitt_anfang <= abschnitt_ende ) int mitte=(abschnitt_ende +abschnitt_anfang)/2; if ( suchwert<v[mitte] ) //nach links abschnitt_ende = mitte-1; else if ( suchwert > v[mitte] ) //nach rechts abschnitt_anfang = mitte+1; else //gefunden return mitte; return -1; Es wird im Indexbereich abschnitt_anfang. abschnitt_ende gesucht Dr. Norbert Spangler / Grundlagen der Informatik
20 Binäre Suche / Rekursion int b_suche2(int v[],int abschnitt_anfang,int abschnitt_ende,int suchwert) if ( abschnitt_anfang>abschnitt_ende ) return -1; else int mitte=(abschnitt_ende+abschnitt_anfang)/2; if ( suchwert<v[mitte] ) return b_suche(v,abschnitt_anfang,mitte-1,suchwert); else if ( suchwert > v[mitte] ) return b_suche(v,mitte+1,abschnitt_ende,suchwert); else return mitte; Dr. Norbert Spangler / Grundlagen der Informatik
21 Binäre Suche / Beispiel void main() int vec[10]=2,4,7,11,13,19,21,29,35,44,suchwert; int b_suche1(int[],int,int,int); int b_suche2(int[],int,int,int); cout <<" Suche nach:"; cin >>suchwert; while ( suchwert>0 ) cout <<" gesucht "<<suchwert<<" : "<<b_suche1(vec,0,9,suchwert)<<endl; cout <<" gesucht "<<suchwert<<" : "<<b_suche2(vec,0,9,suchwert)<<endl; cout <<"\nsuche nach:"; cin >>suchwert; Dr. Norbert Spangler / Grundlagen der Informatik
22 Vergleich der Suchverfahren Kriterium : Mittlere Anzahl der Vergleiche Annahme : alle Elemente werden mit der gleichen Wahrscheinlichkeit gesucht. Ergebnis (z.b. für 1024 Elemente) : Sequentielle Suche : Mittlere Zahl der Vergleiche = anzahl/2 = 512 Binäre Suche : Mittlere Zahl der Vergleiche = log 2 (anzahl) = 10 Dr. Norbert Spangler / Grundlagen der Informatik
23 7.4 Sortieren Wie das Suchen ist auch das Sortieren (von Arrays) eine Standardaufgabe der Informatik. Gegeben ist also ein Array mit n Elementen. Geliefert wird das sortierte Array. Auch hier gibt es zahlreiche Algorithmen. Bisher kennengelernt: Bubble-Sort (siehe Praktikum) Idee: Tausch benachbarter Elemente Testplan: vgl. Praktikum. Dr. Norbert Spangler / Grundlagen der Informatik
24 Sortieren durch Auswahl Idee des Verfahrens: Die Stelle des Maximums bestimmen und das Element mit dem letzten vertauscht Damit ist das größte Element am Ende. Das ganze wiederholen bis nur noch 1 Element übrig ist. Alternative mit Minimum. Version 1 Ohne Funktionen Unübersichtlicher im Vergleich zu Version2 Dr. Norbert Spangler / Grundlagen der Informatik
25 Sortieren durch Auswahl Version 2 Mit Funktion deutlich übersichtlicher Dr. Norbert Spangler / Grundlagen der Informatik
26 Maximumsuche int stellemaximum(int n, int a[]) if ( n<=0 ) return -1; else int index=0; for (int i=1;i<n;i++) if ( a[i]>a[index] ) index=i; return index; Erweiterung für n<=0 Testplan analog Suche Dr. Norbert Spangler / Grundlagen der Informatik
27 Sortieren durch Auswahl void sortiereauswahl(int n, int a[]) int stellemaximum(int,int[]);/prototyp for ( anzahl=n;anzahl>1;anzahl--) int indexmaximum=maximumsuche(anzahl,a); int h=a[anzahl-1];//tauschen an letzte Stelle a[anzahl-1]=a[indexmaximum]; a[indexmaximum]=h; //fuer Test: ausgabe(n,a); Dr. Norbert Spangler / Grundlagen der Informatik
28 Sortieren durch Auswahl/Beispiel void main() void sortiereauswahl(int n, int a[]); int x[]=8,1,5,11,3,4,5,2; sortiereauswahl(8, x);// mit Testausgabe Dr. Norbert Spangler / Grundlagen der Informatik
29 Quicksort/Idee Der Bereich anfang ende wird sortiert. Man betrachtet das Element a[anfang] und bildet die linkemenge der kleineren Elemente sowie die rechtemenge der größeren Elemente Dann setzt man a[anfang] an das Ende von linkemenge und wiederholt das Verfahren mit den beiden Mengen. Hat eine Menge nur 1 Element ist nichts zu sortieren. Dr. Norbert Spangler / Grundlagen der Informatik
30 Vergleich der Sortierverfahren Kriterien (mittlere) Anzahl der Vertauschungen/Umspeicherungen (mittlere) Anzahl der Vergleiche Vergleiche Umspeichern Auswahl n 2 /2 n Bubble n 2 /2 ¾* n 2 Quick 2n*ln(n) n*ln(n) Sortieren durch Mischen(Praktikum) wie Quicksort Dr. Norbert Spangler / Grundlagen der Informatik
31 Kombination (Hybrid-Verfahren) Der Quicksort (wie auch der SortMerge) ist nur für große Anzahlen wirklich schnell. Für kleinere ist der Bubblesort besser. Dies kann man für Hybridverfahren (Kombinationen) ausnutzen. Dr. Norbert Spangler / Grundlagen der Informatik
Klausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2014, 16. Juli 2014 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name: Matrikelnr.:
MehrProgrammieren I. Kapitel 7. Sortieren und Suchen
Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren
Mehr1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen...
Suchen und Sortieren In diesem Kapitel behandeln wir Algorithmen zum Suchen und Sortieren Inhalt 1. Grundlagen... 2 2. Sortieren... 6 1.1. Vertauschen... 13 1.2. Selektion... 16 1.3. Einfügen... 19 1.4.
MehrAbschnitt: 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
MehrSortierverfahren. Sortierverfahren für eindimensionale Arrays
Sortierverfahren Sortierverfahren Sortieren durch Einfügen Sortieren durch Auswählen Sortieren durch Vertauschen (Bubblesort) Quicksort Sortierverfahren für eindimensionale Arrays 1 Gegeben ist eine beliebige
MehrFallunterscheidung: if-statement
Fallunterscheidung: if-statement A E 1 E 2 V 1 V 2 Syntax: if ( ausdruck ) Semantik: else anweisungsfolge_1 anweisungsfolge_2 1. Der ausdruck wird bewertet 2. Ergibt die Bewertung einen Wert ungleich 0
MehrHochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe
Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang
MehrWintersemester 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.
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for
MehrSortierverfahren für Felder (Listen)
Sortierverfahren für Felder (Listen) Generell geht es um die Sortierung von Daten nach einem bestimmten Sortierschlüssel. Es ist auch möglich, daß verschiedene Daten denselben Sortierschlüssel haben. Es
MehrFB Informatik. Fehler. Testplan
Fehler #include int i,n,summe; int summe (int); cout 0) cin>n; i=summme(n); cout
MehrHochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe
Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten
MehrSuchen 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
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und
MehrInf 12 Aufgaben 14.02.2008
Inf 12 Aufgaben 14.02.2008 Übung 1 (6 Punkte) Ermitteln Sie eine mathematische Formel, die die Abhängigkeit der Suchzeit von der Anzahl der Zahlen N angibt und berechnen Sie mit Ihrer Formel die durchschnittliche
MehrSortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block
Inhalt: InsertionSort BubbleSort QuickSort Block M.: "Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren", Springer-Verlag 2007 InsertionSort I Das Problem unsortierte Daten in
MehrKlausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)
MehrÜ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
MehrKapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete
Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:
MehrWintersemester 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
MehrSortieren 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 Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse
Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12
MehrSteueranweisungen. Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 32
Steueranweisungen Bisher Programme mit Funktionen als einfache Folge von Befehlen Ablauf von Programmen darüber hinaus steuerbar über Bedingte Ausführung: Ausführung von Programmteilen (Befehlen oder Programmblöcken)
MehrBeispiel 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.
MehrInformatik I (D-MAVT)
Informatik I (D-MAVT) Übungsstunde 1 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich kurze Stunden mit Stoffueberblick -> mehr Zeit fuer Fragen This semester s menu... Imperative Programmierung
MehrFunktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang
MehrAlgorithmen & Datenstrukturen 1. Klausur
Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse
MehrEinführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät für Informatik Lehrstuhl
MehrÜbersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)
Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter
MehrWirtschaftsinformatik I
Wirtschaftsinformatik I - Tutorium 6/ 7 (April 2010) Zusatzinformationen - Lösungsvorschläge Wirtschaftsinformatik I Tutorium Jochen Daum (4.Semester BWL) Universität Mannheim Rechtshinweis: Diese Präsentation
MehrKlausur 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:
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrSuchen 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
MehrEinführung in die STL anhand eines ausgewählten Beispiels
Einführung in die STL anhand eines ausgewählten Beispiels Frank M. Thiesing http://home.t-online.de/home/ frank.thiesing/stl/stl-folien.pdf Inhalt Überblick über die C++ STL Container Iteratoren Algorithmen
MehrIdeen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou
Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou Suchen Welche Telefonnummer hat Kurt Mehlhorn? Wie schreibt man das Wort Equivalenz?
MehrWiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen
Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter
MehrZiel, 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
MehrInformatik II. PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri
Informatik II PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri KAUM JAVA Kaum Java Viel Zeit wird für Java-spezifisches Wissen benützt Wenig wichtig für Prüfung Letztjähriger Assistent
Mehr2. Semester, 2. Prüfung, Lösung
2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter
MehrKap 4. Befehle und Struktogramme
Kap 4. Befehle und Struktogramme 4.1 Elementare Befehle Befehlstypen Zuweisung (eigentlich kein Befehl) Verzweigung Wiederholung/Schleife Block (zusammengesetzt) Ein-/Ausgabe (eigentlich kein Befehl) Beispiel
MehrProgrammiertechnik II
Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen
MehrJava 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7
Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen
MehrReihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03
Reihungen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende Algorithmen auf Reihungen
Mehr3.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)
MehrDer 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
MehrEntscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?
Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum
MehrÜ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
MehrGrundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme
Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Teil 1: Wiederholung C Heutige Agenda Nutzereingaben verarbeiten Teil 2: Grundlagen in C++ Erstes
MehrLösungsvorschläge. zu den Aufgaben im Kapitel 4
Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere
Mehr1. Übung zu "Numerik partieller Differentialgleichungen"
1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
MehrFachhochschule Augsburg. Ingenieurinformatik SS05 Seite 1/8
Fachhochschule Augsburg Name: FB Maschinenbau Vorname: Ingenieurinformatik SS05 Seite 1/8 Prüfungstermin: 6.7.2005 Prüfer: Prof. Thalhofer Erstprüfer: Hilfsmittel: alle Unterlagen, keine Rechner Prüfungsdauer:
MehrÜ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
MehrIn der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch
Kapitel Matrizen in C++ In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch 1 const int n=10; 3 double a[n][n]; gegeben. Allerdings gibt es bei dieser Methode eine Reihe
MehrProgrammieren in C. -- ALLE Programmiersprachen sind HÄSSLICH -- Deklaration: erst der Datentyp, dann der Variablenname. Semikolon am Ende.
PROGRAMMIEREN IN C - EIN KURZÜBERBLICK 1 Programmieren in C -- ALLE Programmiersprachen sind HÄSSLICH -- Die einfachste Programmstruktur: main () -- was zu tun ist --- Vorgeordnete Definitionen: # include
Mehr1 Vom Problem zum Programm
Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren
MehrSortieren. 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
MehrEinführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann
Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann 1 Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann
MehrÜbung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse
Übung 05: Arrays Abgabetermin: xx.xx.xxxx Name: Name, Vorname Matrikelnummer: 0XXXXXX Gruppe: G1 (Prähofer) G2 (Wolfinger) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch
MehrAlgorithmen und Datenstrukturen Suchbaum
Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen
MehrSuchen in Listen und Hashtabellen
Kapitel 12: Suchen in Listen und Hashtabellen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Einleitung Lineare Suche Binäre Suche (in sortierten Listen) Hashverfahren
MehrEntwurf von Algorithmen - Kontrollstrukturen
Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer
MehrZusammenfassung des Handzettels für Programmieren in C
Zusammenfassung des Handzettels für Programmieren in C In der handschriftlichen Kopie werden mehr Abkürzungen verwendet. Alles Grün markierte dient zum lernen und wird nicht auf den Handzettel übertragen.
MehrInhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler
Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale
MehrProgrammiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm
Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i
MehrIngenieurinformatik Diplom-FA (Teil 2, C-Programmierung)
Hochschule München, FK 03 SS 2014 Ingenieurinformatik Diplom-FA (Teil 2, C-Programmierung) Zulassung geprüft: (Grundlagenteil) Die Prüfung ist nur dann gültig, wenn Sie die erforderliche Zulassungsvoraussetzung
MehrDatenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden
MehrEin erstes Java-Programm
Ein erstes Java-Programm public class Rechnung { public static void main (String [] arguments) { int x, y; x = 10; y = -1 + 23 * 33 + 3 * 7 * (5 + 6); System.out.print ("Das Resultat ist "); System.out.println
MehrLaufzeit und Komplexität
Laufzeit und Komplexität Laufzeit eines Algorithmus Benchmarking versus Analyse Abstraktion Rechenzeit, Anzahl Schritte Bester, Mittlerer, Schlechtester Fall Beispiel: Lineare Suche Komplexitätsklassen
MehrProgrammieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff
Programmieren in C Rekursive Funktionen Prof. Dr. Nikolaus Wulff Rekursive Funktionen Jede C Funktion besitzt ihren eigenen lokalen Satz an Variablen. Dies bietet ganze neue Möglichkeiten Funktionen zu
MehrInformatik Repetitorium SS 2009. Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692
Informatik Repetitorium SS 2009 Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692 Operatoren und Datentypen Beispiel: Anweisungen Variable int a float b int c a= a % (int) (++b-1/4) Vorher 36 3.5 c=b
Mehr1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert
Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume
MehrKlausur 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
MehrKurzeinfü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
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)
MehrC++-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:
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)
MehrInformatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-
Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik
MehrComputergrundkenntnisse 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 ++
MehrRechnerorganisation Tutorium Nr. 1
Rechnerorganisation Tutorium Nr. 1 Tutorium 3 Nicholas Kjär - uadnm@student.kit.edu 20. April 2015 INSTITUT FÜR INFORMATIK KIT University of the State of Baden-Wuerttemberg and National Laboratory of the
MehrNumerisches 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,
MehrModellierung und Programmierung
Modellierung und Programmierung Dr. Martin Riplinger 19.12.2012 IAM Institut für Angewandte Mathematik Funktionszeiger: Vorüberlegungen Funktionsaufrufe sind bis jetzt im Code mit Name explizit angegeben
MehrM. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung
M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales
Mehr13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems
13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13.1 Modellierung des Rucksackproblems 13.2 Lösung mit Greedy-Algorithmus 13.3 Lösung mit Backtracking 13.4 Lösung mit Dynamischer Programmierung
Mehr6. Programmentwicklung
6. Programmentwicklung Fertigungsprozess Qualitativ hochwertige Software ist ein Industrieprodukt -> Methoden der Industrie übertragen auf der Herstellprozess -> Herstellprozess gliedert sich in Phasen
MehrKurzeinführung in C. Johannes J. Schneider 27.10.2004
Kurzeinführung in C Johannes J. Schneider 27.10.2004 1 Einleitung C ist eine in vielen Bereichen sehr häufig verwendete Programmiersprache, die von der Betriebssystemprogrammierung bis hin zur Programmierung
MehrEinführung in die Informatik 1
Einführung in die Informatik 1 Datenorganisation und Datenstrukturen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00
MehrDefinition: Algorithmus
Definition: Algorithmus Ein Algorithmus ist eine allgemeine Rechenvorschrift, die aus mehreren elementaren Instruktionen (Anweisungen bei Programmiersprachen, Befehlen bei Maschinensprachen) besteht, die
MehrEinführung in die Programmierung (EPR)
Goethe-Center for Scientific Computing (G-CSC) Goethe-Universität Frankfurt am Main Einführung in die Programmierung (EPR) (Übung, Wintersemester 2014/2015) Dr. S. Reiter, M. Rupp, Dr. A. Vogel, Dr. K.
MehrREGIONALES 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)
MehrL6. Operatoren und Ausdrücke
L6. Operatoren und Ausdrücke 1. Arithmetische Operatoren: +, -, *, /, %, --, ++ 2. Zuweisung-Operatoren: =, +=, -=, *=, /= 3. Vergleichsoperatoren: =, ==,!= 4. Logische Operatoren:!, &&, 5.
MehrSWE1 / Übung 2 (19.10.2011)
SWE1 / Übung 2 (19.1.211) Simulation von Algorithmen Testen, Testplan Beispiel arithmetische Ausdrücke Handsimulation von Algorithmen Man versteht einen Algorithmus (insbesonders einen "Fremden"), wenn
MehrFakultä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 **
MehrGliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik
Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.
MehrAlgorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.
Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte
MehrAufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters
Prof. Dr. Ulrich Breitschuh Hochschule Anhalt(FH) Fachbereich Informatik Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Hinweis: Die Aufgaben 3, 6 und 8 sind testatpichtige Aufgaben.
MehrMAXIMUM2.STR 02.10.2002. Struktogramme. Aufgabe: 3 Zahlen eingeben, größte Zahl ermitteln und ausgeben.
Struktogramme 02.10.2002 Aufgabe: 3 Zahlen eingeben, größte Zahl ermitteln und ausgeben. MAX_DOZ1 Integer a, b, c, max M AX IM U M 1.S T R Inte g er a, b, c Ausgabe "Zahlen eingeben" E ing abe a, b, c
MehrNun kommt etwas wirklich Abgefahrenes. Wenn Sie zu den Leuten gehören, denen Logikrätsel keinen
B1 Template-Metaprogrammierung Template-Metaprogrammierung In diesem Kapitel Verfeinern Sie Ihre Kenntnisse über Template-Parameter Erfahren Sie, dass man auch nicht-generische Argumente in Templates einsetzen
MehrNoch 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