Einfuehrung in web-bezogene Sprachen

Werbung
Dr. Peter Pfahler
Luca Hammer
Paderborn, 28. November 2016
Übungen zur Vorlesung
Einführung in Web-bezogene Sprachen
WS 2016/2017
Lösungsvorschlag zu Blatt 6
AUFGABE 1 (5 Punkte):
1. (3 Pkt) Die Funktion index nach dem Muster des Such-Algorithmus von Folie H-13.
<?php
function index($buchstabe, $zeichenreihe) {
// gibt den Index des ersten Auftretens von $buchstabe
// in $zeichenreihe zurück.
// Kommt das Zeichen nicht vor, wird -1 zurückgegeben.
$lg = strlen($zeichenreihe); // die Länge dieser Zeichenreihe
$i = 0; // der Index in der Zeichenreihe
$gefunden = false; // Zeichen gefunden?
while (!$gefunden and $i < $lg) {
if ($buchstabe == $zeichenreihe{$i}) {
$gefunden = true;
}
else {
$i = $i + 1;
}
}
if ($gefunden)
return $i;
else return -1;
}
?>
2. (2 Pkt)
Das Programmstück berechnet, wie viele Vokale in der Zeichenkette in der Variablen
$text vorkommen. Dazu wird für jedes Zeichen in dieser Zeichenkette geprüft, ob es
ein Vokal ist. In diesem Fall wird die Zählvariable $vokale erhöht. Zur Prüfung, ob ein
Zeichen ein Vokal ist, wird die Funktion index verwendet, indem geprüft wird, ob das
Zeichen in der Zeichenkette enthalten ist, die aus allen Vokalen besteht.
AUFGABE 2 (5 Punkte):
1. (3 Pkt) Entwicklung des Laufzeitkellers für den Funktionsaufruf rsquare(3):
$n 3
$ug ?
$tmp ?
$n 3
$ug 5
$tmp ?
$n 3
$ug 5
$tmp ?
$n 3
$ug 5
$tmp ?
$n 3
$ug 5
$tmp ?
$n 3
$ug 5
$tmp ?
$n 3
$ug 5
$tmp ?
$n 2
$ug ?
$tmp ?
$n 2
$ug 3
$tmp ?
$n 2
$ug 3
$tmp ?
$n 2
$ug 3
$tmp ?
$n 2
$ug 3
$tmp ?
$n 2
$ug 3
$tmp 4
$n 1
$ug ?
$tmp ?
$n 1
$ug 1
$tmp ?
$n 1
$ug 1
$tmp ?
$n 1
$ug 1
$tmp 1
$n 0
$ug ?
$tmp ?
$n 0
$ug ?
$tmp ?
Kellern
$n 3
$ug 5
$tmp 9
Entkellern
2. (2 Pkt) Zwei verschiedene nicht-rekursive Varianten von rsquare:
function square_v1($n) {
// berechnet das Quadrat von n durch Aufsummieren der
// ungeraden Zahlen von 2*n-1 bis 1
$sq = 0;
while ($n > 0) {
$sq = $sq + 2*$n-1;
$n = $n - 1;
}
return $sq;
}
function square_v2($n) {
// berechnet das Quadrat von n durch Aufsummieren der
// ersten n ungeraden Zahlen (von 1 bis 2*n-1)
$sq = 0;
$ungerade = 1;
while ($n > 0) {
$sq = $sq + $ungerade;
$ungerade = $ungerade + 2;
$n = $n - 1;
}
return $sq;
}
Herunterladen