Wednesday, January 18, 2017

Exponentielle Mobile Moyenne Formule Java

1.5 Entrée et sortie Dans cette section, nous étendons l'ensemble des abstractions simples (entrée en ligne de commande et sortie standard) que nous utilisons comme interface entre nos programmes Java et le monde extérieur pour inclure l'entrée standard. Dessin standard. Et audio standard. L'entrée standard rend pratique pour nous d'écrire des programmes qui traitent des quantités arbitraires d'entrée et d'interagir avec nos programmes de tirage standard nous permet de travailler avec des graphiques et audio standard ajoute du son. Vue sur les oiseaux. Un programme Java prend des valeurs d'entrée à partir de la ligne de commande et imprime une chaîne de caractères en sortie. Par défaut, les arguments de ligne de commande et la sortie standard sont associés à une application qui prend des commandes, que nous appelons la fenêtre de terminal. Voici quelques instructions pour utiliser la ligne de commande sur votre système. Mac middot Windows middot Linux Arguments de la ligne de commande. Toutes nos classes ont une méthode main () qui prend un argument args de chaîne comme argument. Ce tableau est la séquence des arguments de ligne de commande que nous tapons. Si nous voulons qu'un argument soit un nombre, nous devons utiliser une méthode telle que Integer. parseInt () pour la convertir de String au type approprié. Sortie standard. Pour imprimer les valeurs de sortie dans nos programmes, nous utilisons System. out. println (). Java envoie les résultats à un flux abstrait de caractères appelé sortie standard. Par défaut, le système d'exploitation connecte la sortie standard à la fenêtre du terminal. Tous les résultats de nos programmes jusqu'à présent apparaissent dans la fenêtre du terminal. RandomSeq. java utilise ce modèle: il prend un argument de ligne de commande n et imprime à la sortie standard une séquence de n nombres aléatoires compris entre 0 et 1. Pour compléter notre modèle de programmation, nous ajoutons les bibliothèques suivantes: Entrée standard. Lire les nombres et les chaînes de l'utilisateur. Dessin standard. Trace des graphiques. Audio standard. Créer un son. Sortie standard. Les méthodes Javas System. out. print () et System. out. println () implémentent l'abstraction standard de sortie standard dont nous avons besoin. Néanmoins, pour traiter l'entrée standard et la sortie standard de manière uniforme (et pour apporter quelques améliorations techniques), nous utilisons des méthodes similaires définies dans notre bibliothèque StdOut: les méthodes Javas print () et println () sont celles que vous avez Utilisé. La méthode printf () nous donne plus de contrôle sur l'apparence de la sortie. Bases d'impression formatées. Dans sa forme la plus simple, printf () prend deux arguments. Le premier argument est appelé la chaîne de format. Il contient une spécification de conversion qui décrit comment le deuxième argument doit être converti en chaîne de sortie. Les chaînes de format commencent par et terminent par un code de conversion d'une lettre. Le tableau suivant récapitule les codes les plus fréquemment utilisés: Format chaîne. La chaîne de format peut contenir des caractères en plus de ceux de la spécification de conversion. La spécification de conversion est remplacée par la valeur de l'argument (convertie en chaîne comme spécifiée) et tous les caractères restants sont transmis à la sortie. Arguments multiples. La fonction printf () peut prendre plus de deux arguments. Dans ce cas, la chaîne de format aura une spécification de conversion supplémentaire pour chaque argument supplémentaire. Voici plus de documentation sur la syntaxe de la chaîne de format printf. Notre bibliothèque StdIn prend des données à partir d'un flux d'entrée standard qui contient une séquence de valeurs séparées par un espace blanc. Chaque valeur est une chaîne ou une valeur d'un des types primitifs Javas. L'une des principales caractéristiques du flux d'entrée standard est que votre programme consomme des valeurs lorsqu'il les lit. Une fois que votre programme a lu une valeur, il ne peut pas sauvegarder et de le lire à nouveau. La bibliothèque est définie par l'API suivante: Nous examinons maintenant plusieurs exemples en détail. Entrée de saisie. Lorsque vous utilisez la commande java pour appeler un programme Java à partir de la ligne de commande, vous effectuez trois opérations: (1) émettre une commande pour lancer l'exécution de votre programme, (2) spécifier les valeurs des arguments de ligne de commande et 3) commencer à définir le flux d'entrée standard. La chaîne de caractères que vous tapez dans la fenêtre de terminal après la ligne de commande est le flux d'entrée standard. Par exemple, AddInts. java prend un argument de ligne de commande n. Puis lit n numéros de l'entrée standard et les ajoute, et imprime le résultat à la sortie standard: Format d'entrée. Si vous tapez abc ou 12.2 ou vrai lorsque StdIn. readInt () attend un int. Alors il répondra avec une exception InputMismatchException. StdIn traite des chaînes de caractères d'espace blanc consécutifs identiques à un espace et vous permet de délimiter vos numéros avec ces chaînes. Entrée interactive de l'utilisateur. TwentyQuestions. java est un exemple simple d'un programme qui interagit avec son utilisateur. Le programme génère un entier aléatoire et donne des indices à un utilisateur essayant de deviner le nombre. La différence fondamentale entre ce programme et d'autres que nous avons écrit est que l'utilisateur a la possibilité de modifier le flux de contrôle pendant l'exécution du programme. Traitement d'un flux d'entrée de taille arbitraire. En règle générale, les flux d'entrée sont finis: votre programme parcourt le flux d'entrée, consommant des valeurs jusqu'à ce que le flux soit vide. Mais il n'y a pas de restriction de la taille du flux d'entrée. Average. java lit dans une séquence de nombres réels à partir de l'entrée standard et imprime leur moyenne. Redirection et tuyauterie. Pour de nombreuses applications, la saisie des données d'entrée en tant que flux d'entrée standard à partir de la fenêtre de terminal est insoutenable car cela limite la puissance de traitement de nos programmes par la quantité de données que nous pouvons taper. De même, nous voulons souvent enregistrer les informations imprimées sur le flux de sortie standard pour une utilisation ultérieure. Nous pouvons utiliser les mécanismes du système d'exploitation pour résoudre les deux problèmes. Redirection de la sortie standard vers un fichier. En ajoutant une directive simple à la commande qui invoque un programme, nous pouvons rediriger sa sortie standard vers un fichier, soit pour un stockage permanent, soit pour une entrée dans un autre programme ultérieurement. Par exemple, la commande spécifie que le flux de sortie standard ne doit pas être imprimé dans la fenêtre de terminal, mais doit être écrit dans un fichier texte nommé data. txt. Chaque appel à StdOut. print () ou StdOut. println () ajoute du texte à la fin de ce fichier. Dans cet exemple, le résultat final est un fichier contenant 1000 valeurs aléatoires. Redirection de la sortie standard d'un fichier. De même, nous pouvons rediriger l'entrée standard afin que StdIn lit les données d'un fichier au lieu de la fenêtre de terminal. Par exemple, la commande envoie une séquence de nombres à partir du fichier data. txt et calcule leur valeur moyenne. Plus précisément, le symbole lt est une directive pour implémenter le flux d'entrée standard en lisant le fichier data. txt au lieu d'attendre que l'utilisateur tape quelque chose dans la fenêtre du terminal. Lorsque le programme appelle StdIn. readDouble (). Le système d'exploitation lit la valeur du fichier. Cette facilité pour rediriger l'entrée standard d'un fichier nous permet de traiter des quantités énormes de données de n'importe quelle source avec nos programmes, limitée seulement par la taille des fichiers que nous pouvons stocker. Connexion de deux programmes. La manière la plus souple de mettre en œuvre les abstractions standard d'entrée et de sortie standard est de spécifier qu'elles sont mises en œuvre par nos propres programmes. Ce mécanisme est appelé piping. Par exemple, les commandes suivantes spécifient que la sortie standard pour RandomSeq et le flux d'entrée standard pour Average sont le même flux. Filtres. Pour de nombreuses tâches courantes, il est commode de considérer chaque programme comme un filtre qui convertit un flux d'entrée standard en un flux de sortie standard d'une certaine manière, RangeFilter. java prend deux arguments de ligne de commande et imprime sur la sortie standard ces nombres de l'entrée standard Qui entrent dans la plage spécifiée. Votre système d'exploitation fournit également un certain nombre de filtres. Par exemple, le filtre de tri met les lignes sur l'entrée standard dans l'ordre trié: Un autre filtre utile est plus. Qui lit les données de l'entrée standard et l'affiche dans votre fenêtre de terminal un écran à la fois. Par exemple, si vous tapez, vous verrez le nombre de numéros qui correspondent à votre fenêtre de terminal, mais plus vous attendre pour frapper la barre d'espace avant d'afficher chaque écran réussie. Dessin standard. Maintenant nous introduisons une abstraction simple pour produire des dessins en sortie. Nous imaginons un dispositif de dessin abstrait capable de tracer des lignes et des points sur une toile bidimensionnelle. Le périphérique est capable de répondre aux commandes que nos programmes émettent sous la forme d'appels aux méthodes statiques dans StdDraw. L'interface principale se compose de deux types de méthodes: les commandes de dessin qui amènent l'appareil à prendre une action (comme tracer une ligne ou dessiner un point) et des commandes de contrôle qui définissent des paramètres tels que la taille du stylet ou les échelles de coordonnées. Commandes de dessin de base. Nous considérons tout d'abord les commandes de dessin: Ces méthodes sont presque auto-documentées: StdDraw. line (x0, y0, x1, y1) dessine un segment de droite reliant le point (x 0. Y 0) au point (x 1.y 1 ). StdDraw. point (x, y) dessine une tache centrée sur le point (x. Y). L'échelle de coordonnées par défaut est l'unité carrée (toutes les coordonnées x et y entre 0 et 1). L'implémentation standard affiche le canevas dans une fenêtre de l'écran de votre ordinateur, avec des lignes noires et des points sur un fond blanc. Votre premier dessin. Le HelloWorld pour la programmation graphique avec StdDraw est de dessiner un triangle avec un point à l'intérieur. Triangle. java accomplit cela avec trois appels à StdDraw. line () et un appel à StdDraw. point (). Commandes de contrôle. La taille par défaut de la toile est de 512 par 512 pixels et le système de coordonnées par défaut est l'unité carrée, mais nous voulons souvent dessiner des tracés à différentes échelles. En outre, nous voulons souvent dessiner des segments de différentes épaisseurs ou des points de taille différente de la norme. Pour répondre à ces besoins, StdDraw a les méthodes suivantes: Par exemple, la séquence à deux appels définit les coordonnées du dessin dans une zone de délimitation dont le coin inférieur gauche est à (x 0. Y 0) et dont le coin supérieur droit est À (x 1. Y 1). Filtrage des données sur un dessin standard. PlotFilter. java lit une séquence de points définis par des coordonnées (x. Y) à partir de l'entrée standard et trace un point à chaque point. Il adopte la convention que les quatre premiers nombres sur l'entrée standard spécifient la boîte de délimitation, de sorte qu'il peut l'échelle le complot. Tracer un graphe de fonction. FunctionGraph. java trace la fonction y sin (4 x) sin (20 x) dans l'intervalle (0, pi). Il y a un nombre infini de points dans l'intervalle, donc nous devons nous contenter d'évaluer la fonction à un nombre fini de points dans l'intervalle. Nous échantillonnons la fonction en choisissant un ensemble de valeurs x, puis en calculant les valeurs y en évaluant la fonction à chaque valeur x. Tracer la fonction en connectant des points successifs avec des lignes produit ce que l'on appelle une approximation linéaire par morceaux. StdDraw comprend également des méthodes pour dessiner des cercles, des rectangles et des polygones arbitraires. Chaque forme définit un contour. Lorsque le nom de la méthode est juste le nom de la forme, ce contour est tracé par le crayon de dessin. Lorsque le nom de la méthode commence par rempli. Les arguments pour circle () définissent un cercle de rayon r les arguments pour square () définissent un carré de longueur latérale 2r centré sur le point donné et les arguments pour polygon () définissent un Séquence de points que nous relions par des lignes, y compris un du dernier point au premier point. Texte et couleur. Pour annoter ou mettre en évidence divers éléments de vos dessins, StdDraw inclut des méthodes de dessin de texte, de définition de la police et de définition de l'encre dans le stylo. Dans ce code, java. awt. Font et java. awt. Color sont des abstractions qui sont implémentées Avec des types non primitifs que vous en apprendrez à la section 3.1. Jusque-là, nous laissons les détails à StdDraw. La couleur d'encre par défaut est noir, la police par défaut est une police Serif de 16 points. Double tamponnage. StdDraw prend en charge une puissante fonctionnalité d'infographie appelée double buffering. Lorsque la double mise en mémoire tampon est activée en appelant enableDoubleBuffering (). Tout le dessin a lieu sur la toile hors écran. Le canevas hors écran ne s'affiche pas, il n'existe que dans la mémoire de l'ordinateur. Ce n'est que lorsque vous appelez show () que votre dessin est copié à partir du canevas hors écran sur le canevas à l'écran. Où il est affiché dans la fenêtre de dessin standard. Vous pouvez penser à la double mise en mémoire tampon comme la collecte de toutes les lignes, les points, les formes et le texte que vous lui dites de dessiner, puis de les dessiner tous simultanément, sur demande. Une raison pour utiliser double tampon est pour l'efficacité lors de l'exécution d'un grand nombre de commandes de dessin. Animations informatiques. Notre utilisation la plus importante du double buffering est de produire des animations informatiques. Où nous créons l'illusion du mouvement en affichant rapidement des dessins statiques. Nous pouvons produire des animations en répétant les quatre étapes suivantes: Effacez la toile hors écran. Dessiner des objets sur l'écran hors écran Copiez le canevas hors écran sur le canevas à l'écran. Attendez un moment. À l'appui de ces étapes, le StdDraw a plusieurs méthodes: Le programme Hello, World pour l'animation est de produire une boule noire qui semble se déplacer sur la toile, rebondissant hors de la frontière selon les lois de collision élastique. Supposons que la boule est à la position (x. Y) et nous voulons créer l'impression de la faire passer à une nouvelle position, disons (x 0.01, y 0.02). Nous le faisons en quatre étapes: Effacer la toile hors écran sur blanc. Dessiner une boule noire à la nouvelle position sur la toile hors-écran. Copiez le canevas hors écran sur le canevas à l'écran. Attendez un moment. Pour créer l'illusion du mouvement, BouncingBall. java itère ces étapes pour toute une séquence de positions de la balle. Images. Notre bibliothèque de tirage standard prend en charge les dessins ainsi que les formes géométriques. La commande StdDraw. picture (x, y, filename) trace l'image dans le nom de fichier donné (JPEG, GIF ou PNG) sur la toile, centrée sur (x, y). BouncingBallDeluxe. java illustre un exemple où la balle rebondissante est remplacée par une image d'une balle de tennis. Interaction de l'utilisateur. Notre bibliothèque de dessin standard comprend également des méthodes pour que l'utilisateur puisse interagir avec la fenêtre en utilisant la souris. Un premier exemple. MouseFollower. java est l'interaction HelloWorld de la souris. Il dessine une boule bleue, centrée sur l'emplacement de la souris. Lorsque l'utilisateur maintient le bouton de la souris enfoncé, la balle change de couleur de bleu en cyan. Un attracteur simple. OneSimpleAttractor. java simule le mouvement d'une boule bleue qui est attirée par la souris. Il représente également une force de traînée. De nombreux attracteurs simples. SimpleAttractors. java simule le mouvement de 20 boules bleues qui sont attirées par la souris. Il représente également une force de traînée. Lorsque l'utilisateur clique sur, les boules se dispersent au hasard. Ressorts. Springs. java met en œuvre un système à ressorts. Audio standard. StdAudio est une bibliothèque que vous pouvez utiliser pour jouer et manipuler des fichiers audio. Il vous permet de jouer, de manipuler et de synthétiser le son. Nous introduisons quelques concepts de base derrière l'un des domaines les plus anciens et les plus importants de l'informatique et de l'informatique scientifique: le traitement du signal numérique. Concert A. Le concert A est une onde sinusoïdale dont l'échelle oscille à une fréquence de 440 fois par seconde. La fonction sin (t) se répète une fois toutes les 2pi sur l'axe x, donc si on mesure t en secondes et on trace la fonction sin (2pi t fois 440) on obtient une courbe qui oscille 440 fois par seconde. L'amplitude (valeur y) correspond au volume. Nous supposons qu'il est mis à l'échelle entre 1 et 1. Autres notes. Une formule mathématique simple caractérise les autres notes sur l'échelle chromatique. Elles sont divisées également sur une échelle logarithmique (base 2): il ya douze notes sur l'échelle chromatique, et on obtient la ième note au-dessus d'une note donnée en multipliant sa fréquence par la (i 12) puissance de 2. Lorsque vous Double ou réduit de moitié la fréquence, vous vous déplacez vers le haut ou vers le bas d'une octave sur l'échelle. Par exemple 880 hertz est une octave au-dessus du concert A et 110 hertz est de deux octaves en dessous du concert A. Échantillonnage. Pour le son numérique, nous représentons une courbe en l'échantillonnant à intervalles réguliers, exactement de la même manière que lorsque nous traçons graphes de fonctions. Nous échantillons assez souvent que nous avons une représentation exacte de la courbe de la fréquence d'échantillonnage largement utilisé est de 44 100 échantillons par seconde. C'est simple: nous représentons le son comme un tableau de nombres (nombres réels qui sont entre moins1 et 1). Par exemple, le fragment de code suivant joue le concert A pendant 10 secondes. Jouez cette mélodie. PlayThatTune. java est un exemple qui montre comment nous pouvons facilement créer de la musique avec StdAudio. Il prend des notes de l'entrée standard, indexé sur l'échelle chromatique du concert A, et les joue sur l'audio standard. Ecrire un programme MaxMin. java qui lit en nombres entiers (autant que l'utilisateur entre) de l'entrée standard et imprime les valeurs maximales et minimales. Ecrire un programme Stats. java qui prend un argument de ligne de commande entier n. Lit n nombres à virgule flottante à partir de l'entrée standard et imprime leur moyenne (valeur moyenne) et l'écart type de l'échantillon (racine carrée de la somme des carrés de leurs différences par rapport à la moyenne, divisée par n moins1). Ecrire un programme LongestRun. java qui lit dans une séquence d'entiers et imprime à la fois l'entier qui apparaît dans une plus longue course consécutive et la longueur de l'exécution. Par exemple, si l'entrée est 1 2 2 1 5 1 1 7 7 7 7 1 1. Alors votre programme devrait imprimer Longest run: 4 7s consécutifs. Ecrire un programme WordCount. java qui lit dans le texte de l'entrée standard et imprime le nombre de mots dans le texte. Dans le cadre de cet exercice, un mot est une séquence de caractères non blancs entourés d'un espace blanc. Écrire un programme Closest. java qui prend trois arguments de ligne de commande à virgule flottante (x, y, z), lit à partir de l'entrée standard une séquence de coordonnées de points ((xi, yi, zi)) et imprime les coordonnées du point Proche de ((x, y, z)). Rappelons que le carré de la distance entre ((x, y, z)) et ((xi, yi, zi)) est ((x - xi) 2 (y - yi) 2 (z - zi) 2). Pour plus d'efficacité, n'utilisez pas Math. sqrt () ou Math. pow (). Compte tenu des positions et des masses d'une séquence d'objets, écrire un programme pour calculer leur centre de masse ou centroïde. Le centroïde est la position moyenne des n objets, pondérés par la masse. Si les positions et les masses sont données par (xi. Yi. Mi), alors le centroïde (x. y.m) est donné par: Ecrire un programme Centroid. java qui lit dans une suite de positions et de masses (xi, yi. Mi) de l'entrée standard et imprime leur centre de masse (x. y.m). Conseil . Modèle de votre programme après Average. java. Rédigez un programme CheckerBoard. java qui prend un argument de ligne de commande n et trace un damier n-by-n avec des carrés rouges et noirs. Couleur de la case inférieure gauche rouge. Ecrire un programme Rose. java qui prend un argument de ligne de commande n et trace une rose avec n pétales (si n est impair) ou 2n pétales (si n est pair) en traçant les coordonnées polaires (r, theta) de la fonction r Sin (n fois theta) pour theta allant de 0 à 2pi radians. Voici la sortie désirée pour n 4, 7 et 8. Écrivez un programme Banner. java qui prend une chaîne s de la ligne de commande et l'afficher en style de bannière à l'écran, se déplaçant de gauche à droite et enroulant au début De la ficelle lorsque la fin est atteinte. Ajoutez un deuxième argument de ligne de commande pour contrôler la vitesse. Rédigez un programme Circles. java qui dessine des cercles pleins de taille aléatoire à des positions aléatoires dans l'unité carrée, produisant des images comme celles ci-dessous. Votre programme doit prendre quatre arguments de ligne de commande: le nombre de cercles, la probabilité que chaque cercle soit noir, le rayon minimal et le rayon maximal. Exercices créatifs Spirographes. Ecrire un programme Spirograph. java qui prend trois arguments de ligne de commande R, r et a et dessine le spirographe résultant. Un spirographe (techniquement, une épicycloïde) est une courbe formée en roulant un cercle de rayon r autour d'un plus grand cercle fixe ou rayon R. Si le décalage de la plume à partir du centre du cercle roulant est (ra), alors l'équation du résultat Courbe au temps t est donnée par Ces courbes ont été popularisés par un jouet qui vend les plus vendus qui contient des disques avec des dents d'engrenage sur les bords et des petits trous que vous pourriez mettre un stylo dedans pour tracer spirographs. Pour un effet 3D spectaculaire, tracez une image circulaire, par ex. Earth. gif au lieu d'un point, et le montrer tournant dans le temps. Voici une image du spirographe résultant lorsque R 180, r 40, et un 15. Horloge. Écrivez un programme Clock. java qui affiche une animation des aiguilles des secondes, des minutes et des heures d'une horloge analogique. Utilisez la méthode StdDraw. show (1000) pour mettre à jour l'affichage environ une fois par seconde. Conseil . Ce peut être l'une des rares fois où vous voulez utiliser l'opérateur avec un double - il fonctionne comme vous vous attendez. Oscilloscope. Rédigez un programme Oscilloscope. java pour simuler la sortie d'un oscilloscope et produire des motifs Lissajous. Ces modèles sont nommés d'après le physicien français, Jules A. Lissajous, qui a étudié les modèles qui surviennent lorsque deux perturbations périodiques mutuellement perpendiculaires se produisent simultanément. Supposons que les entrées sont sinusoïdales, de sorte que les équations paramétriques suivantes décrivent la courbe: Prenez les six paramètres A x. W x La taxe . Theta y. W y. Et theta y de la ligne de commande. Par exemple, la première image ci-dessous a Axe Ay 1, w x 2, w y 3, theta x 20 degrés, theta y 45 degrés. L'autre a des paramètres (1, 1, 5, 3, 30, 45) Exercices Web Comptage de mots et de lignes. Modifiez WordCount. java afin qu'il lit dans le texte de l'entrée standard et imprime le nombre de caractères, de mots et de lignes dans le texte. Problème de pluie. Rédigez un programme Rainfall. java qui lit en nombres entiers non négatifs (représentant les précipitations) un à la fois jusqu'à ce que 999999 soit saisi, puis imprime la moyenne de la valeur (ne comprenant pas 999999). Supprimer les doublons. Ecrire un programme Duplicates. java qui lit dans une séquence d'entiers et imprime les entiers, sauf qu'il supprime des valeurs répétées s'ils apparaissent consécutivement. Par exemple, si l'entrée est 1 2 2 1 5 1 1 7 7 7 7 1 1, votre programme doit imprimer 1 2 1 5 1 7 1. Exécuter le codage de longueur. Ecrire un programme RunLengthEncoder. java qui encode une entrée binaire en utilisant le codage de longueur d'exécution. Ecrire un programme RunLengthDecoder. java qui décode un message codé en longueur d'exécution. Tête et queue. Écrire les programmes Head. java et Tail. java qui prennent une entrée de ligne de commande entière N et impriment la première ou la dernière ligne N du fichier donné. Écrire un programme Caesar. java qui prend un argument de ligne de commande k et applique un chiffrement César avec un décalage k à (par exemple le message VENI, VIDI, VICI est converti en YHQL, YLGL, YLFL. Une séquence de lettres lues à partir de l'entrée standard. Si une lettre n'est pas une lettre majuscule, il suffit de l'imprimer à nouveau. Cesar décodage chiffrer. Comment décoderiez-vous un message chiffré à l'aide d'un chiffre César Conseil. vous n'avez pas besoin d'écrire plus de code Une matrice booléenne possède la propriété de parité lorsque chaque ligne et chaque colonne ont une somme pair. Il s'agit d'un type simple de code de correction d'erreur car si un bit est corrompu dans la transmission (le bit est retourné de 0 à 1 ou de 1 à 0), il peut être détecté et réparé Voici un fichier d'entrée 4 x 4 qui a la propriété de parité: Ecrire un programme ParityCheck. java qui prend un entier N comme une ligne de commande d'entrée et lit dans un Boolean N-by-N (I) la matrice a la propriété de parité, ou (ii) indique quel bit corrompu simple (i, j) peut être retourné pour restaurer la propriété de parité, ou (iii) indique que la matrice a été (Plus de deux bits doivent être modifiés pour restaurer la propriété de parité). Utiliser le moins de stockage interne possible. Astuce: vous n'avez même pas à stocker la matrice fonction Takagis. Plot Fonction Takagis: partout continu, nulle part différentiable. Problème d'auto-stoppeur. Vous interviewez N candidats pour le seul poste d'American Idol. Chaque minute, vous obtenez de voir un nouveau candidat, et vous avez une minute pour décider si oui ou non déclarer cette personne l'idole américaine. Vous ne pouvez pas changer d'avis une fois que vous avez fini d'interviewer le candidat. Supposons que vous pouvez immédiatement évaluer chaque candidat avec un seul nombre réel entre 0 et 1, mais bien sûr, vous ne connaissez pas la cote des candidats pas encore vu. Concevoir une stratégie et écrire un programme AmericanIdol qui a au moins 25 chances de choisir le meilleur candidat (en supposant que les candidats arrivent dans un ordre aléatoire), en lisant les 500 valeurs de données de l'entrée standard. L'interview pour N2 minutes et enregistrer la cote du meilleur candidat vu jusqu'ici. Dans les prochaines minutes N2, choisissez le premier candidat qui a une note plus élevée que celle enregistrée. Cela donne au moins 25 chances puisque vous obtiendrez le meilleur candidat si le second meilleur candidat arrive dans les premières minutes de N2, et le meilleur candidat arrive dans les N2 dernières minutes. Cela peut être légèrement amélioré à 1e 0,36788 en utilisant essentiellement la même stratégie, mais la commutation au temps Ne. Diamants imbriqués. Rédigez un programme Diamonds. java qui prend une entrée de ligne de commande N et trace N carrés et diamants imbriqués. Ci-dessous est la sortie désirée pour N 3, 4 et 5. Polygones réguliers. Créez une fonction pour tracer un N-gon, centré sur (x, y) de longueur s. Utilisez la fonction pour dessiner des polygones imbriqués comme l'image ci-dessous. Boire des carrés. Écrire un programme BulgingSquares. java qui dessine l'illusion d'optique suivante de Akiyoshi Kitaoka Le centre semble gonfler vers l'extérieur même si tous les carrés sont de la même taille. Spirales. Supposons que N souris qui commencent sur les sommets d'un polygone régulier avec N côtés, et ils se dirigent tous vers la souris la plus proche (dans le sens anti-horaire) jusqu'à ce qu'ils se rencontrent tous. Rédigez un programme pour tracer les chemins logarithmiques en spirale qu'ils tracent en dessinant des N-gones imbriqués, tournés et rétrécis comme dans cette animation. Spirale. Écrire un programme pour dessiner une spirale comme celle ci-dessous. Globe. Rédigez un programme Globe. java qui prend un vrai argument de ligne de commande alpha et trace un motif globe-like avec le paramètre alpha. Tracez les coordonnées polaires (r, theta) de la fonction f (theta) cos (alpha fois theta) pour theta allant de 0 à 7200 degrés. Ci-dessous la sortie désirée pour alpha 0,8, 0,9 et 0,95. Chaînes de dessin. Rédigez un programme RandomText. java qui prend une chaîne s et un entier N comme entrées de ligne de commande, et écrit la chaîne N fois à un endroit aléatoire, et dans une couleur aléatoire. Randonnée 2D aléatoire. Ecrire un programme RandomWalk. java pour simuler une randonnée aléatoire 2D et animer les résultats. Commencez au centre d'une grille 2N-by-2N. L'emplacement actuel est affiché en bleu le tracé en blanc. Table tournante. Vous êtes assis à une table carrée tournante (comme une Susan paresseuse), et il ya quatre pièces de monnaie placées dans les quatre coins de la table. Votre but est de retourner les pièces de monnaie de sorte qu'elles soient toutes les têtes ou toutes les queues, à quel point une cloche sonne pour vous avertir que vous êtes fait. Vous pouvez sélectionner deux d'entre eux, déterminer leur orientation et (facultativement) retourner l'un ou l'autre ou les deux sur. Pour rendre les choses difficiles, vous avez les yeux bandés, et la table est filée après chaque fois que vous sélectionnez deux pièces. Rédigez un programme RotatingTable. java qui initialise les pièces à des orientations aléatoires. Ensuite, il invite l'utilisateur à sélectionner deux positions (1-4), et identifie l'orientation de chaque pièce. Ensuite, l'utilisateur peut spécifier lequel, le cas échéant, des deux pièces à basculer. Le processus se répète jusqu'à ce que l'utilisateur résolve le puzzle. Solveur de tables rotatives. Rédigez un autre programme RotatingTableSolver. java pour résoudre le puzzle de la table tournante. Une stratégie efficace est de choisir deux pièces de monnaie au hasard et de les renverser aux têtes. Toutefois, si vous obtenez vraiment malchanceux, cela pourrait prendre un nombre arbitraire d'étapes. Objectif: concevoir une stratégie qui résout toujours le puzzle dans au plus 5 étapes. Hex. Hex est un jeu de société à deux joueurs popularisé par John Nash alors qu'il était étudiant à l'université de Princeton, puis commercialisé par Parker Brothers. Il est joué sur une grille hexagonale sous la forme d'un diamant de 11 par 11. Ecrire un programme Hex. java qui dessine le tableau. Projectile mouvement avec traînée. Ecrire un programme BallisticMotion. java qui trace la trajectoire d'une balle qui est tourné avec la vitesse v à un angle theta. Tenir compte des forces de gravité et de traînée. Supposons que la force de traînée est proportionnelle au carré de la vitesse. En utilisant les équations de Newtons des mouvements et la méthode d'Euler-Cromer, mettre à jour la position, la vitesse et l'accélération selon les équations suivantes: Utiliser G 9.8, C 0.002, et placer la vitesse initiale à 180 et l'angle à 60 degrés. Cœur. Écrire un programme Heart. java pour dessiner un cœur rose: Dessinez un diamant, puis dessinez deux cercles vers le haut à gauche et le haut à droite. Changer de carré. Ecrire un programme qui dessine un carré et change sa couleur chaque seconde. Mouvement harmonique simple. Répétez l'exercice précédent, mais animez les motifs Lissajous comme dans cette applet. Ex: A B w x w y 1, mais à chaque fois t dessine 100 points avec phi x allant de 0 à 720 degrés et phi x allant de 0 à 1080 degrés. Bresenhams algorithme de tracé. Pour tracer un segment de ligne de (x1, y1) à (x2, y2) sur un moniteur, par exemple 1024 par 1024, vous devez faire une approximation discrète de la ligne continue et déterminer exactement les pixels à activer. L'algorithme de dessin de ligne de Bresenhams est une solution intelligente qui fonctionne lorsque la pente est entre 0 et 1 et x1. Modifie l'algorithme de Bresenhams pour traiter des segments de ligne arbitraires. Millers folie. Ecrire un programme Madness. java pour tracer l'équation paramétrique: où le paramètre t est en radians. Vous devriez obtenir l'image suivante complexe. Expérimentez en changeant les paramètres et en produisant des images originales. Fays papillon. Ecrire un programme Butterfly. java pour tracer l'équation polaire: où le paramètre t est en radians. Vous devriez obtenir une image semblable à celle d'un papillon. Expérimentez en changeant les paramètres et en produisant des images originales. Base de données des étudiants. Le fichier students. txt contient une liste d'étudiants inscrits à une classe d'informatique d'introduction à Princeton. La première ligne contient un entier N qui spécifie le nombre d'étudiants dans la base de données. Chacune des N lignes suivantes se compose de quatre éléments d'information, séparés par des espaces: prénom, nom, adresse électronique et numéro de section. Le programme Students. java lit dans l'entier N puis N lignes de données d'entrée standard, stocke les données dans quatre tableaux parallèles (un tableau d'entiers pour le numéro de section et des tableaux de chaînes pour les autres champs). Ensuite, le programme imprime une liste d'élèves dans la section 4 et 5. Mélange. Lors de l'élection présidentielle de l'État de Californie du 7 octobre 2003, il y avait 135 candidats officiels. Pour éviter les préjugés naturels contre les candidats dont les noms apparaissent à la fin de l'alphabet (Jon W. Zellhoefer), les responsables électoraux californiens ont cherché à ordonner les candidats dans un ordre aléatoire. Ecrire un programme de programme Shuffle. java qui prend un argument de ligne de commande N, lit dans N chaînes à partir de l'entrée standard, et les imprime en arrière dans l'ordre mélangé. (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. Conseil . 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. Game. 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. Répondre . 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. Maximisez votre expérience WebAssign et assurez-vous que le nouveau trimestre commence sans heurts. Avec WebAssign, vous obtenez les meilleurs outils pédagogiques pour les manuels de calcul les plus importants du marché, un soutien supérieur aux étudiants et de nombreuses ressources de la faculté. WebAssign travaille avec vous pour créer un laboratoire personnalisé ou pour adopter un de nos laboratoires prêts à l'emploi. New Student to WebAssign Découvrez comment il est facile de commencer. WebAssign est une puissante solution numérique conçue par les éducateurs pour enrichir l'expérience d'enseignement et d'apprentissage. WebAssign fournit un contenu étendu, une évaluation instantanée et un support supérieur. À la une En vedette: À l'intérieur de la classe mathématique Voyez comment cinq utilisateurs innovants de WebAssign améliorent la salle de classe en mathématiques. Apprenez des astuces pour intéresser les étudiants et tirer le meilleur parti des fonctionnalités flexibles de WebAssigns. Télécharger maintenant Contenu supplémentaire gratuit WebAssign propose une vaste sélection de contenus mathématiques testés et testés par des pairs, y compris des banques de tutorat et des évaluations. Tous les contenus sont disponibles gratuitement pour les utilisateurs de WebAssign. Lire la suite Pourquoi WebAssign WebAssign met des outils puissants dans les mains des instructeurs pour les aider à réaliser leurs objectifs d'enseignement. Regardez notre vidéo pour voir comment WebAssign peut vous aider. Regarder la vidéo Notre contenu disponible


No comments:

Post a Comment