TU Bergakademie Freiberg Istitut für Iformatik Modul Eiführug i die Iformatik Großübug. ud 3. Großübug zum Modul Eiführug i die Iformatik Aufgabe zu Struktogramme - Für die folgede Aufgabe sid Algorithme i Form vo Struktogramme zu etwerfe. - Alle mit * gekezeichete Aufgabe sid Zusatzaufgabe, die icht i der Großübug behadelt werde, soder selbstädig zu löse sid (im Rahme der 6 Curriculum Poits). - Zum Überprüfe der Korrektheit der Struktogramme sollte stets, auch we es i der Aufgabe icht explizit geat wird, ei Trocketest für repräsetative spezielle Eigabewerte durchgeführt werde. - Im Festplatte-Verzeichis Y:\lehre\Modul_Eif_i_die_Iformatik_WS0809_Jug \Grossuebuge fide Sie das Programm struct.exe ( mit der dazugehörige Bibliothek MFCOLEUI.DLL ). Mit diesem (vo eiem Studete userer Uiversität geschriebee) Programm köe Sie Struktogramme eigebe ud abspeicher (Typ:.stg). Da das Programm Freeware ist, köe Sie es ger auf Ihrem Privat-PC implemetiere (Achtug: beide Dateie struct.exe ud MFCOLEUI.DLL werde beötigt). ) Volume ud die Oberfläche eier Kugel Bereche Sie das Volume ud die Oberfläche eier Kugel mit reellem Radius ( Oberfläche: S = 4*Pi*r ; Volume: V = 4/3*Pi*r 3 ). *) Bereche Sie die Summe zweier (reeller) Zahle. 3) Bestimmug des Wertes eies Maximums vo bzw. 3 Zahle a) Bestimme Sie de maximale Wert zweier beliebiger (reeller) Zahle durch eifache Selektio. b) Bestimme Sie de maximale Wert dreier beliebiger (reeller) Zahle durch geschachtelte Selektio. I a) ud b): Ausgabe des Resultats ur eimal im Struktogramm. Hiweis: Es ist also icht gefragt, welche Variable() maximal sid, soder ur der Wert eies Maximums. 4) Nachbildug ( Simulatio ) eies Miicomputers, der 4 Operatioe beherrscht Es ist ei Struktogramm azugebe für eie simulierte "Miicomputer", der eifache arithmetische Ausdrücke der Form <operad_> <operator> <operad_> i folgeder Weise berechet: - Eizugebe sid:.operad, Operator,.Operad - Zugelassee Operatore: -- Additio: + -- Subtraktio: - -- Multiplikatio: * oder. (d.h. Ster oder Satzpukt) -- Divisio / oder : (d.h. Slash oder Doppelpukt) - Fehlerausschrifte: -- bei Divisio durch 0 -- sowie we ei icht zugelasseer Operator eigegebe wurde - Die Ergebisausgabe soll ur eimal im Struktogramm erfolge. 008
5) (Nichtrekursive) Berechug der Fakultät mit alle drei Schleifearte Zu bestimme ist _fakultaet =! =*(-)*...* (>=0, gaz), wobei per defiitioem gilt: 0! = Bereche Sie die Fakultät i drei Variate mit Abweisschleife, Nichtabweisschleife ud Zählschleife. (Bemerkug: Die Fakultät lässt sich auch sehr eifach mit eiem rekursive Algorithmus bereche (siehe Komplex Programmierug).) 6) Tabelliere eier Fuktio (Quadratwurzel) Die Fuktio y = x ist im Bereich <= x <= 0 mit der Schrittweite zu tabelliere. a) mit eier Abweisschleife b) mit eier Zählschleife (spezielle Abweisschleife) Hiweis: Programmiersprache ethalte bereits eie Fuktio für die Quadratwurzel, die meist sqrt(x) heißt (auch i Pytho). Verwede Sie also für die Quadratwurzel die Fuktio sqrt(x). 7*) Tabelliere eier weitere Fuktio 3x + 4 Die Fuktio y = ist im Bereich xa <= x <= xe mit der Schrittweite xs; xs>0; zu tabelliere. x Dabei sid die reelle Werte für de Afagswert xa, de Edwert xe ud die Schrittweite xs eizulese. Beutze Sie eie Abweisschleife. Hiweis: Beachte Sie die Polstelle der Fuktio (eie Fuktioswertberechug a der Polstelle x=0.5 ist icht möglich). 8) Summe vo (reelle) Zahle Zu bereche ist die Summe vo (reelle) Zahle (z.b. reelle Messwerte) mit zwei verschiedee Datemodelle; =,, 3,... ( sei dem Nutzer bekat): a*) Lege Sie folgedes Datemodell zugrude: Alle Zahle solle i eie eifache Variable (z.b. x) eigelese werde. Löse Sie diese Aufgabe i drei Variate mit de 3 verschiedee Schleifearte (Abweisschleife, Nichtabweisschleife, Zählschleife). b) Verwede Sie jetzt ei aderes Datemodell: Die Zahle solle i ei Feld (auch Liste oder Vektor geat) eigelese werde (z.b. mit de Kompoete: x[], x[],..., x[] ). Beutze Sie hier ur die Zählschleife. 9) Wert eies Maximums vo Zahle a) Bestimme Sie de maximale Wert vo beliebige reelle Zahle. Die gazzahlige Azahl ; >=; sei dem Nutzer bekat. Falls falsch eigegebe wird, ist die Eigabe zu wiederhole. (Dabei soll vorausgesetzt werde, dass der Nutzer eie gaze Zahl eigibt.) - Zu verwededes Datemodell: Die Zahle solle i ei Feld (auch Vektor oder Liste geat) eigelese werde (z.b. mit de Kompoete: x[], x[],..., x[] ). b) Was ist im Struktogramm aus a) zu veräder, we ma de miimale Wert vo Zahle (ud icht de maximale Wert) ermittel will (verbale Beschreibug). 008
0*) Näherugsweise Berechug der Expoetialfuktio e x = exp(x) mit Hilfe der bekate TAYLOR-Reihe e x i folgeder Weise: - Eigabe vo x 3 x x x x = + + + +... + +... ( kovergiert für x < )!! 3!! - Die äherugsweise Berechug ist abzubreche, we das ächste Glied der Reihe betragsmäßig kleier als eie eizulesede Geauigkeitsschrake epsilo (0 < epsilo < ) ist. - Bei der Berechug der eizele Reiheglieder ka ma ausutze, dass mit g 0 = x (erstes Glied der Reihe) für die ächste Reiheglieder gilt: g i = g i * für i =,,... i ) Wert des Maximums ud Miimums, Mittelwert ud Streuug vo reelle Zahle Bestimme Sie de Wert des Maximums, de Wert des Miimums, das arithmetische Mittel (statistischer Mittelwert) ud die Streuug (Variaz) vo reelle Zahle ( sei bekat). Hiweise: - Mittelwert: i der Statistik als bezeichet; i der Iformatik besser z.b. als mw : mw = x[ i] i= - Streuug (oder auch: Variaz): i der Statistik als s bezeichet; hier besser z.b. als var : var = ( x[ i] mw) = ( ( x[ i]) * mw* mw) i= Bemerkug: Die zweite Formel für var ist rechetechisch güstiger. Bei der algorithmische Berechug vo mw wird ma zuerst die ethaltee Summe bereche, dieses Zwischeresultat auch i mw speicher ud schließlich durch dividiere. Etspreched geht ma bei der Berechug vo var vor: zuächst wird die ethaltee Summe berechet, dieses Zwischeresultat auch i var gespeichert ud aschließed *mw*mw abgezoge ud alles durch (-) dividiert. - Datemodell: x[], x[],..., x[] reeller Vektor ( Feld, Array, Liste ); bekat mw, var, mi, max reelle Zahle, i gaze Zahle ( Iteger ) *) Doppelsumme (als Prototyp für verschachtelte Schleife) a) Zu bereche ist der Wert der Doppelsumme i doppsum = wobei zuvor die gaze Zahl eizulese ist. i= i= j= ( i + b) Führe Sie eie Trocketest für de Fall durch, dass =3 eigegebe wird. j) 3 008
3*) Eifache Matrizeberechuge - Eie reelle (, m)-matrix A mit Zeile ud m Spalte ist zeileweise eizulese (>=3; m>=3). Die Zeileazahl ud die Spalteazahl m seie dem Nutzer bekat ud sid zuerst eizulese. - Daach ist die Summe über alle Matrixelemete der. ud 3. Spalte der Matrix zu ermittel ud auszugebe. - Schließlich ist die traspoierte (m, )-Matrix C = A T zu bestimme ud zeileweise auszugebe. Hiweis: Aufeiaderfolgede Ausgabe im Struktogramm setze (ohe explizit agegebee Zeilewechsel) die Ausgabe hiter dem letzte Zeiche der vorherige Ausgabe fort. Um eie Zeilewechsel zu erreiche, muss später ei programmiersprachabhägiges Steuerzeiche ausgegebe werde, das hier im Struktogramm kurz durch A(<Zeilewechsel>) bezeichet werde soll, d.h. durch die Struktogramm-Ausgabeaktio A(<Zeilewechsel>) soll ei Zeilewechsel bewirkt werde. ----------------------------------------------------------------------------------------------------------------------- 4*) Ausgabe eies Musters aus Stere Gesucht ist ei Struktogramm, bei desse Iterpretatio folgedes Muster i 0 Zeile ausgegebe wird: * (.Zeile: Ster) ** (.Zeile: Stere) *** (3.Zeile: 3 Stere)... (usw.) ******************** (0.Zeile: 0 Stere) Bemerkug: Beachte Sie de Hiweis zum Zeilewechsel im Text der Aufgabe 3. 5) Sortierug ach der Methode der sukzessive Miima - Aufgabe: reelle Variablewerte x[],..., x[]; >=; sid i eie mooto ichtfallede Folge (d.h. vom kleiste zum größte Elemet bzw. aufsteiged) umzuorde ( zu sortiere ). Die Azahl der Werte sei dem Nutzer icht bekat (d.h. ka icht eigelese werde). - Bemerkug zur Speicherug: Die Ausgagsfolge x[],..., x[] soll durch die sortierte Folge überspeichert werde. - Hiweise zur Lösug: a) Verbaler Algorithmus zur Sortierug ach der Methode der sukzessive Miima: - Sortierug erfolgt i (-) Schritte - Im j-te Schritt (j =,..., -) wird ei Miimum der Teilfolge x[j], x[j+],..., x[] gesucht (siehe dazu: Suche des Miimums). Sei dabei x[k]; k = j, j+,..., ; ei ermitteltes Miimum, so sid x[ j ] ud x[ k ] auszutausche (Grud: x[ j ] darf durch Überspeicher mit x[k] icht verlore gehe.). b) Datemodell: (Azahl der Werte), i (Laufvariable), j (Laufvariable = Nr. des Sortierschritts) sowie k (Idex des aktuelle Miimums): atürliche Zahle (d.h. gazzahlig ud >= 0) x[],..., x[] (Vektorkompoete), mi (aktuelles Miimum), ede (Edeerkeugszeiche): reell c) Eilese mit ubekater Azahl vo Messwerte: Eie Möglichkeit, die hier verwedet werde soll: Ei Edeerkeugszeiche ist zu vereibare, dass vom Typ der eizulesede Werte ist, aber physikalisch icht als echter Messwert auftrete ka (z.b. der Wert 0000 bei Lufttemperature). ----------------------------------------------------------------------------------------------------------------------- 4 008
6*) Eifaches Ratespiel ( aus 90 ) Gebe Sie ei Struktogramm für folgedes eifache Ratespiel a: Spielschritt : Mit eiem Zufallszahlegeerator ist zuächst eie zu erratede gaze Zahl a aus dem Bereich <=a<=90 zu bestimme. (Hiweis: Da Zufallszahlegeeratore programmiersprachspezifisch sid, schreibe Sie hierfür eifach als Aktio a = Zzahl aus [,90] is Struktogramm.) Spielschritt : - Der Spieler muss a u durch Eigabe eier gaze Zahl b zu errate versuche. - Solage er falsch rät (a!= b): Hiweis durch Ausgabe, ob b zu groß oder zu klei ist. Daach muss der Spieler ereut rate. - We richtig gerate (b = =a): -- Azahl der beötigte Rateversuche ausgebe -- Außerdem verbale Leistugseischätzug i Abhägigkeit vo ausgebe ud zwar: --- = oder : Super --- = 3 oder 4: Sehr gut --- = 5: Gute Leistug --- = 6, 7 oder 8 Mittelmäßige Leistug --- > 8 Schwache Leistug - Frage, ob Spieler och eimal spiele will. We ja, da Fortsetzug bei Spielschritt, sost Spielede. 7) Trocketest eies Struktogramms a) Führe Sie für das folgede Struktogramm eie Trocketest für de Eigabewert greze = durch. Gebe Sie ur alle Werte a, die bei der Abarbeitug des Algorithmus ausgegebe werde. E(greze) x= y= A(x,y) z=x+y A(z) x=y y=z y<greze 5 008
Ahag (fakultativ): Abschließed zur fakultative Wiederholug och zwei typische Aufgabe aus Klausure: A*) Trocketest eies Struktogramms (Klausur vom 3.09.00): a) Führe Sie für das folgede Struktogramm eie Trocketest durch. Gebe Sie ur alle Ausgabe, d.h. icht ur die Ausgabe des Edresultats, a. b) Gebe Sie die mathematische Formel für s ud p a, die i diesem Struktogramm umgesetzt werde. c) Schreibe Sie das Teilstruktogramm (*) um, idem Sie statt der hier verwedete Nichtabweisschleife eie Zählschleife verwede. Gebe Sie das gesamte veräderte Teilstruktogramm (*) a (ohe überflüssige Aktioe). s=0 p= j= s = s + (3*j*j) - (*j*j*j) p = p*j*j Ausgabe( j, "-ter Durchlauf: s=", s, " p=", p ) j = j + j <= 3 s = s/3 p = p/3 Ausgabe("Edresultate: s=", s, " p=", p) A*) Gebe Sie ei vollstädiges Struktogramm für folgede Tabellierug a (Klausur vom 6.03.00): Metallische Werkstücke i Form vo (gerade Kreis-) Kegel mit gleichem Radius r = 4 cm der Grudfläche ud uterschiedliche Höhe h sid bezüglich ihrer Masse tabellarisch auszuwerte. Das spezifische Gewicht der Metallkegel sei rho = 6,3 g/cm 3. Vo der Höhe h = 8 cm a ist mit der Schrittweite +0,5 cm jeweils die Masse gemäß m = *3.459 * r 3 * h * rho [ i Gramm] zu bereche ud i Tabelleform (.Spalte: Höhe,.Spalte: Masse) auszugebe. Die Tabellierug ist abzubreche, sobald die Masse de Wert vo 5000 [Gramm] übersteigt. Außerdem ist die Azahl der tabellierte Kegel zu bestimme, dere Masse kleier als eie reelle Zahl z ist (z ist eizulese). Diese Azahl ist im Aschluss a die Tabelle auszugebe. (*) Viel Spaß ud viel Erfolg! 6 008