Bemerkung: Bezgl. des Detaillierungsgrads der Schritte 2. und 3. sind andere Lösungen möglich.

Ähnliche Dokumente
Zahlen. Vorlesung Mathematische Strukturen. Sommersemester Zahlen. Zahlen

Wiederholung Diese Fragen sollten Sie ohne Skript beantworten können: Wo liegt der Unterschied zwischen dem 1. und 2. Binom? Wie nutzt man das 1./2. B

2 Teilbarkeit in Z. (a) Aus a b folgt a b und a b und a b und a b. (b) Aus a b und b c folgt a c.

Zentrale schriftliche Abiturprüfungen im Fach Mathematik

Lösung der Klausur zur Vorlesung. Grundlagen der Informatik und Numerik. Dr. Monika Meiler. Jedes Blatt ist mit der Matrikelnummer zu versehen.

Hauptprüfung Fachhochschulreife Baden-Württemberg

Datentypen mit fester Größe. Bitoperatoren. Funktionen. Nachtrag Compiler. Aufgabe 2. SPiC - Ü U2.1

Zahlentheorie I. smo osm. Thomas Huber. Inhaltsverzeichnis. Aktualisiert: 1. August 2016 vers Teilbarkeit 2.

Übungen zum Seminar Grundlagen der Mathematik Blatt 10 Abgabe: Dienstag Aufgabe 1 (15 Punkte + 5 Bonuspunkte = 20 Punkte)

Konrad-Zuse-Schule (2015) Torsten Schreiber

4. Funktionen und Relationen

Schulstoff. Übungen zur Einführung in die Analysis. (Einführung in das mathematische Arbeiten) Sommersemester 2010

Informationsgewinnung

1.Vortrag: Rechnen mit Restklassen/modulo einer Zahl

p Z >1 ist Primzahl, wenn gilt Euklid:

KAPITEL 13. Polynome. 1. Primfaktorzerlegung in den ganzen Zahlen. ,, p r

Grundwissen Mathematik

5 x. Arbeitsblätter Wiederholung Gleichungssysteme IGS List 9. Jahrgang

1 Zahlentheorie. 1.1 Kongruenzen

Langzahlarithmetik implementieren Ac 1990 bis 2016

Kapitel 2. Kapitel 2 Natürliche und ganze Zahlen

Primzahlen im Schulunterricht wozu?

2: Restklassen 2.1: Modulare Arithmetik

3. Der größte gemeinsame Teiler

Mathematisches Institut II Universität Karlsruhe Priv.-Doz. Dr. N. Grinberg

Ganzzahlige Division mit Rest

Zahlentheorie. Stefan Takacs Linz, am 2. Juni 2004

DIREKTER BEWEIS. Bei der direkten Beweismethode wird versucht, die Aussage direkt mit einem Beweis zu untermauern. n = 2k

Learning Object-Oriented Programming. Algorithmen. Algorithmusbegriff. Klärung der Herkunft des Begriffs Formale Definition von Algorithmus

a(b + c) = ab + ac und (a, b) (c, d) a + d = b + c definiert. Der Quotientenraum Z := N 2 / ist versehen mit der Addition

Trainingsblatt Bestimmung von Potenzfunktionen und ganzrationalen Funktionen

Euklidische Algorithmus, Restklassenringe (Z m,, )

Unter dem Symbol n! (gelesen n Fakultät) versteht man das Produkt der natürlichen Zahlen von 1 bis n.

Diskrete Mathematik Kongruenzen

Bsp. Euklidischer Algorithmus

43.1 Beispiel und Hinführung Ein Körper bewegt sich mit einer konstanten Geschwindigkeit von. . Zum Zeitpunkt t 0s beschleunigt er mit a 0,5

Musterlösung zur Probeklausur zur Angewandten Diskreten Mathematik

Überbestimmte lineare Gleichungssysteme

Primzahlen im Schulunterricht wozu?

Klausur zur Vorlesung. Grundlagen der Informatik und Numerik. Dr. Monika Meiler Mo , Beginn: Uhr, Ende Uhr

Übungen zum Vorkurs Mathematik für Studienanfänger 2009 ***

Wiederholung der Grundlagen

Kryptologie. Bernd Borchert. Univ. Tübingen SS Vorlesung. Teil 14. Faktorisierungsmethoden

5. Der größte gemeinsame Teiler

Brüche, Polynome, Terme

SFZ FN Sj. 12/13. Python 4 Grundlagen. W.Seyboldt. Python, SFZ FN, Sj 12/13

Abb lokales Maximum und Minimum


Zahlentheorie für den Landeswettbewerb für Anfängerinnen und Anfänger der Österreichischen Mathematik-Olympiade

6.Gebrochen-rationale Funktionen

Aussagen Interpretation Verknüpfen von Aussagen Tautologie und Widerspruch Äquivalenz

Aufgabe 1. n b i i i i i 1 i 1. log( a ) b log a, a 0. n b b b b. log( a ) log a a... a. i 1 2 n. i 1 2 n. log( a ) log a log a...

Übungen zum Vorkurs Mathematik für Studienanfänger Ein leeres Produkt ist gleich 1, eine leere Summe 0. ***

Primzahlen. Herbert Koch Mathematisches Institut Universität Bonn Die Primfaktorzerlegung. a = st

perfekt für Klassenarbeiten Videos zu jeder Übungsaufgabe alle Themen sehr übersichtlich alle Anforderungsbereiche StrandMathe GbR

Musterlösung zur Probeklausur zur Angewandten Diskreten Mathematik

ÜBUNGEN ZUR VORLESUNG ZAHLENTHEORIE, SS 2018

Funktionen einer Variablen

Mathematische Modelle im Bauingenieurwesen

Repetition Mathematik 6. Klasse (Zahlenbuch 6)

MIA Analysis einer reellen Veränderlichen WS 06/07. Kapitel II. Die reellen Zahlen

Kanonische Primfaktorzerlegung

15ab 21bc 9b = 3b 5a 7c 3

Übungen zum Vorkurs Mathematik für Studienanfänger Ein leeres Produkt ist gleich 1, eine leere Summe 0. ***

1 Die vier Sätze von LIOUVILLE

Der größte gemeinsame Teiler und das kleinste gemeinsame Vielfache Proseminar Modul 4c, Gruppe 3: Primzahlen, Dr. Regula Krapf

Zahlenlehre 1. Die Mathematik ist die Königin der Wissenschaften und die Zahlentheorie ist die Königin der Mathematik (Carl Friedrich Gauß)

7. Musterlösung zu Mathematik für Informatiker I, WS 2003/04

15ab 21bc 9b = 3b 5a 7c 3

Teilbarkeitsregeln.

Interim. Kapitel Einige formale Definitionen

< hergeleitet. < war nach 1.9 mit Hilfe von Rechenregeln für

Übungen zum Vorkurs Mathematik für Studienanfänger Ein leeres Produkt ist gleich 1, eine leere Summe 0. ***

Vorlesung Mathematik 2 für Informatik

Lineare Algebra I 5. Tutorium Die Restklassenringe /n

Übungsblatt 1 zum Propädeutikum

9 Differentialrechnung für Funktionen von mehreren Variablen

Division mit Rest - der heimliche Hauptsatz der Algebra

Übungsblatt 1 zum Propädeutikum

Einführung in die Zahlentheorie

Mathematik I für Studierende der Informatik und Wirtschaftsinformatik (Diskrete Mathematik) im Wintersemester 2015/16

Karlsruher Institut für Technologie Institut für Algebra und Geometrie

Stichwortverzeichnis. Symbole. Stichwortverzeichnis

Kanonische Primfaktorzerlegung

Übungsaufgaben zur Zahlentheorie (Holtkamp)

Kapitel III Ringe und Körper

Praktisches Beispiel zum kleinsten gemeinsamen Vielfachen (kgv)?

Übersicht. 3.1 Datendarstellung durch Zeichenreihen. 3.2 Syntaxdefinitionen. 3.3 Algorithmen

10 Funktionen Notation. Mathematik 1. Klasse Ivo Blöchliger. Funktionen. Definition 16

Einführung in die Algebra

Prüfungsfragen zur Vorlesung Algebra und Diskrete Mathematik. Sommersemester 2018

Zahlentheorie I - Tipps & Lösungen. Aktualisiert: 15. Oktober 2016 vers Teilbarkeit

Aufgaben zum Aufstellen von Funktionen aus gegebenen Bedingungen

WS 05/06 mod Verifikation

Probabilistische Primzahltests

Prof. Dr. H. Brenner Osnabrück SS Zahlentheorie. Vorlesung 3. Der euklidische Algorithmus

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Transkript:

Lehr- und Übungsbuch Inormatik - Grundlagen und Überblick - 3. Aulage Lösungen zu den Augaben 4.2-4.12 Pro. Dr. W. Schmitt 2. März 2004 Augabe 4.2 // Algorithmus zur Berechnung eines Quadervolumens // Es bedeuten: l Länge, b Breite, h Höhe, V Volumen // Eingabe mit Überprüung: 1. Wiederhole die olgenden Aktionen: 1.1 Errage die Werte ür l, b und h (Eingabe über Tastatur) bis l, b und h reelle Zahlen größer Null sind; // Berechnung des Quadervolumens (Verarbeitung): 2. Bilde das Produkt l b h; 3. Weise das Ergebnis V zu; // 4. Gib den Wert von V au dem Bildschirm aus; Bemerkung: Bezgl. des Detaillierungsgrads der Schritte 2. und 3. sind andere Lösungen möglich. Augabe 4.3 Die mehrache Alternative Falls Selektor = Wert 1 : Verarbeitung 1 Wert 2 : Verarbeitung 2... sonst Verarbeitung n kann durch sukzessive Schachtelung der einachen Alternative ie olgt ersetzt erden: Falls Bedingung 1 dann Verarbeitung 1 ; sonst Falls Bedingung 2 dann Verarbeitung 2 ; sonst Falls...... Falls Bedingung n dann Verarbeitung n ; Augabe 4.4 a) Die Bedingungen a > 0 = und a < 0 = können niemals gleichzeitig erüllt sein. Daher gilt olgende Vereinachung: Falls a > 0 dann a := 2;. b) Das gegebene Kontrollkonstrukt realisiert die Betragsunktion b = a und kann ie olgt vereinacht erden: Falls a > 0 dann b := a;

sonst b := -a;. Augabe 4.5 a) Max(a, b) bz. Min(a, b) bezeichne im Folgendem die Maximum- bz. Minimumunktion im mathematischen Sinne. // Eingabe der zu untersuchenden Zahlen Tastatureingabe: a, b, c, d; // Berechnung von Max(a, b, c, d) und Min(a, b, c, d); Falls a > b dann {max := a; min := b; sonst {max := b; min := a; // max = Max(a, b); min = Min(a, b) Falls c > max dann max := c; // c > Max(a, b); max = Max(a, b, c) Falls c < min dann min := c; // c < Min(a, b); min = Min(a, b, c) Falls d > max dann max := d; // d > Max(a, b, c); max = Max(a, b, c, d) Falls d < min dann min := d; // c < Min(a, b, c); min = Min(a, b, c, d) // Ausgabe des Ergebnisses Bildschirmausgabe: "Max(a, b, c, d) = ", max; Bildschirmausgabe: "Min(a, b, c, d) = ", min; 2

b) Prinzip: der Programmzustand ird nicht in Variablen sondern im Kontrollluss estgehalten. a>b c>d a>c b>d b>d max = c; min = b; max = c; min = d; max = a; min = b; max = a; min = d; a>d b>c b>c max = d; min = b; max = d; min = c; max = a; min = b; max = a; min = c; c>d b>c a>d a>d max = c; min = a; max = c; min = d; max = b; min = a; max = b; min = d; b>d a>c a>c max = d; min = a; max = d; min = c; max = b; min = a; max = b; min = c; 3

c) Lösung mit Hile eines lokalen Blocks MaxMin2 zur Bestimmung von Max(a, b) und Min(a, b). Block MaxMin4 ( ) Daten a, b, c, d, max1, min1, max2, min2 R; Block MaxMin2 (ein: a, b R, mit: max, min R ) // Berechnet Max(a, b) und Min(a, b); { Falls a > b dann {max := a; min := b; sonst {max := b; min := a; { // Eingabe der zu untersuchenden Zahlen Tastatureingabe: a, b, c, d; // Berechnung von Max(a, b, c, d) und Min(a, b, c, d); MaxMin2(ein: a, b; mit: max1, min1); MaxMin2(ein: c, d; mit: max2, min2); MaxMin2(ein: max1, max2; mit: max, max1); MaxMin2(ein: min1, min2; mit: min1, min); // Ausgabe des Ergebnisses Bildschirmausgabe: "Max(a, b, c, d) = ", max; Bildschirmausgabe: "Min(a, b, c, d) = ", min; Augabe 4.6 ( Progammdatei: A4_6.CPP) Der olgende Lösungsvorschlag untersucht zunächst, ob die Punkte P1 und P2 nicht zusammenallen und ermittelt, alls dies nicht gegeben ist, qualitativ die Steigung s der Geraden (s = 0, s > 0, s < 0, s ). Sodann ird ür jeden Steigungsall die Lage von P3 relativ zur Geraden bestimmt. Die Geradenparameter a und s erden nur berechnet, enn dies notendig ist. Block Punkt_zu_Gerade (); Block Eingabe (aus: x1, y1, x2, y2, x3, y3 R ) // Liest die Koordinaten ür die Gerade durch (P1, P2) und den Punkt P3 ein. { Tastatureingabe:x1, y1, x2, y2, x3, y3; Block Position (ein: x1, y1, x2, y2, x3, y3 R; aus: Text N ) Daten s, a, y_3 R; Fall N; { Falls x1 = x2 dann Falls y1 = y2 dann Fall = 0; // Gerade unbestimmt sonst Falls y1 < y2 dann Fall := 11; sonst Fall := 12; // s Falls y1 = y2 // s = 0 dann Falls x1 < x2 dann Fall = 21; 4

sonst Falls x1 > x2 dann Fall := 22; Falls (x1 < x2) (y1 > y2) // s < 0 dann Fall := 31; sonst Falls (x1 > x2) (y1 < y2) dann Fall := 32; Falls (x1 > x2) (y1 > y2) // s > 0 dann Fall := 41; sonst Falls (x1 < x2) (y1 < y2) dann Fall := 42; Falls (Fall = 31) (Fall = 32) (Fall = 41) (Fall = 42) dann { s := (y2 - y1) / (x2- x1); // Berechnung der Geradenparameter a:= y1 - s x1; y_3 := s x3 + a; Falls Fall = 0: Text := 4; 11: {Falls x3 > x1 dann Text := 2; sonst Falls x3 = x1 sonst Text := 3; 12: {Falls x3 > x1 dann Text := 3; sonst Falls x3 = x1 sonst Text := 2; 21: {Falls y3 > y1 dann Text := 3; sonst Falls y3 = y1 sonst Text := 2; 22: {Falls y3 > y1 dann Text := 2; sonst Falls y3 = y1 sonst Text := 3; 31, 42: {Falls y3 > y_3 dann Text := 3; sonst Falls y3 = y_3 sonst Text := 2; 5

32, 41: {Falls y3 > y_3 dann Text := 2; sonst Falls y3 = y_3 sonst Text := 3; Block Ausgabe (ein: Text N ) // Gibt die Position des Punktes relativ zur Geraden aus. { Falls Text = 1: Bildschirmausgabe: P3 liegt au der Geraden ; 2: Bildschirmausgabe: P3 liegt rechts der Geraden ; 3: Bildschirmausgabe: P3 liegt links der Geraden ; 4: Bildschirmausgabe: Wegen P1 = P2 ist das Problem unbestimmt ; Daten x1, y1, x2, y2, x3, y3 R; Text N; { Eingabe(aus: x1, y1, x2, y2, x3, y3); Position( ein: x1, y1, x2, y2, x3, y3; aus: Text); Ausgabe( ein: Text N); 6

Augabe 4.7 a) Wiederholung mit vorausgehender Bedingungsprüung Solange Bedingung (B) ühre aus Verarbeitung (V); B V b) Wiederholung mit nacholgender Bedingungsprüung Wiederhole Verarbeitung (V) solange Bedingung (B); V B c) Wiederholung ohne Bedingungsprüung 7

Wiederhole Verarbeitung (V) ür immer; V Augabe 4.8 ( Progammdatei: A4_8.CPP) Der Block Succ_Prim verendet einen Block Test_Prim, der eine gegebene Zahl n au Primalität prüt (vgl. Beispiel 4.8). Block Test_Prim (ein: n N; aus: b B 2 ) // B 2 = {, // Testet Zahlen n N au Primalität Daten t N; { t := 3; Solange (t t n) (n mod t 0) ühre aus t := t + 2; Falls t t > n dann b := ; sonst b := ; Block Succ_Prim (ein: Prim N; aus: NPrim N ) // Ermittelt den Nacholger NPrim N zu einer gegebenen Primzahl Prim N Daten b B 2 ; { Falls Prim = 2 dann Nprim = 3; sonst { Wiederhole { Prim := Prim + 2; // Bestimme den nächsten Kandidaten Test_Prim( ein: Prim; aus: b B 2 ) solange b ; // Prim ist Primzahl Nprim := Prim; 8

Augabe 4.9 ( Progammdatei: A4_9.CPP) a) Iterative Lösung des Problems n 1 Intitialisierung der Zählschleie 0 = binom := 1; n n n k + 1 = ür k > 0 k k 1 k Schleienkörper binom := (binom (n - i + 1)) div i; i ist die Zählvariable. Es stellt sich die Frage, ob die ganzzahlige Division (div) tatsächlich ohne Rest augeht. Hierzu ird die olgende Darstellung des Binomialkoeizienten betrachtet: n n! 1 = k ( k 1)!( n k + 1)! Wegen n k enthält n! = 1 2... n stets den Faktor k. n k 1 ist stets ohne Rest durch k teilbar. Damit kann der olgende Block Binom_iter zur iterativen Berechnung der Binominialkoeizienten angegeben erden Block Binom_iter (ein: n, k N; aus: binom N ) Daten i N; { binom := 1; Für i := 1 solange i k mit i := i + 1 ühre aus binom := (binom (n - i + 1)) div i; Man beachte: durch die äußere Klammersetzung ist geährleistet, dass, unabhängig von der Reihenolge der Ausertung von Ausdrücken in einer konkreten Programmiersprache, die Division auch tatsächlich augeht. b) Rekursive Lösung Block Binom_rek (ein: n, k N; aus: binom N ) { Falls k = 0 // Endebedingung dann binom := 1; sonst { Binom_rek( ein: n, k-1; aus: binom ); binom := (binom (n - k + 1)) div k; 9

Augabe 4.10 ( Progammdatei: A4_10.CPP) Der im Beispiel 4.2 vorgestellte Algorithmus ist mathematisch durch die Gleichung a ggt( a, b) = ggt( a b, b) ggt( a, b a) ür a = b ür a > b ür a < b deiniert. Rekursiver Algorithmus ggt_rek(ein: a, b N; aus: ggt N ) a = b a > b ggt := a; ggt_rek(ein: a-b, b; aus: ggt); ggt_rek(ein: a, b-a; aus: ggt); Augabe 4.11 ( Progammdatei: A4_11.CPP) Die Zier d mit dem niedrigsten Stellenert einer Dezimalzahl z erhält man gemäß d = z mod 10. So erhält man z.b. ür z = 1052 die letzte Zier d = 1052 mod 10 = 2. Mit dieser Überlegung kann der olgende Algorithmus angegeben erden: Block Quersumme_rek (ein: Zahl N; aus: Quer N ) // Berechnet die Quersumme einer natürlichen Zahl { Falls Zahl = 0 dann Quer := 0; sonst { Quersumme_rek (ein: Zahl div 10; aus: Quer ); Quer := Quer + Zahl mod 10; Augabe 4.12 ( Progammdatei: A4_12.CPP) a) Rekursive Lösung Block n_rek (ein: n N; aus: N ) // Berechnet rekursiv den ganzzahligen Logarithmus zur Basis 2 plus 1 von einer natürlichen Zahl n { Falls n = 1 dann := 1; sonst { n_rek (ein: (n div 2); aus: ); := + 1; b) Iterative Lösung 10

Block n_iter (ein: n N; aus: N ) // Berechnet iterativ den ganzzahligen Logarithmus zur Basis 2 plus 1 von einer natürlichen Zahl n { := 1 solange n > 1 ühre aus { n := n div 2; := + 1; 11