BuK/IIm20/Vorlesung 12 Lemke

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Python</language>
== Seite 7 ==
=== Racketcode in Python übertragen ===

<code id="60cdfe5cb5259">
def natural_numbers():
	n = 1 # because in Racket, natural numbers begin with 1
	while True:
		yield n
		n += 1

def pot_loop(exp, base, loops):
	result = 1
	for i in natural_numbers():
		if i == loops:
			break
		result = result * base
	return result
</code>
<run id="60cdfe5cb539c">
print(pot_loop(10, 2, 11))
</run>

== Übungsaufgabe S. 12 ==
=== natürlichzahlige Quadratwurzel von 19 ===

f(19, 19)

x = 19
y (Schranke) = 19
z = 0

min(0 + 1)² > 19, falls (0 + 1)² > 19
1 > 19 ? → nein, also z inkrementieren

z = 1

2² = 4
4 > 19 ? → nein, z inkrementieren

z = 2

3² = 9
9 > 19 ? → nein, z inkrementieren

z = 3

4² = 16
16 > 19 ? → nein, z inkrementieren

z = 4

5² = 25
25 > 19 → ja → 4 ist das Ergebnis

== Seite 19 ==
=== Übertragung in Python ===

<code id="60cdfe5cb52d7">
def natural_numbers():
	n = 0
	while True:
		yield n
		n += 1
		
def nat_square_root(n1):
	for n in natural_numbers():
		if abs(n**2 - n1) == 0:
			return n
</code>
<run id="60cdfe5cb53e9">
print(nat_square_root(9))
</run>

== Übungsaufgabe S. 24 ==
=== Kleinste y aus natürlichen Zahlen mit x mod 2 + y = 0 ===

müf(10)

x = 10
y = 0

10 mod 2 + 0 = 10 mod 2 = 0
return 0

müf(5)

x = 5
y = 0

5 mod 2 + 0 = 1 != 0

y = 1

5 mod 2 + 1 = 2 != 0

y = 2

5 mod 2 + 2 = 3 != 0

y = 3

5 mod 2 + 3 = 4 != 0

y = 4

5 mod 2 + 4 = 5 != 0

...

→ returnt 0 für gerade Zahlen und läuft immer weiter für ungerade

== Übungsaufgabe S. 26 ==
=== Funktion h1 ===

<code id="60cdfe5cb533d">
def natural_numbers():
	n = 0
	while True:
		yield n
		n += 1

def minus(x, y):
	res = x - y
	return res if res > 0 else 0

def h1(x):
	for y in natural_numbers():
		if x % minus(2, y) == 0:
			return y
</code>
<run id="60cdfe5cb543e">
print(h1(6), h1(9))
</run>

Die Funktion gibt 0 zurück, wenn eine Zahl gerade ist und 1, wenn sie ungerade ist.