Monday 13 February 2017

Exponential Moving Average Formula Java

1.5 Input und Output In diesem Abschnitt erweitern wir die Reihe der einfachen Abstraktionen (Kommandozeileneingabe und Standardausgabe), die wir als Schnittstelle zwischen unseren Java-Programmen und der Außenwelt verwendet haben, um die Standard-Eingabe zu beinhalten. Standardzeichnung. Und Standard-Audio. Standard-Eingabe erleichtert es uns, Programme zu schreiben, die beliebige Mengen von Eingaben verarbeiten und mit unseren Programmen interagieren. Standard-Zeichnung ermöglicht es uns, mit Grafiken und Standard-Audio-Hinzufügungen zu arbeiten. Vogelperspektive. Ein Java-Programm nimmt Eingabewerte aus der Befehlszeile und druckt eine Zeichenfolge als Ausgabe. Standardmäßig werden Befehlszeilenargumente und Standardausgabe mit einer Anwendung verknüpft, die Befehle übernimmt, die wir als Terminalfenster bezeichnen. Hier sind einige Anleitungen für die Verwendung der Befehlszeile auf Ihrem System. Mac middot Windows middot Linux Befehlszeilenargumente. Alle unsere Klassen haben eine main () - Methode, die ein String-Array als Argument annimmt. Dieses Array ist die Folge von Befehlszeilenargumenten, die wir eingeben. Wenn wir beabsichtigen, dass ein Argument eine Zahl ist, müssen wir eine Methode wie Integer. parseInt () verwenden, um sie von String in den entsprechenden Typ zu konvertieren. Standardausgabe. Um Ausgabewerte in unseren Programmen zu drucken, verwenden wir System. out. println (). Java sendet die Ergebnisse an einen abstrakten Strom von Zeichen, der als Standardausgabe bekannt ist. Standardmäßig verbindet das Betriebssystem die Standardausgabe mit dem Terminalfenster. Die gesamte Ausgabe in unseren Programmen ist bisher im Terminalfenster erschienen. RandomSeq. java verwendet dieses Modell: Es nimmt ein Befehlszeilenargument n und druckt zur Standardausgabe eine Folge von n Zufallszahlen zwischen 0 und 1. Um unser Programmiermodell zu vervollständigen, fügen wir die folgenden Bibliotheken hinzu: Standard-Eingabe. Lesen Sie Zahlen und Zeichenfolgen vom Benutzer. Standardzeichnung. Zeichnen Sie Grafiken. Standard-Audio. Ton erzeugen. Standardausgabe. Javas System. out. print () und System. out. println () - Methoden implementieren die grundlegende Standardausgabe-Abstraktion, die wir benötigen. Um jedoch Standard-Eingabe und Standard-Ausgabe gleichmäßig zu behandeln (und um einige technische Verbesserungen zu bieten), verwenden wir ähnliche Methoden, die in unserer StdOut-Bibliothek definiert werden: Javas print () und println () Methoden sind diejenigen, die Sie haben Verwendet. Die printf () - Methode gibt uns mehr Kontrolle über das Erscheinungsbild der Ausgabe. Grundlagen des formatierten Drucks. In seiner einfachsten Form verwendet printf () zwei Argumente. Das erste Argument heißt Formatstring. Es enthält eine Umwandlungsvorschrift, die beschreibt, wie das zweite Argument in einen String für die Ausgabe konvertiert werden soll. Formatzeichenfolgen beginnen mit und enden mit einem Ein-Buchstaben-Umwandlungscode. In der folgenden Tabelle sind die am häufigsten verwendeten Codes zusammengefasst: Format string. Der Formatstring kann zusätzlich zu den Konvertierungsspezifikationen auch Zeichen enthalten. Die Konvertierungsspezifikation wird durch den Argumentwert ersetzt (in eine Zeichenfolge wie angegeben konvertiert) und alle restlichen Zeichen werden an die Ausgabe übergeben. Mehrere Argumente. Die Funktion printf () kann mehr als zwei Argumente übernehmen. In diesem Fall hat die Formatzeichenfolge eine zusätzliche Konvertierungsvorschrift für jedes zusätzliche Argument. Hier ist mehr Dokumentation zu printf Format String-Syntax. Standard-Eingabe. Unsere StdIn-Bibliothek enthält Daten aus einem Standard-Eingabe-Stream, der eine Folge von Werten enthält, die durch einen Leerraum getrennt sind. Jeder Wert ist ein String oder ein Wert aus einem der primitiven Javas-Typen. Eines der Hauptmerkmale des Standard-Eingabe-Streams ist, dass Ihr Programm Werte verbraucht, wenn es sie liest. Sobald Ihr Programm einen Wert gelesen hat, kann es nicht gesichert werden und es erneut lesen. Die Bibliothek wird durch die folgende API definiert: Wir betrachten nun einige Beispiele im Detail. Eingabe. Wenn Sie den Java-Befehl verwenden, um ein Java-Programm von der Befehlszeile aufzurufen, tun Sie eigentlich drei Dinge: (1) das Ausgeben eines Befehls zum Starten der Ausführung Ihres Programms, (2) Festlegen der Werte der Befehlszeilenargumente und ( 3) beginnen, den Standard-Eingangsstrom zu definieren. Die Zeichenfolge, die Sie nach der Befehlszeile im Terminalfenster eingeben, ist der Standard-Eingangsstrom. Beispielsweise nimmt AddInts. java ein Befehlszeilenargument n. Dann liest n Zahlen von der Standard-Eingabe und fügt sie hinzu, und druckt das Ergebnis an die Standardausgabe: Eingabeformat. Wenn Sie abc oder 12.2 oder true eingeben, wenn StdIn. readInt () ein int erwartet. Dann wird es mit einer InputMismatchException reagieren. StdIn behandelt Zeichenfolgen aufeinander folgender Leerzeichen, die mit einem Leerzeichen identisch sind, und ermöglicht es Ihnen, Ihre Zahlen mit solchen Zeichenfolgen zu begrenzen. Interaktive Benutzereingaben. TwentyQuestions. java ist ein einfaches Beispiel für ein Programm, das mit seinem Benutzer interagiert. Das Programm generiert eine zufällige Integer und gibt dann Hinweise auf einen Benutzer versuchen, die Zahl erraten. Der grundlegende Unterschied zwischen diesem Programm und anderen, die wir geschrieben haben, ist, dass der Benutzer die Möglichkeit hat, den Steuerungsfluss zu ändern, während das Programm ausgeführt wird. Verarbeiten eines beliebigen Eingangsstroms. Typischerweise sind Eingangsströme endlich: Ihr Programm migriert durch den Eingabestrom und verbraucht Werte, bis der Stream leer ist. Aber es gibt keine Beschränkung der Größe des Eingangsstroms. Average. java liest in einer Sequenz von reellen Zahlen von Standard-Eingabe und druckt ihren Durchschnitt. Umleitung und Verrohrung. Für viele Anwendungen ist die Eingabe von Eingabedaten als Standard-Eingabe-Stream aus dem Terminal-Fenster unhaltbar, da damit unsere Programme die Verarbeitungsleistung durch die Datenmenge einschränken, die wir eingeben können. Ebenso möchten wir oft die Informationen speichern, die auf dem Standardausgangsstrom für spätere Verwendung gedruckt werden. Wir können Betriebssystemmechanismen verwenden, um beide Probleme zu lösen. Umleiten der Standardausgabe in eine Datei. Durch Hinzufügen einer einfachen Anweisung zu dem Befehl, der ein Programm aufruft, können wir seine Standardausgabe in eine Datei umleiten, entweder für die permanente Speicherung oder für die Eingabe zu einem anderen Programm zu einem späteren Zeitpunkt. Der Befehl legt beispielsweise fest, dass der Standardausgangsstrom nicht im Terminalfenster gedruckt werden soll, sondern stattdessen in eine Textdatei namens data. txt geschrieben werden soll. Jeder Aufruf von StdOut. print () oder StdOut. println () fügt Text am Ende dieser Datei an. In diesem Beispiel ist das Endergebnis eine Datei, die 1.000 zufällige Werte enthält. Umleiten der Standardausgabe aus einer Datei. Ebenso können wir die Standard-Eingabe umleiten, so dass StdIn Daten aus einer Datei anstelle des Terminalfensters liest. Beispielsweise liest der Befehl eine Folge von Zahlen aus der Datei data. txt und berechnet ihren Durchschnittswert. Insbesondere ist das lt-Symbol eine Richtlinie zum Implementieren des Standard-Eingangsstroms durch Lesen aus der Datei data. txt anstatt durch Warten auf den Benutzer, um etwas in das Terminalfenster einzugeben. Wenn das Programm StdIn. readDouble () aufruft. Liest das Betriebssystem den Wert aus der Datei. Diese Möglichkeit, Standard-Eingabe aus einer Datei umzuleiten, ermöglicht es uns, große Mengen an Daten aus jeder Quelle mit unseren Programmen zu verarbeiten, begrenzt nur durch die Größe der Dateien, die wir speichern können. Verbinden von zwei Programmen. Der flexibelste Weg, um die Standard-Input-und Standard-Ausgabe-Abstraktionen umzusetzen ist, dass sie durch unsere eigenen Programme implementiert werden Dieser Mechanismus wird als Piping. Beispielsweise beschreiben die folgenden Befehle, dass die Standardausgabe für RandomSeq und der Standardeingabestrom für Durchschnitt denselben Strom sind. Filter. Für viele gemeinsame Aufgaben ist es praktisch, jedes Programm als Filter zu denken, der einen Standard-Eingabe-Stream in einen Standard-Ausgabe-Stream in irgendeiner Weise umwandelt, RangeFilter. java nimmt zwei Befehlszeilenargumente und druckt auf Standardausgabe die Zahlen von der Standard-Eingabe Die in den angegebenen Bereich fallen. Ihr Betriebssystem bietet auch eine Reihe von Filtern. Beispielsweise legt das Sortierfilter die Zeilen standardmäßig in sortierter Reihenfolge an: Ein weiterer nützlicher Filter ist mehr. Die Daten aus der Standardeingabe liest und sie in Ihrem Terminalfenster jeweils ein Bildschirmdiagramm ausgibt. Wenn Sie beispielsweise eingeben, sehen Sie so viele Zahlen wie in Ihrem Terminal-Fenster passen, aber mehr warten, bis Sie die Leertaste schlagen, bevor Sie die folgenden Bildschirmschoner anzeigen. Standardzeichnung. Jetzt stellen wir eine einfache Abstraktion für die Herstellung von Zeichnungen als Ausgang. Wir stellen uns eine abstrakte Zeichnung vor, die in der Lage ist, Linien und Punkte auf einer zweidimensionalen Leinwand zu zeichnen. Das Gerät reagiert auf die Befehle, die unsere Programme in Form von Aufrufen von statischen Methoden in StdDraw ausgeben. Die primäre Schnittstelle besteht aus zwei Methoden: Zeichnungsbefehle, die dazu führen, dass das Gerät eine Aktion ausführt (z. B. Zeichnen einer Linie oder Zeichnen eines Punktes) und Steuerbefehle, die Parameter wie die Stiftgröße oder die Koordinatenskalen festlegen. Grundlegende Zeichnungsbefehle. Wir betrachten zunächst die Zeichnungsbefehle: Diese Methoden sind nahezu selbstdokumentierend: StdDraw. line (x0, y0, x1, y1) zeichnet ein Geradensegment, das den Punkt (x 0. y 0) mit dem Punkt (x 1 y) verbindet 1). StdDraw. point (x, y) zeichnet einen Punkt, der auf den Punkt (x. Y) zentriert ist. Die Standard-Koordinatenskala ist das Einheitsquadrat (alle x - und y-Koordinaten zwischen 0 und 1). Die Standard-Implementierung zeigt die Leinwand in einem Fenster auf Ihrem Computer-Bildschirm, mit schwarzen Linien und Punkte auf weißem Hintergrund. Ihre erste Zeichnung. Die HelloWorld für Grafikprogrammierung mit StdDraw ist, ein Dreieck mit einem Punkt innen zu zeichnen. Triangle. java führt dies mit drei Aufrufen von StdDraw. line () und einem Aufruf von StdDraw. point () durch. Steuerbefehle. Die Standard-Canvas-Größe ist 512-by-512 Pixel und das Standard-Koordinatensystem ist die Einheit Quadrat, aber wir wollen oft zu zeichnen, auf verschiedenen Skalen. Auch wollen wir oft Liniensegmente unterschiedlicher Dicke oder Punkte unterschiedlicher Größe aus dem Standard ziehen. Um diesen Anforderungen gerecht zu werden, hat StdDraw die folgenden Methoden: Die Zwei-Aufrufsequenz setzt beispielsweise die Zeichenkoordinaten in einen Begrenzungsrahmen, dessen untere linke Ecke bei (x 0.y 0) ist und dessen obere rechte Ecke ist Bei (x & sub1; y & sub1;). Filtern von Daten zu einer Standardzeichnung. PlotFilter. java liest eine Sequenz von Punkten, die durch (x. Y) Koordinaten von der Standard-Eingabe definiert sind, und zeichnet einen Punkt an jedem Punkt. Es nimmt die Konvention an, dass die ersten vier Zahlen auf der Standard-Eingabe die Bounding-Box angeben, damit sie das Diagramm skalieren kann. Plotten eines Funktionsgraphen. FunctionGraph. java zeichnet die Funktion y sin (4 x) sin (20 x) im Intervall (0, pi) auf. Es gibt eine unendliche Anzahl von Punkten im Intervall, so dass wir mit der Auswertung der Funktion an einer endlichen Anzahl von Punkten innerhalb des Intervalls zu tun haben müssen. Wir probieren die Funktion, indem wir einen Satz von x-Werten wählen und dann y-Werte berechnen, indem wir die Funktion bei jedem x-Wert auswerten. Die Auftragung der Funktion durch die Verbindung von aufeinanderfolgenden Punkten mit Linien erzeugt eine sogenannte stückweise lineare Approximation. Outline und gefüllte Formen. StdDraw enthält auch Methoden, um Kreise, Rechtecke und beliebige Polygone zu zeichnen. Jede Form definiert einen Umriß. Wenn der Methodenname nur der Formname ist, wird dieser Umriß vom Zeichenstift verfolgt. Wenn der Methodenname mit gefüllt beginnt. Die angegebene Form ist stattdessen voll gefüllt, nicht nachvollziehbar. Die Argumente für Kreis () definieren einen Kreisradius r die Argumente für Quadrat () definieren ein Quadrat der Seitenlänge 2r auf den gegebenen Punkt zentriert und die Argumente für Polygon () definieren ein Sequenz von Punkten, die wir durch Linien verbinden, einschließlich einer vom letzten Punkt zum ersten Punkt. Text und Farbe. Um verschiedene Elemente in Ihren Zeichnungen zu annotieren oder zu markieren, enthält StdDraw Methoden zum Zeichnen von Text, Einstellen der Schriftart und Einstellen der Tinte im Stift. In diesem Code sind java. awt. Font und java. awt. Color Abstraktionen, die implementiert werden Mit nicht-primitiven Typen, die Sie in Abschnitt 3.1 erfahren werden. Bis dahin überlassen wir die Details StdDraw. Die Standardfarbe ist schwarz. Die Standardschriftart ist eine 16-stellige Serif-Schriftart. Doppelte Pufferung. StdDraw unterstützt eine leistungsfähige Computergrafikfunktion, die als Doppelpufferung bekannt ist. Wenn die doppelte Pufferung durch Aufruf von enableDoubleBuffering () aktiviert wird. Die gesamte Zeichnung findet auf der Leinwand statt. Das Offscreen-Display wird nicht angezeigt, es existiert nur im Arbeitsspeicher. Nur wenn Sie show () aufrufen, wird Ihre Zeichnung von der Offscreen-Leinwand auf die Leinwand kopiert. Wo es im Standard-Zeichnungsfenster angezeigt wird. Sie können denken, doppelte Pufferung als Sammeln alle Linien, Punkte, Formen und Texte, die Sie sagen, es zu zeichnen, und dann zeichnen sie alle gleichzeitig auf Anfrage. Ein Grund für die Doppelpufferung ist die Effizienz bei der Durchführung einer großen Anzahl von Zeichenbefehlen. Computeranimationen. Unsere wichtigste Verwendung von Doppel-Pufferung ist die Herstellung von Computer-Animationen. Wo wir die Illusion der Bewegung durch die schnelle Anzeige von statischen Zeichnungen. Wir können Animationen erzeugen, indem wir die folgenden vier Schritte wiederholen: Deaktivieren Sie die Leinwand. Zeichnen von Objekten auf dem Offscreen Kopieren Sie die Offscreen-Leinwand auf die Leinwand auf dem Bildschirm. Warten Sie eine Weile. Zur Unterstützung dieser Schritte hat das StdDraw mehrere Methoden: Das Hello, World-Programm für Animationen soll einen schwarzen Ball erzeugen, der sich auf der Leinwand zu bewegen scheint und von der Grenze nach den Gesetzen der elastischen Kollision springt. Angenommen, die Kugel ist an der Position (x, y) und wir wollen den Eindruck erwecken, sie in eine neue Position zu bewegen, sagen wir (x 0,01, y 0,02). Wir tun dies in vier Schritten: Löschen Sie die Offscreen-Leinwand auf weiß. Zeichnen Sie einen schwarzen Ball an der neuen Position auf der Offscreen-Leinwand. Kopieren Sie die Leinwand auf dem Bildschirm auf die Leinwand. Warten Sie eine Weile. Um die Illusion der Bewegung zu erzeugen, iteriert BouncingBall. java diese Schritte für eine ganze Sequenz von Positionen des Balls. Bilder. Unsere Standard-Zeichnungsbibliothek unterstützt sowohl Zeichnungsbilder als auch geometrische Formen. Der Befehl StdDraw. picture (x, y, Dateiname) zeichnet das Bild im angegebenen Dateinamen (JPEG, GIF oder PNG) auf der Leinwand, zentriert auf (x, y). BouncingBallDeluxe. java veranschaulicht ein Beispiel, bei dem der Hüpfball durch ein Bild eines Tennisballs ersetzt wird. Benutzerinteraktion. Unsere Standardzeichnungsbibliothek enthält auch Methoden, damit der Benutzer mit dem Fenster mit der Maus interagieren kann. Ein erstes Beispiel. MouseFollower. java ist die HelloWorld der Mausinteraktion. Es zeichnet einen blauen Ball, zentriert auf der Position der Maus. Wenn der Benutzer die Maustaste gedrückt hält, ändert sich die Farbe von Blau zu Cyan. Ein einfacher Attraktor. OneSimpleAttractor. java simuliert die Bewegung einer blauen Kugel, die von der Maus angezogen wird. Es ist auch eine schlechte Kraft. Viele einfache Attraktoren. SimpleAttractors. java simuliert die Bewegung von 20 blauen Kugeln, die von der Maus angezogen werden. Es ist auch eine schlechte Kraft. Wenn der Benutzer klickt, zerstreuen sich die Kugeln zufällig. Federn. Springs. java implementiert ein Federsystem. Standard-Audio. StdAudio ist eine Bibliothek, mit der Sie Audiodateien abspielen und bearbeiten können. Es erlaubt Ihnen, Klang zu spielen, zu manipulieren und zu synthetisieren. Wir stellen einige grundlegende Konzepte hinter einem der ältesten und wichtigsten Bereiche der Informatik und des wissenschaftlichen Rechnens vor: Digitale Signalverarbeitung. Konzert A. Konzert A ist eine Sinuswelle, die so skaliert ist, dass sie mit einer Frequenz von 440 mal pro Sekunde oszilliert. Die Funktion sin (t) wiederholt sich einmal alle 2pi Einheiten auf der x-Achse. Wenn wir also t in Sekunden messen und die Funktion sin (2pi t mal 440) aufzeichnen, erhalten wir eine Kurve, die 440 mal pro Sekunde schwingt. Die Amplitude (y-Wert) entspricht der Lautstärke. Wir gehen davon aus, dass sie zwischen minus 1 und 1 skaliert ist. Eine einfache mathematische Formel charakterisiert die anderen Noten auf der chromatischen Skala. Sie werden gleichmäßig auf eine logarithmische (Basis 2) Skala aufgeteilt: es gibt zwölf Noten auf der chromatischen Skala, und wir erhalten die i-te Note über einer gegebenen Note, indem wir ihre Frequenz mit der (12) - ten Potenz von 2 multiplizieren Verdoppeln oder halbieren Sie die Frequenz, bewegen Sie sich nach oben oder nach unten eine Oktave auf der Skala. Zum Beispiel 880 Hertz ist eine Oktave über Konzert A und 110 Hertz ist zwei Oktaven unterhalb Konzert A. Sampling. Für den digitalen Ton repräsentieren wir eine Kurve, indem wir sie in regelmäßigen Abständen abtasten, und zwar genau so, wie wir sie bei der Darstellung von Funktionsgraphen verwenden. Wir probieren oft genug, dass wir eine genaue Darstellung der curvemdasha weit verbreitete Abtastrate haben 44.100 Proben pro Sekunde. Es ist so einfach: wir repräsentieren Klang als ein Array von Zahlen (reelle Zahlen, die zwischen minus1 und 1 sind). Zum Beispiel spielt das folgende Codefragment das Konzert A für 10 Sekunden. Spielen Sie diese Melodie. PlayThatTune. java ist ein Beispiel, das zeigt, wie leicht wir mit StdAudio Musik erstellen können. Es nimmt Noten von Standard-Eingang, indiziert auf der chromatischen Skala von Konzert A, und spielt sie auf Standard-Audio. Schreiben Sie ein Programm MaxMin. java, das in Ganzzahlen (so viele wie der Benutzer eingibt) von der Standard-Eingabe liest und die Maximal - und Minimalwerte ausgibt. Schreiben Sie ein Programm Stats. java, das ein Integer-Kommandozeilenargument n annimmt. Liest n Gleitkommazahlen von der Standard-Eingabe und druckt ihren Mittelwert (Mittelwert) und Standardabweichung (Quadratwurzel der Summe der Quadrate ihrer Differenzen vom Mittelwert, geteilt durch n minus 1). Schreiben Sie ein Programm LongestRun. java, das in einer Folge von ganzen Zahlen liest, und druckt sowohl die Ganzzahl, die in einem längsten aufeinanderfolgenden Lauf angezeigt wird, als auch die Länge des Laufs aus. Zum Beispiel, wenn der Eingang 1 2 2 1 5 1 1 7 7 7 7 1 1 ist. Dann sollte Ihr Programm den längsten Lauf drucken: 4 aufeinander folgende 7s. Schreiben Sie ein Programm WordCount. java, das Text aus der Standard-Eingabe liest und die Anzahl der Wörter im Text ausgibt. Für die Zwecke dieser Übung ist ein Wort eine Folge von Nicht-Whitespace-Zeichen, die von einem Leerraum umgeben ist. Schreiben Sie ein Programm Closest. java, das drei Gleitkomma-Befehlszeilenargumente (x, y, z) aufnimmt, liest aus der Standardeingabe eine Folge von Punktkoordinaten ((xi, yi, zi)) und druckt die Koordinaten des Punktes Am nächsten zu ((x, y, z)). Man beachte, dass das Quadrat des Abstandes zwischen ((x, y, z)) und ((xi, yi, zi)) ((x - xi) 2 (y - yi) 2 (z - zi) 2 ist. Verwenden Sie für die Effizienz nicht Math. sqrt () oder Math. pow (). Angesichts der Positionen und Massen einer Folge von Objekten, schreiben Sie ein Programm, um ihre Schwerpunkt-oder Schwerpunkt zu berechnen. Der Schwerpunkt ist die mittlere Position der n Objekte, gewichtet durch Masse. Wenn die Positionen und Massen durch (xi, yi) gegeben sind, dann ist der Schwerpunkt (x. Y. M) gegeben durch: Schreiben Sie ein Programm Centroid. java, das in einer Folge von Positionen und Massen (xi. Mi) von der Standard-Eingabe und druckt ihren Schwerpunkt (x, y) aus. Hinweis. Modellieren Sie Ihr Programm nach Average. java. Schreiben Sie ein Programm CheckerBoard. java, das ein Befehlszeilenargument n annimmt und ein n-by-n Schachbrett mit roten und schwarzen Quadraten darstellt. Farbe unten links rot. Schreiben Sie ein Programm Rose. java, das ein Befehlszeilenargument n annimmt, und zeichnet eine Rose mit n Blütenblättern (falls n ungerade ist) oder 2n Blütenblättern (wenn n gerade ist), indem die Polarkoordinaten (r, theta) der Funktion r aufgetragen werden Sin (n mal theta) für Theta im Bereich von 0 bis 2pi rad. Hier ist die gewünschte Ausgabe für n 4, 7 und 8. Schreiben Sie ein Programm Banner. java, das einen String s von der Befehlszeile nimmt, und zeigt ihn im Bannerstil auf dem Bildschirm an, bewegt sich von links nach rechts und wickelt zurück zum Anfang Der Saite, wenn das Ende erreicht ist. Fügen Sie ein zweites Befehlszeilenargument hinzu, um die Geschwindigkeit zu steuern. Schreiben Sie ein Programm Circles. java, das gefüllte Kreise gelegentlicher Größe an zufälligen Positionen im Einheitsquadrat zeichnet und produziert Bilder wie die unten. Ihr Programm sollte vier Befehlszeilenargumente enthalten: die Anzahl der Kreise, die Wahrscheinlichkeit, dass jeder Kreis schwarz ist, der minimale Radius und der maximale Radius. Kreative Übungen Spirographs. Schreiben Sie ein Programm Spirograph. java, das drei Befehlszeilenargumente R, r und a annimmt und den resultierenden Spirograph zeichnet. Ein Spirograph (technisch eine Epizykloide) ist eine Kurve, die durch Walzen eines Kreises des Radius r um einen größeren festen Kreis oder Radius R gebildet wird. Wenn der Stiftversatz von der Mitte des Rollkreises (ra) ist, dann ist die Gleichung der resultierenden Kurve zum Zeitpunkt t gegeben durch Solche Kurven wurden von einem meistverkauften Spielzeug, das Scheiben mit Zahnrad Zähne an den Kanten und kleine Löcher, die Sie einen Stift in Spur Spirographen setzen könnte populär. Für einen dramatischen 3D-Effekt zeichnen Sie ein kreisförmiges Bild, z. B. Earth. gif statt eines Punktes, und zeigen Sie es im Laufe der Zeit drehen. Heres eine Abbildung des resultierenden spirograph, wenn R 180, r 40 und ein 15. Taktgeber. Schreiben Sie ein Programm Clock. java, das eine Animation der Sekunden-, Minuten - und Stundenzeiger einer analogen Uhr anzeigt. Verwenden Sie die Methode StdDraw. show (1000), um die Anzeige etwa einmal pro Sekunde zu aktualisieren. Hinweis. Kann dies eine der seltenen Zeiten, wenn Sie den Operator mit einem doppelten verwenden möchten - es funktioniert, wie Sie es erwarten würden. Oszilloskop. Schreiben Sie ein Programm Oscilloscope. java, um die Ausgabe eines Oszilloskops zu simulieren und Lissajous-Muster zu erzeugen. Diese Muster sind nach dem französischen Physiker Jules A. Lissajous benannt, der die Muster studierte, die entstehen, wenn zwei zueinander senkrechte periodische Störungen gleichzeitig auftreten. Angenommen, die Eingänge sind sinusförmig, so dass die folgenden parametrischen Gleichungen die Kurve beschreiben: Nehmen wir die sechs Parameter A x. W x. Die Steuer . Theta y. Wy. Und theta y von der Befehlszeile aus. Beispielsweise hat das erste Bild unten Ax Ay 1, w x 2, w y 3, theta x 20 Grad, theta y 45 Grad. Die andere hat Parameter (1, 1, 5, 3, 30, 45) Web-Übungen Wort und Zeilenzähler. Ändern Sie WordCount. java, so dass in Text aus Standard-Eingabe liest und die Anzahl der Zeichen, Worte und Zeilen im Text ausdruckt. Niederschlag Problem. Schreiben Sie ein Programm Rainfall. java, das in nichtnegativen Ganzzahlen (repräsentiert Niederschlag) eins zu einem Zeitpunkt, bis 999999 eingegeben wird, und dann druckt den Mittelwert des Werts (nicht einschließlich 999999). Entfernen Sie Duplikate. Schreiben Sie ein Programm Duplicates. java, das in einer Folge von Ganzzahlen liest und die Ganzzahlen zurückgibt, außer dass es wiederholte Werte entfernt, wenn sie nacheinander erscheinen. Wenn zum Beispiel der Eingang 1 2 2 1 5 1 1 7 7 7 7 1 1 ist, sollte das Programm ausdrucken 1 2 1 5 1 7 1. Lauflängencodierung. Schreiben Sie ein Programm RunLengthEncoder. java, das einen Binäreingang mit Lauflängencodierung kodiert. Schreiben Sie ein Programm RunLengthDecoder. java, das eine lauflängencodierte Nachricht decodiert. Kopf und Schwanz. Schreiben Sie die Programme Head. java und Tail. java, die eine Integer-Befehlszeileneingabe N ausführen und die ersten oder letzten N Zeilen der angegebenen Datei ausdrucken. Schreiben Sie ein Programm Caesar. java, das ein Kommandozeilenargument k annimmt, und wendet eine Caesar-Chiffre mit der Verschiebung k an an. Wenn die Variable VENI, VIDI, VICI in YHQL, YLGL, YLFL umgewandelt wird, Eine Sequenz von Buchstaben, die von der Standardeingabe gelesen werden. Wenn ein Buchstabe nicht ein Großbuchstabe ist, drucken Sie ihn einfach wieder aus. Code-Codierungs-Decodierung. Wie würden Sie eine Nachricht verschlüsselt verschlüsseln mit einem Caesar-Chiffre Tipp. Sie sollten nicht mehr Code schreiben Eine Boolesche Matrix hat die Paritätseigenschaft, wenn jede Zeile und jede Spalte eine gerade Summe hat. Dies ist ein einfacher Typ von fehlerkorrigierenden Code, denn wenn ein Bit in der Übertragung beschädigt ist (Bit wird von 0 auf 1 oder von 0 korrigiert Hierbei handelt es sich um eine 4 × 4-Eingabedatei, die die Paritätseigenschaft hat: Schreiben Sie ein Programm ParityCheck. java, das eine Integer-Zahl N als Befehlszeileneingabe aufnimmt und in einem N-by-N-Boolean liest Matrix aus der Standard-Eingabe und gibt aus, wenn (i) die Matrix die Paritätseigenschaft hat oder (ii) angibt, welches einzelne beschädigte Bit (i, j) umgeschaltet werden kann, um die Paritätseigenschaft wiederherzustellen, oder (iii) angibt, Beschädigt (mehr als zwei Bits müssten geändert werden, um die Paritätseigenschaft wiederherzustellen). Verwenden Sie so wenig interne Speicher wie möglich. Hinweis: Sie müssen nicht einmal die Matrix Takagis-Funktion zu speichern. Plot Takagis Funktion: überall stetig, nirgends differenzierbar. Tramper Problem. Sie interviewen N Kandidaten für die einzige Position von American Idol. Jede Minute erhalten Sie einen neuen Kandidaten zu sehen, und Sie haben eine Minute zu entscheiden, ob oder nicht zu erklären, dass die Person der American Idol. Sie können nicht Ihre Meinung ändern, sobald Sie beenden Interview mit dem Kandidaten. Angenommen, Sie können sofort jeden Bewerber mit einer einzigen reellen Zahl zwischen 0 und 1 bewerten, aber natürlich wissen Sie nicht, die Bewertung der Kandidaten noch nicht gesehen. Entwerfen Sie eine Strategie und schreiben Sie ein Programm AmericanIdol, das mindestens eine 25 Chance hat, den besten Kandidaten auszuwählen (vorausgesetzt, dass die Kandidaten in zufälliger Reihenfolge ankommen), wobei die 500 Datenwerte von der Standard-Eingabe gelesen werden. Lösung: Interview für N2 Minuten und notieren Sie die Bewertung der besten Kandidaten bisher gesehen. In den nächsten N2 Minuten wählen Sie den ersten Kandidaten, der eine höhere Bewertung hat als die aufgezeichnete. Dies ergibt mindestens eine 25 Chance, da Sie den besten Kandidaten erhalten, wenn der zweitbeste Kandidat in den ersten N2 Minuten ankommt, und der beste Kandidat kommt in der letzten N2 Minuten. Dies kann geringfügig bis 1e 0,36788 verbessert werden, indem im Wesentlichen die gleiche Strategie verwendet wird, jedoch zum Zeitpunkt Ne umgeschaltet wird. Verschachtelte Diamanten. Schreiben Sie ein Programm Diamonds. java, das eine Befehlszeileneingabe N aufnimmt und N verschachtelte Quadrate und Diamanten aufzeichnet. Unten ist die gewünschte Ausgabe für N 3, 4 und 5. Regelmäßige Polygone. Erstellen Sie eine Funktion zur Darstellung eines N-Gon, zentriert auf (x, y) der Größenlänge s. Verwenden Sie die Funktion, um verschachtelte Polygone wie das folgende Bild zu zeichnen. Ausbuchtungen. Schreiben Sie ein Programm BulgingSquares. java, das die folgende optische Täuschung von Akiyoshi Kitaoka zieht. Das Zentrum wirkt nach außen gewölbt, obwohl alle Quadrate dieselbe Größe haben. Spiralende Mäuse. Angenommen, dass N Mäuse, die auf den Ecken eines regulären Polygons mit N Seiten beginnen, und sie jeweils in Richtung der nächsten Maus (gegen den Uhrzeigersinn), bis sie alle treffen. Schreiben Sie ein Programm, um die logarithmischen Spiralpfade zu zeichnen, die sie durch Zeichnen von verschachtelten N-Gonen, gedreht und geschrumpft wie in dieser Animation zeichnen. Spiral. Schreiben Sie ein Programm, um eine Spirale wie die unten. Globus. Schreiben Sie ein Programm Globe. java, das ein echtes Befehlszeilenargument alpha annimmt und ein globenähnliches Muster mit dem Parameter alpha aufzeichnet. Zeichnen Sie die Polarkoordinaten (r, theta) der Funktion f (theta) cos (alpha mal theta) für theta im Bereich von 0 bis 7200 Grad. Unten ist die gewünschte Ausgabe für Alpha 0,8, 0,9 und 0,95. Zeichenketten. Schreiben Sie ein Programm RandomText. java, das einen String s und eine Integer N als Befehlszeileneingaben aufnimmt, und schreibt die Zeichenfolge N mal an einer zufälligen Position und in einer zufälligen Farbe. 2D zufälliger Weg. Schreiben Sie ein Programm RandomWalk. java, um einen 2D-Zufallspfad zu simulieren und die Ergebnisse animieren. Start in der Mitte eines 2N-by-2N Rasters. Der aktuelle Standort wird blau in weiß dargestellt. Drehtisch. Sie sitzen an einem rotierenden quadratischen Tisch (wie eine faulen Susan), und es gibt vier Münzen in den vier Ecken des Tisches platziert. Ihr Ziel ist es, die Münzen drehen, so dass sie entweder alle Köpfe oder alle Schwänze sind, an welcher Stelle eine Glocke läutet, um Ihnen mitzuteilen, dass Sie fertig sind. Sie können wählen Sie zwei von ihnen, ihre Orientierung zu bestimmen, und (optional) Flip entweder oder beide über. Um die Dinge anspruchsvoll zu machen, sind Sie mit verbundenen Augen, und der Tisch wird nach jeder Auswahl von zwei Münzen gesponnen. Schreiben Sie ein Programm RotatingTable. java, das die Münzen in zufällige Ausrichtungen initialisiert. Dann fordert er den Benutzer auf, zwei Positionen (1-4) auszuwählen und identifiziert die Ausrichtung jeder Münze. Als nächstes kann der Benutzer spezifizieren, welche, wenn irgendeine der beiden Münzen, um zu kippen. Der Vorgang wiederholt sich, bis der Benutzer das Rätsel löst. Drehtischlöser. Schreiben Sie ein anderes Programm RotatingTableSolver. java, um das rotierende Tischpuzzle zu lösen. Eine wirkungsvolle Strategie ist, zwei Münzen zufällig zu wählen und sie zu den Köpfen zu schlagen. Allerdings, wenn Sie wirklich Pech haben, könnte dies eine beliebige Anzahl von Schritten. Ziel: eine Strategie entwickeln, die das Rätsel immer in höchstens 5 Schritten löst. Verhexen. Hex ist ein Zwei-Spieler-Brettspiel, das von John Nash, während ein Absolvent Student an der Princeton University popularisiert und später von Parker Brothers vermarktet. Es wird auf einem hexagonalen Gitter in Form eines 11-by-11 Diamanten gespielt. Schreiben Sie ein Programm Hex. java, das das Brett zeichnet. Projektile Bewegung mit Drag. Schreiben Sie ein Programm BallisticMotion. java, das die Trajektorie einer Kugel, die mit der Geschwindigkeit v in einem Winkel theta erschossen wird. Konto für Gravitations - und Schleppkräfte. Es sei angenommen, daß die Zugkraft proportional zum Quadrat der Geschwindigkeit ist. Aktualisieren Sie die Position, die Geschwindigkeit und die Beschleunigung nach den folgenden Gleichungen: Verwenden Sie G 9.8, C 0.002 und stellen Sie die Anfangsgeschwindigkeit auf 180 und den Winkel auf 60 Grad ein. Herz. Schreiben Sie ein Programm Heart. java, um ein rosa Herz zu zeichnen: Zeichnen Sie einen Diamanten, ziehen Sie dann zwei Kreise nach links oben und rechts oben. Ändern Quadrat. Schreiben Sie ein Programm, das ein Quadrat zeichnet und jede Sekunde seine Farbe ändert. Einfache harmonische Bewegung. Wiederholen Sie die vorherige Übung, aber beleben Sie die Lissajous-Muster wie in diesem Applet. Beispiel: A B w x w y 1, aber zu jedem Zeitpunkt t ziehen Sie 100 (oder so) Punkte mit phi x im Bereich von 0 bis 720 Grad und phi x im Bereich von 0 bis 1080 Grad. Bresenhams Strichzeichnung Algorithmus. Um ein Liniensegment von (x1, y1) bis (x2, y2) auf einem Monitor zu zeichnen, z. B. 1024 x 1024, müssen Sie eine diskrete Annäherung an die durchgezogene Linie machen und genau festlegen, welche Pixel eingeschaltet werden sollen. Bresenhams Line Zeichnung Algorithmus ist eine clevere Lösung, die funktioniert, wenn die Steigung ist zwischen 0 und 1 und x1 Modify Bresenhams Algorithmus, um beliebige Liniensegmente zu behandeln. Millers Wahnsinn. Schreiben Sie ein Programm Madness. java, um die parametrische Gleichung aufzuzeichnen: wobei der Parameter t im Bogenmaß steht. Sie sollten das folgende komplexe Bild erhalten. Experimentieren Sie, indem Sie die Parameter ändern und Originalbilder produzieren. Fays Schmetterling. Schreiben Sie ein Programm Butterfly. java, um die Polargleichung aufzuzeichnen: wobei der Parameter t im Bogenmaß steht. Sie sollten ein Bild wie die folgende Schmetterling-ähnliche Figur zu bekommen. Experimentieren Sie, indem Sie die Parameter ändern und Originalbilder produzieren. Studenten-Datenbank. Die Datei students. txt enthält eine Liste von Studenten, die in einer einführenden Informatik-Klasse in Princeton eingeschrieben sind. Die erste Zeile enthält eine Ganzzahl N, die die Anzahl der Schüler in der Datenbank angibt. Jede der nächsten N Zeilen besteht aus vier Informationen, die durch Leerzeichen getrennt sind: Vorname, Nachname, E-Mail-Adresse und Abschnittsnummer. Das Programm Students. java liest die Integer N und dann N Zeilen von Daten der Standard-Eingabe, speichert die Daten in vier parallelen Arrays (ein Integer-Array für die Abschnittsnummer und String-Arrays für die anderen Felder). Dann gibt das Programm eine Liste der Schüler in den Abschnitten 4 und 5 aus. Shuffling. In der 7. Oktober 2003 Kalifornien Staatsabfluss-Wahl für Gouverneur, gab es 135 offizielle Kandidaten. Um das natürliche Vorurteil gegen Kandidaten zu vermeiden, deren Namen am Ende des Alphabets stehen (Jon W. Zellhoefer), suchten kalifornische Wahlbeamte die Kandidaten in zufälliger Reihenfolge zu bestellen. Schreiben Sie ein Programm-Programm Shuffle. java, das ein Befehlszeilenargument N nimmt, liest in N-Zeichenketten von der Standard-Eingabe und druckt sie wieder in verschobener Reihenfolge aus. (California decided to randomize the alphabet instead of shuffling the candidates. Using this strategy, not all N possible outcomes are equally likely or even possible For example, two candidates with very similar last names will always end up next to each other.) Reverse. Write a program Reverse. java that reads in an arbitrary number of real values from standard input and prints them in reverse order. Time series analysis. This problem investigates two methods for forecasting in time series analysis. Moving average or exponential smoothing. Polar plots. Create any of these polar plots. Java games. Use StdDraw. java to implement one of the games at javaunlimited. net. Consider the following program. Suppose the file input. txt contains the following integers: What is the contents of the array a after running the following command High-low. Shuffle a deck of cards, and deal one to the player. Prompt the player to guess whether the next card is higher or lower than the current card. Repeat until player guesses it wrong. Game show. used this. Elastic collisions. Write a program CollidingBalls. java that takes a command-line argument n and plots the trajectories of n bouncing balls that bounce of the walls and each other according to the laws of elastic collisions. Assume all the balls have the same mass. Elastic collisions with obstacles. Each ball should have its own mass. Put a large ball in the center with zero initial velocity. Brownian motion. Statistical outliers. Modify Average. java to print out all the values that are larger than 1.5 standard deviations from the mean. You will need an array to store the values. Optical illusions. Create a Kofka ring or one of the other optical illusions collected by Edward Adelson. Computer animation. In 1995 James Gosling presented a demonstration of Java to Sun executives, illustrating its potential to deliver dynamic and interactive Web content. At the time, web pages were fixed and non-interactive. To demonstrate what the Web could be, Gosling presented applets to rotate 3D molecules, visualize sorting routines, and Duke cart-wheeling across the screen. Java was officially introduced in May 1995 and widely adopted in the technology sector. The Internet would never be the same. Program Duke. java reads in the 17 images T1.gif through T17.gif and produces the animation. To execute on your computer, download the 17 GIF files and put in the same directory as Duke. java . (Alternatively, download and unzip the file duke. zip or duke. jar to extract all 17 GIFs.) Cart-wheeling Duke. Modify Duke. java so that it cartwheels 5 times across the screen, from right to left, wrapping around when it hits the window boundary. Repeat this cart-wheeling cycle 100 times. Hinweis. after displaying a sequence of 17 frames, move 57 pixels to the left and repeat. Name your program MoreDuke. java. Tac (cat backwards). Write a program Tac. java that reads lines of text from standard input and prints the lines out in reverse order. Spiel. Implement the game dodge using StdDraw . move a blue disc within the unit square to touch a randomly placed green disc, while avoiding the moving red discs. After each touch, add a new moving red disc. Simple harmonic motion. Create an animation like the one below from Wikipedia of simple harmonic motion. Yin yang. Draw a yin yang using StdDraw. arc() . Twenty questions. Write a program QuestionsTwenty. java that plays 20 questions from the opposite point of view: the user thinks of a number between 1 and a million and the computer makes the guesses. Use binary search to ensure that the computer needs at most 20 guesses. Write a program DeleteX. java that reads in text from standard input and deletes all occurrences of the letter X. To filter a file and remove all Xs, run your program with the following command: Write a program ThreeLargest. java that reads integers from standard input and prints out the three largest inputs. Write a program Pnorm. java that takes a command-line argument p, reads in real numbers from standard input, and prints out their p-norm . The p-norm norm of a vector (x 1 . x N ) is defined to be the pth root of (x 1 p x 2 p . x N p ). Consider the following Java program. Suppose that the file input. txt contains the integers 1 and 1. What does the following command do Modify Add. java so that it re-asks the user to enter two positive integers if the user types in a non-positive integer. Modify TwentyQuestions. java so that it re-asks the user to enter a response if the user types in something other than true or false . Hint: add a do-while loop within the main loop. Nonagram. Write a program to plot a nonagram. Star polygons. Write a program StarPolygon. java that takes two command line inputs p and q, and plots the - star polygon. Complete graph. Write a program to plot that takes an integer N, plots an N-gon, where each vertex lies on a circle of radius 256. Then draw a gray line connecting each pair of vertices. Necker cube. Write a program NeckerCube. java to plot a Necker cube. What happens if you move the StdDraw. clear(Color. BLACK) command to before the beginning of the while loop in BouncingBall. java. Antworten . try it and observe a nice woven 3d pattern with the given starting velocity and position. What happens if you change the parameter of StdDraw. show() to 0 or 1000 in BouncingBall. java. Write a program to plot a circular ring of width 10 like the one below using two calls to StdDraw. filledCircle() . Write a program to plot a circular ring of width 10 like the one below using a nested for loop and many calls to StdDraw. point() . Write a program to plot the Olympic rings. Write a program BouncingBallDeluxe. java that embellishes BouncingBall. java by playing a sound effect upon collision with the wall using StdAudio and the sound file pipebang. wav. Last modified on September 26, 2016. Copyright copy 2000ndash2016 Robert Sedgewick and Kevin Wayne. All rights reserved. Find out how easy it is to get started. Maximieren Sie Ihre WebAssign-Erfahrung und sorgen Sie für einen reibungslosen Start in den neuen Begriff. Mit WebAssign erhalten Sie die besten Lehrmittel für die marktführenden Kalkül-Lehrbücher, überlegene Studentenbetreuung und umfangreiche Fakultätsressourcen. WebAssign arbeitet mit Ihnen zusammen, um ein benutzerdefiniertes Labor zu erstellen oder eines unserer gebrauchsfertigen Labore zu übernehmen. New Student to WebAssign Finden Sie heraus, wie einfach es ist, um loszulegen. WebAssign ist eine leistungsstarke digitale Lösung, die von Erziehern entwickelt wurde, um die Lehr - und Lernerfahrung zu bereichern. WebAssign bietet umfassenden Content, sofortige Bewertung und überlegene Unterstützung. Im Scheinwerferlehrer-Scheinwerfer: Im Mathe-Klassenzimmer Sehen Sie, wie fünf innovative WebAssign Benutzer das Matheklassenzimmer verbessern. Lernen Sie Tipps für Studenten und nutzen Sie die flexiblen Funktionen von WebAssigns. Jetzt herunterladen Kostenloser zusätzlicher Content WebAssign bietet eine breite Auswahl an Peer-geprüfte und getestete Mathematik Inhalte einschließlich Tutorial Banken und Bewertungen. Der gesamte Inhalt ist für WebAssign-Nutzer kostenlos. Lesen Sie mehr Warum WebAssign WebAssign legt leistungsfähige Werkzeuge in die Hände von Instruktoren, um ihnen zu helfen, ihre Lehre Ziele zu verwirklichen. Sehen Sie sich unser Video an, um zu sehen, wie WebAssign Ihnen helfen kann. Sehen Sie sich das Video an Unser Angebot


No comments:

Post a Comment