Sie sind auf Seite 1von 99

Kurs Einführung in die Programmierung

Kapitel 1: Grundlagen.

1. erste Programme.

Übung 5: Halten Sie die Bewegung aufrecht.

Die Syntax eines Programms ist recht einfach:

1. Wir schreiben eine Zeile, in der Programm steht, gefolgt von einer öffnenden
Klammer: {
2. Hier sind die Befehle: einer pro Zeile
3. Und schließlich eine letzte Taste, die die zuvor geöffnete Taste schließt }

Antwort:

Programm {
Bewegung(Nord)
Bewegung(Nord)
Bewegung(Nord)
}

Übung 6: Überall.

Antwort:

Programm {
Bewegung(Süd)
Bewegung(Ost)
Bewegung(Ost)
}

Übung 7: Die Ordnung der Dinge.

Als Menschen neigen wir dazu, in Bezug auf das Endergebnis zu denken, d. h. wir betonen
dasZiel des Programms. Wir interessieren uns mehr dafür, was es bewirkt, nicht wie. Auf
diese Weise würde man sagen, dass sieden Kopf einfachnach Nordosten bewegt.

Aus diesem Grund gibt es mehrere Möglichkeiten, ein und dasselbe Problem zu lösen: Wir
können mehrere Programme erstellen, die dasselbe tun (dasWas), es aber unterschiedlich
tun (dasWie).

Antwort:

Programm {
Bewegung(Ost)
Bewegung(Nord)
}

Aufgabe 8: Ja, auch das kann gebrochen werden.

Sie wollen zwarnie, dass Ihr Programm kaputt geht, aber es wird Ihnen bestimmtoft
passieren. Aber das ist kein Grund, frustriert zu sein. Wir versichern Ihnen, dass das jedem
schon einmal passiert ist (na ja, 2, 3, 100, 800 Mal...).

Antwort:

Programm{
Bewegung(Süd)
}

Übung 9: Unsere ersten Bälle.

Der Kopf kann sich nicht nur bewegen, sondern auch Pellets in deraktuellen Zelle
platzieren. Zu diesem Zweck gibt es die Operation Put, die den Kopf anweist, eine Perle in
der angegebenen Farbe abzulegen:

Antwort:

Programm{
Put(Rot)
}

Übung 10: Mehr und mehr Bälle.

Antwort:

Programm {
Put(Rot)
Put(Rot)
Setzen(Blau)
Put(Grün)
Put(Rot)
}

Übung 11: Lege deine ersten Bälle.

Wie du vielleicht bemerkt hast, sind diese Bretter ein bisschen magisch, wir können so viele
Kugeln in ein Feld legen, wie wir wollen: 2, 4, 12, 50, 1000. Es gibt keine Grenzen!

Das ist eine sehr interessante Sache, die beim Programmieren passiert: Wir können mit so
großen Mengen arbeiten, wie wir wollen.
Antwort:

Programm{
Put(Rot)
Put(Rot)
Put(Rot)
Put(Rot)
Put(Schwarz)
Put(Schwarz)
Put(Schwarz)
}

Übung 12: Ausballern.

Genauso wie es einen"Put Ball" gibt, gibt es einen"Take Ball", der genau eine Kugel der
gegebenen Farbe entfernt.

Antwort:

Programm {
Bewegung(Süd)
Entfernen(Rot)
}

Übung 13: Wenn es keine Pellets gibt.

Antwort:

Programm{
Entfernen(Grün)
}

Übung 14: Zelle löschen.

Antwort:

Programm{
Sacar(Blau)
Entfernen(Grün)
Entfernen(Schwarz)
Entfernen(Rot)
}

2. Practice First-Programme.

Übung 1: Aufwärmen.

Das folgende Programm platziert eine rote Kugel in der Ausgangsposition und eine
schwarze Kugel im Osten.
Antwort:

Programm {
Put(Rot)
Bewegung(Ost)
Put(Schwarz)
}

Übung 2: Kombinieren von Befehlen.

Erstelle ein Programm, das zwei Kugeln in die Startposition und zwei Kugeln in das östlich
daneben liegende Feld legt. Alle Bälle müssen rot sein.

Antwort:

Programm{
Put(Rot)
Put(Rot)
Bewegung(Ost)
Put(Rot)
Put(Rot)
}

Übung 3: Die rote Reihe.

Erstellen Sie ein Programm, das, ausgehend von einem leeren Brett mit dem Kopf im
Ursprung, eine Linie von vier Zellen nach Osten zieht. Die Kügelchen müssen rot sein und
Sie müssen ein Kügelchen pro Zelle einsetzen.

Antwort:

Programm{
Put(Rot)
Bewegung(Ost)
Put(Rot)
Bewegung(Ost)
Put(Rot)
Bewegung(Ost)
Put(Rot)
}

Übung 4: Eine kleine Leiter.

Erstellen Sie mit den Ihnen bereits bekannten Werkzeugen ein Programm, das eine blaue
Treppe wie auf dem Bild zeichnet. Der Kopf beginnt am Ursprung (d.h. am südwestlichen
Rand) und sollte sich am unteren rechten Ende der Treppe befinden.

Antwort:
Programm{
Setzen(Blau)
Bewegung(Nord)
Setzen(Blau)
Bewegung(Nord)
Setzen(Blau)
Bewegung(Süd)
Bewegung(Ost)
Setzen(Blau)
Bewegung(Süd)
Setzen(Blau)
Bewegung(Ost)
Setzen(Blau)
}

Übung 5: Portugal.

Da wir nicht zu wählerisch sein wollen, bitten wir Sie um eine vereinfachte Version der
Flagge Portugals.

Antwort:

Programm{
Put(Grün)
Bewegung(Nord)
Put(Grün)
Bewegung(Ost)
Put(Rot)
Bewegung(Süd)
Put(Rot)
Bewegung(Ost)
Put(Rot)
Bewegung(Nord)
Put(Rot)
}

Übung 6: Und jetzt noch eine aus größerer Entfernung.

Antwort:

Programm{
Setzen(Blau)
Bewegung(Ost)
Setzen(Blau)
Bewegung(Ost)
Setzen(Blau)
Bewegung(Ost)
Setzen(Blau)
Bewegung(Ost)
Setzen(Blau)
Bewegung(Nord)
Bewegung(Nord)
Setzen(Blau)
Bewegung(West)
Setzen(Blau)
Bewegung(West)
Setzen(Blau)
Bewegung(Süd)
Put(Rot)
Bewegung(Nord)
Bewegung(West)
Setzen(Blau)
Bewegung(West)
Setzen(Blau)
Bewegung(Süd)
Bewegung(Süd)
}

Übung 7: Reinigung des Gartens.

Erstellen Sie mit dem Kopf an der Quelle ein Programm, das sich um das"Beschneiden" der
Bildtafel kümmert: Entfernen Sie alle grünen Kugeln. Am Ende sollte die Spindel dort
enden, wo sie begonnen hat.

Antwort:

Programm{
Entfernen(Grün)
Bewegung(Ost)
Entfernen(Grün)
Bewegung(Ost)
Entfernen(Grün)
Bewegung(Nord)
Entfernen(Grün)
Bewegung(Nord)
Entfernen(Grün)
Bewegung(West)
Entfernen(Grün)
Bewegung(West)
Entfernen(Grün)
Bewegung(Süd)
Entfernen(Grün)
Bewegung(Süd)
}

Übung 8: Ersetzen Sie die Kügelchen.

Kommen wir nun zu etwas, das etwas schwieriger ist. Wir geben dir ein 2x2-Brett (d.h. mit
4 Zellen), auf dem jede Zelle eine kleine rote Kugel hat.

Deine Aufgabe ist es, ein Programm zu erstellen, das alle roten Kugeln durch grüne ersetzt.

Antwort:

Programm{
Entfernen(Rot)
Put(Grün)
Bewegung(Ost)
Entfernen(Rot)
Put(Grün)
Bewegung(Nord)
Entfernen(Rot)
Put(Grün)
Bewegung(West)
Entfernen(Rot)
Put(Grün)
Bewegung(Süd)
}

3. Verfahren.

Übung 1: Worum geht es?

Sie sollten versuchen, herauszufinden, was das Programm macht.

Antwort:

 Zeichne ein Quadrat aus schwarzen Kugeln

Übung 2: Ein etwas längeres Programm.

Jetzt haben Sie die Möglichkeit, das Programm in Aktion zu erleben.

Antwort:

Weiter

Übung 3: Die Dinge bei ihrem Namen nennen.

Antwort:

Weiter

Übung 4: Dem Computer Aufgaben beibringen.

Wie Sie am Beispiel des Quadrats gesehen haben, können Sie zwischen zwei Arten von
Befehlen innerhalb eines Programms unterscheiden:

 diejenigen, diedurch die Sprache definiert sind und dazu dienen, grundlegende
Operationen auszudrücken, wie z. B. Move, Put und Take. Wir werden
dieseprimitiven Befehle oder einfachPrimitive nennen;
 und solche, die wirselbst definieren und die wir für komplexere Aufgaben
verwenden. Wie der Name dieser Lektion schon sagt, handelt es sich dabei um
dieVerfahren.

Wenn wir eine Prozedurdefinieren, "lehren" wir den Computer, eine neue Aufgabe
auszuführen, die ursprünglich nicht in der Sprache enthalten war.

Achten Sie auf die Syntax des Beispiels, um zu sehen, wie wir eine Prozedur definieren
und wie wir sie in einem Programmaufrufen.

Antwort:

Kopieren, einfügen und senden Sie den Code

Übung 5: Verfahren in Aktion.

Vervollständigen Sie den Code so, dass er nicht nur die Prozedur PutBlackAndRed
definiert, sondern sie auch im Programm aufruft.

Antwort:

Programm{
SetBlackAndRed()
}

Übung 6: Verfahren schreiben.

Wir wissen inzwischen, dass wir beim Programmieren immer die Syntax berücksichtigen
müssen und dass es für die Definition neuer Prozeduren auch Regeln gibt:

 Wir beginnen mit dem reservierten Wortverfahren;


 Wir wählen einen Namen, der ihn beschreibt, und schreiben ihn mit einem
Großbuchstaben, gefolgt von einer Klammer ( );
 Wir schließen die gewünschten Aktionen in geschweifte Klammern { } ein.

Und wenn wir es verwenden wollen, müssen wir es innerhalb des Programms aufrufen,
indem wir seinen Namen so eingeben, wie er ist, ohne die Klammern ( ) zu vergessen.
Achten Sie auf die Syntax!

Antwort:

procedure Put3Greens() {
Put(Grün)
Put(Grün)
Put(Grün)
}
Programm{
Set3Greens()
}

Übung 7: Verfahren, ich rufe dich!

Erstellen Sie ein Programm, das dies tut, indem Sie die Prozedur Put3Greens aufrufen.
Denken Sie daran, dass wir sie bereits im AbschnittBibliothek für Sie definiert haben, so
dass Sie sie nicht noch einmal schreiben müssen!

Antwort:

Programm{
Set3Greens()
Bewegung(Ost)
Set3Greens()
}

Aufgabe 8: Eine Definition, die "unendlich" verwendet.

Erstelle ein Programm, das 9 kleine rote Kugeln in die aktuelle Zelle legt, indem du die
Prozedur Put3Red so oft wie nötig aufrufst.

Antwort:

Programm{
Put3Red()
Put3Red()
Put3Red()
}

Übung 9: Verfahren innerhalb von Verfahren.

Ich habe die Prozedur Put9Red definiert, die unter Verwendung von Put3Red neun rote
Kugeln in eine Zelle legt. Nach der Definition rufen Sie die neue Prozedur in einem
Programm auf.

Antwort:

procedure Put9Red(){
Put3Red()
Put3Red()
Put3Red()
}
Programm{
Put9Red()
}
Übung 10: Zeichnen mit Phantasie.

Definieren Sie die DrawBlackTip-Prozedur und rufen Sie sie in einem Programm auf.
Der Kopf beginnt am Ursprung und sollte am unteren rechten Ende der Spitze enden.

Antwort:

procedure DrawBlackTip(){
Put(Schwarz)
}
Programm{
DrawBlackTip()
Bewegung(Nord)
DrawBlackTip()
Bewegung(Süd)
Bewegung(Ost)
DrawBlackTip()
}

Übung 11: Von Anfang bis Ende.

Definieren Sie die Prozedur DrawTwoPoints und rufen Sie sie in einem Programm auf.
Denken Sie daran, DrawBlackTip zu verwenden.

Antwort:

procedure DrawTwoPoints() {
DrawBlackTip()
Bewegung(Nord)
Bewegung(Nord)
Bewegung(Ost)
DrawBlackTip()
}
Programm{
DrawTwoPoints()
}

Übung 12: Rot am Rande.

Antwort:

procedure RojoAlBorde() {
GoToEdge(Nord)
GoToEdge(West)
Put(Rot)
}
Programm{
RojoAlBorde()
}

Übung 13: Dekorieren der Tafel.


Ich habe zwei Prozeduren definiert: die PutWreath-Prozedur, um 3 rote und 3 grüne Kugeln
in einer Zelle zu platzieren, und die DecorateBoard-Prozedur, um sie zu verwenden und
einen Kranz in jede obere Ecke zu setzen. Rufen Sie DecorarTablero im Programm auf.
Bitte beachten Sie, dass wir die Ausgangsposition, in der sich der Kopf befinden wird, nicht
kennen.

Antwort:

procedure PutWreath(){
Set3Greens()
Put3Red()
}
procedure DecorateBoard(){
GoToEdge(Nord)
GoToEdge(West)
PutWreath()
GoToEdge(Nord)
GoToEdge(Ost)
PutWreath()
}
Programm{
DecorateBoard()
}

Übung 14: Farben, Farben, Farben.

Ich habe eine DrawColourLine-Prozedur definiert, dieeine vierzelligemehrfarbige Linie


nach Ostenzeichnet und am Ende der Linie den Kopf in der Ausgangszelle zeichnet. Rufen
Sie die neue Prozedur in einem Programm auf.

Antwort:

procedure Farbe(){
Put(Rot)
Setzen(Grün)
Put(Schwarz)
Setzen(Blau)
}
procedure DrawColourLine(){
Farbe()
Bewegung(Ost)
Farbe()
Bewegung(Ost)
Farbe()
Bewegung(Ost)
Farbe()
GoToEdge(West)
}
Programm{
DrawColourLine()
}
Übung 15: Farbiges Quadrat.

Definieren Sie eine DrawColouredSquare-Prozedur, die ein 4×4-Zellen-Quadrat zeichnet, in


dem jede Zelle einen Ball in jeder Farbe hat, und rufen Sie sie im Programm auf. Der
Kopf muss in der Ausgangszelle bleiben.

Antwort:

procedure DrawColourSquare(){
DrawColourLine()
Bewegung(Nord)
DrawColourLine()
Bewegung(Nord)
DrawColourLine()
Bewegung(Nord)
DrawColourLine()
GoToEdge(Süd)
}
Programm{
DrawColourSquare()
}

4. Einfache Wiederholung.

Übung 1: MoveWest10.

Zum Aufwärmen: Ich habe eine Prozedur MoveWest10 definiert, die die Spindel 10 Mal
nach Westen bewegt.

Antwort:

procedure MoveWest10(){
Bewegung(West)
Bewegung(West)
Bewegung(West)
Bewegung(West)
Bewegung(West)
Bewegung(West)
Bewegung(West)
Bewegung(West)
Bewegung(West)
Bewegung(West)
}

Übung 2: Der Computer wiederholt die Aufgabe für uns.

Wenn es notwendig ist, einen Befehl (z. B. Move, Set, DrawBlackLine usw.) eine
bestimmte Anzahl von Malen zu wiederholen, können wir die Repeat-Anweisung
verwenden, anstatt zu kopieren und einzufügen, wie wir es bis jetzt getan haben.
Antwort:

Kopieren, einfügen und senden Sie den Code

Übung 3: MoveWest5 mit Wiederholung.

Ich habe eine MoveWest5-Prozedur definiert, die sich 5 Mal nach Westen bewegt.

Antwort:

procedure MoveWest5(){
Wiederholung(5){
Bewegung(West)
}
}

Übung 4: Es geht nicht nur um Wiederholungen.

Ich habe die Prozedur Put3AtoNortheast() definiert, die 3 schwarze Kugeln in die erste
Zelle nordöstlich der Kopfzeile setzt.

Antwort:

procedure Put3Anortheast(){
Bewegung(Nord)
Bewegung(Ost)
Wiederholung(3){
Put(Schwarz)
}
}

Übung 5: Dies gilt auch danach.

Ich habe die Prozedur PutBlueFar() definiert, die eine blaue Kugel 4 Zellen weiter östlich
platziert.

Antwort:

procedure PutBlueFar(){
Wiederholung(4){
Bewegung(Ost)
}
Setzen(Blau)
}

Übung 6: Wiederholung mehrerer Befehle.


Antwort:

procedure DrawBlackLine6(){
Wiederholung(6){
Put(Schwarz)
Bewegung(Ost)
}
}

Aufgabe 7: Wo liegt der Fehler?

Antwort:

procedure RedLine4() {
Wiederholung(4) {
Put(Rot)
Bewegung(Nord)
}
}

Übung 8: Diagonale mit einem Ball.

Ich habe eine Prozedur Diagonal4Blue() definiert, die eine Diagonale der Länge 4 nach
Nordosten zeichnet, wobei jede Zelle eine blaue Kugel hat. Der Kopf sollte sich an der in
der Abbildung gezeigten Stelle befinden.

Antwort:

procedure Diagonal4Blue(){
Wiederholung(4){
Setzen(Blau)
Bewegung(Nord)
Bewegung(Ost)
}
}

Übung 9: "Schwere" Diagonale.

Ich habe eine Prozedur DiagonalHeavy4Blue() definiert, die statt 1 Kügelchen in jede Zelle
21 Kügelchen setzt.

Antwort:

procedure Pellets(){
Wiederholung(21){
Setzen(Blau)
}
}
procedure DiagonalHeavyDiagonal4Blue(){
Wiederholung(4){
Bolitas()
Bewegung(Nord)
Bewegung(Ost)
}
}

Übung 10: Der Grenzfall.

Antwort:

procedure LineaNegra4Este(){
Wiederholung(3){
Put(Schwarz)
Bewegung(Ost)
}
Put(Schwarz)
}

Aufgabe 11: Wir zeichnen von Seite zu Seite ein Quadrat.

Ich habe die Prozedur BlackSquare4() definiert, um ein 4x4 Quadrat mit schwarzen
Kugeln zu zeichnen. Zu Beginn befindet sich der Kopf in der linken unteren Ecke des
Quadrats (nicht unbedingt des Spielbretts) und am Ende des Programms sollte der Kopf in
der rechten oberen Ecke des Quadrats sein. Vergessen Sie nicht, LineaNegra4Este()
aufzurufen, das sich im Abschnitt Bibliothek befindet.

Antwort:

procedure BlackSquare4(){
Wiederholung(3){
BlackLine4East()
Wiederholung(3){
Bewegung(West)
}
Bewegung(Nord)
}
BlackLine4East()
}

5. Parameter.

Übung 1: Denken in Teilaufgaben.

Ich habe die Prozedur DrawBlackLine3() definiert, die, wie der Name schon sagt,eine
Linie zeichnet, indem sie 3 aufeinanderfolgende schwarze Kugeln nach Osten setzt und den
Kopf dort lässt, wo er begonnen hat. Rufen Sie es in einem Programm auf.
In der Bibliothek finden Sie das BackToBack-Verfahren. Das heißt, Sie können sie
aufrufen, ohne sie definieren zu müssen!

Antwort:

procedure DrawBlackLine3(){
Wiederholung(2){
Put(Schwarz)
Bewegung(Ost)
}
Put(Schwarz)
BackToBack()

}
Programm{
DrawBlackLine3()
}

Übung 2: Zeichnen eines Quadrats mit Teilaufgaben.

Ich habe die Prozedur DrawBlackSquareBlackSide3() definiert, die mit DrawBlackLine3()


ein schwarzes Quadrat auf das Brett zeichnet. Rufen Sie es in einem Programm auf.

Antwort:

procedure DrawBlackSquareSide3(){
Wiederholung(2){
DrawBlackLine3()
Bewegung(Nord)
}
DrawBlackLine3()
}
Programm{
DrawBlackSquareSide3()
}

Übung 3: Die Farbe der Hoffnung.

Definieren Sie die Prozedur DrawGreenLine3() zum Zeichnen einer grünen Linie und rufen
Sie sie im Programm auf.

Antwort:

procedure DrawGreenLine3(){
Wiederholung(2){
Put(Grün)
Bewegung(Ost)
}
Put(Grün)
BackToBack()
}
Programm{
DrawGreenLine3()
}

Übung 4: Die Fehlenden.

Ich habe die Prozeduren DrawRedLine3() und DrawBlueLine3() definiert, um die Farben
Rot und Blau hinzuzufügen.

Antwort:

procedure DrawRedLine3(){
Wiederholung(2){
Put(Rot)
Bewegung(Ost)
}
Put(Rot)
BackToBack()
}
procedure DrawBlueLine3(){
Wiederholung(2){
Setzen(Blau)
Bewegung(Ost)
}
Setzen(Blau)
BackToBack()
}

Übung 5: Verfahren mit Löchern.

Antwort:

Kopieren, einfügen und senden Sie den Code

Übung 6: Die Lücken ausfüllen.

Erstelle ein Programm, das drei kleine grüne Kugeln legt, die die Farbe Grün als Parameter
übergeben.

Antwort:

Programm{
Satz3(Grün)
}

Übung 7: DrawLine3.
Ich habe die Prozedur DrawLine3 definiert, die eine Farbe erhält und eine Linie in dieser
Farbe zeichnet. Machen Sie sich keine Sorgen über die Programme, die es mit jeder der
Farben aufrufen, sie sind auf unserer Seite.

Antwort:

procedure DrawLine3(Farbe){
Wiederholung(2){
Put(Farbe)
Bewegung(Ost)
}
Put(Farbe)
BackToBack()
}

Übung 8: DrawSideSquare3.

Indem ich DrawLine3 aufrufe, habe ich die Prozedur DrawSideSquare3 definiert, die
eine Farbe erhält und ein 3x3-Quadrat in dieser Farbe zeichnet.

Antwort:

procedure DrawSideSquare3(Farbe){
Wiederholung(2){
DrawLine3(Farbe)
Bewegung(Nord)
}
DrawLine3(Farbe)
}

Übung 9: Übergabe mehrerer Parameter.

Erstellen Sie ein Programm, das die neue Version von DrawLine3 aufruft (Sie brauchen es
nicht zu definieren, sondern nur aufzurufen) und ein mehrfarbiges Quadrat zeichnet, wobei
Sie als Parameter die Farbe und die Richtung übergeben.

Antwort:

Programm{
DrawLine3(Grün, Ost)
Bewegung(Ost)
DrawLine3(Rot, Nord)
Bewegung(Nord)
DrawLine3(Schwarz, West)
Bewegung(West)
DrawLine3(Blau, Süd)
}

Übung 10: Recht, Ordnung und BOOM.


Erstellen Sie ein beliebiges Programm, das DrawLine3 aufruft, aber versuchen Sie diesmal,
es mit umgekehrten Argumenten aufzurufen.

Antwort:

Programm{
DrawLine3(Nord, Süd)
}

Aufgabe 11: Ein Argument für zwei Parameter.

Was glauben Sie, was passiert, wenn wir einer Prozedur weniger Argumente geben, als sie
braucht?

Erstellen Sie ein Programm, das DrawLine3 aufruft, ihm aber nur ein Argument übergibt.

Antwort:

Programm{
DrawLine3(Grün)
}

Übung 12: Aller guten Dinge sind drei.

Zum Abschluss dieser Lektion werden wir eine Prozedur namens Triad definieren, die drei
Parameter erhält!

Triada erhält drei Farben pro Parameter und legt drei Kugeln nebeneinander nach Osten, in
der gleichen Reihenfolge, in der sie empfangen wurden. Die Spindel beginnt am Ursprung
und muss an der letzten Perle des Dreiklangs enden.

Antwort:

procedure Triad(FarbeRot, FarbeGrün, FarbeBlau){


Setzen(FarbeRot)
Bewegung(Ost)
Setzen(FarbeGrün)
Bewegung(Ost)
Setzen(FarbeBlau)
}

6. Einfache Wiederholungen üben.

Übung 1: Aufwärmen... Ich komme zurück!


Möchten Sie das Verfahren Diagonal4BlueBack definieren? Dieses Verfahren
solltedasselbe bewirken wie Diagonal4Blue, aber Sie müssen die Spindelin der
Ausgangsposition belassen. Denken Sie daran, dass Sie alles in der Bibliothek aufrufen
können, ohne es neu definieren zu müssen.

Antwort:

procedure Diagonal4BlueBack(){
Diagonal4Blue()
Wiederholung(4){
Bewegung(West)
Bewegung(Süd)
}
}

Übung 2: Eine breitere Diagonale.

Die Prozedur muss DiagonalBand4 heißen.

Antwort:

procedure DiagonalBand4() {
Wiederholung(3) {
Diagonal4BlueBack()
Bewegung(Nord)
}
GoToEdge(Süd)
}

Übung 3: Legen wir... So viel, wie wir wollen.

Ich habe die Prozedur PutN(Menge, Farbe) definiert.

Antwort:

procedure PutN(a, b){


repeat(a){
Put(b)
}
}

Übung 4: Gedenktag.

Das Ziel besteht also darin, eine MemoryDay()-Prozedur zu definieren:

 Lege in die aktuelle Zelle 24 blaue Kugeln, die den Tagdarstellen.


 In das Feld unmittelbar östlich davon legst du 3 grüne Kugeln, dieden
Monatdarstellen.
 Setzen Sie in die Zelle darunter 1976 kleine schwarze Kugeln, die das
Jahrdarstellen.

Antwort:

procedure SpeicherTag(){
SetN(24, Blau)
Bewegung(Ost)
SetN(3, Grün)
Bewegung(Ost)
PonerN(1976, Schwarz)
}

Aufgabe 5: Schreiben Sie ein beliebiges Datum.

Ich habe die Prozedur Date(day, month, year) definiert, die diedrei entsprechendenWerte
empfängt und das Datum schreibt, das sie darstellen, wie folgt:

 In der aktuellen Zelle so viele blaue Kugeln, wie es dem Tagentspricht.


 In die Zelle unmittelbar östlich davon werden so viele grüne Kugeln gelegt, wie es
dem Monatentspricht.
 Schreibe in die Zelle darunter so viele schwarze Kugeln, wie es der
Jahreszahlentspricht.

Antwort:

procedure Datum(Tag, Monat, Jahr){


SetN(Tag, Blau)
Bewegung(Ost)
SetN(Monat, Grün)
Bewegung(Ost)
SetN(Jahr, Schwarz)
}

Übung 6: Bewegen wir uns... So viel wie wir wollen.

Ich habe eine Prozedur MoveN(amount, direction) definiert, die den Kopf die angegebene
Anzahl von Bewegungen in die angegebene Richtung ausführen lässt.

Antwort:

procedure MoveN(Menge, Adresse){


repeat(Menge){
Verschieben(Adresse)
}
}

Aufgabe 7: Die Zahlen auf der Uhr.


Ich habe eine DrawClock(radius)-Prozedur definiert, die die Uhrennummern wie oben
beschriebenum das aktuelle Feld herum anordnet. Die Größe der Uhr wird durch
denRadius angegeben, den Sie als Parameter erhalten: je größer der Radius, desto weiter
sind die Zahlen vom Zentrum entfernt.

Antwort:

procedure DrawClock(radius){
MoveN(Radius,Nord)
SetN(12,Rot)
MoveN(Radius,Ost)
MoveN(Radius,Süd)
SetN(3,Rot)
MoveN(Radius,West)
MoveN(Radius,Süd)
SetN(6,Rot)
MoveN(Radius,West)
MoveN(Radius,Nord)
SetN(9,Rot)
MoveN(Radius,Ost)
}

Übung 8: Eine schwere Linie.

Ich habe die Prozedur LineThisPassed(Gewicht, Farbe, Länge) definiert. Bitte beachten Sie,
dass der Kopfin die Ausgangsposition zurückkehren muss. Dazu müssen Sie MoverN
aufrufen.

Antwort:

procedure LineThisHeavyLine(Gewicht, Farbe, Länge){


repeat(length){
SetN(Gewicht, Farbe)
MoveN(1, Ost)
}
MoveN(Längengrad, West)
}

Übung 9: Wache mit der Wache.

Ich habe eine Prozedur GuardFrom5() definiert, die eine"Wache" aus 5 Kacheln bildet (wie
die, die die Wände schmücken). JedesPlättchen besteht aus 1 grünen, 5 schwarzen und 9
roten Kugeln.

Antwort:

procedure GuardFrom5(){
Wiederholung(4){
SetN(9, Rot)
SetN(5, Schwarz)
SetN(1, Grün)
Bewegung(Ost)
}
SetN(1, Grün)
SetN(5, Schwarz)
SetN(9, Rot)
}

Übung 10: Ein L-Schutz.

Ich habe eine Prozedur GuardOnL() definiert, die eine L-Wache wie in der Abbildung
gezeigt durchführt, aberden Kopf in der Ausgangsposition belässt.

Antworten:

procedure MoveTile(num, dir){


repeat(num){
Verschieben(dir)
PutTile()
}
}
Prozedur StoreInL(){
PutTile()
MoveTile(2, Ost)
MoveN(2, West)
MoveTile(2, Nord)
MoveN(2, Süd)
}

7. Ausdrücke.

Übung 1: Viele Arten, das Gleiche zu sagen.

Erstelle mit dieser Idee und dem Aufruf von PonerN ein Programm, das fünf kleine
schwarze Kugeln legt, ABER ohne die Zahl 5 zu schreiben.

Antwort:

Programm{
PutN(3+2, Schwarz){
}
}

Übung 2: Die Summe der Teile.

Ich habe eine Prozedur PutSum(x, y) definiert, die zwei Parameter erhält und die Anzahl
der roten Kugeln angibt, die sich aus der Addition vonxundy ergibt.
Antwort:

procedure PutSum(x, y){


SetN(x + y, Rot)
}

Übung 3: Was wird zuerst gemacht?

Wir haben die Informationen darüber, wie viele Busse, Autos und Fahrräder anwesend
waren, und von dort aus können wir eine Berechnung nach diesen Regeln vornehmen:

 JederBus befördert40 Personen;


 JederWagen befördert4 Personen;
 JedesFahrrad befördert1 Person.

Ich habe die Prozedur CountPeople(buses, cars, bicycles) definiert, die aus der Anzahl der
Busse, Autos und Fahrräder, die sie als Parameter erhält, die notwendigen Zählungen
vornimmt und das Ergebnis mit grünen Kugeln darstellt.

Antwort:

procedure CountPeople(Busse, Autos, Fahrräder){


PutN(40 * Busse + 4 * Autos + 1 * Fahrräder, Grün)
}

Übung 4: Die Lachswanderung.

Antwort:

Kopieren, einfügen und senden Sie den Code

Übung 5: Zwei Schritte vorwärts, ein Schritt zurück.

Ich habe die Prozedur WalkUntrusted(steps) definiert, die das Gehen von Charles simuliert:
er soll die Anzahl der Schritte erhalten, die er machen soll, und die Hälfte davon machen.
Sie bewegt sich immer nach Osten.

Antwort:

procedure WalkWithoutConfidence(steps){
MoveN(Schritte div 2, Ost)
}

Übung 6: Beiseite legen.


Wir wollen eine Prozedur definieren, die es uns ermöglicht, einen kleinen Ball in dieNähe
des Kopfes zu legen und ihn in seiner ursprünglichen Position zu belassen.

Ich habe die Prozedur PutTo(Adresse, Farbe) definiert.

Antwort:

procedure PutTo(Adresse, Farbe){


Verschieben(Adresse)
Put(Farbe)
Bewegen(entgegengesetzt(Richtung))
}

Übung 7: Die Rückleitung.

Ändern Sie mit Ihren neuen Kenntnissen über Ausdrücke dasLine-Verfahren so ab,
dass die Spindel an ihrem Ausgangspunkt bleibt.

Antwort:

procedure Linie(Richtung, Farbe, Länge) {


repeat(length) {
Put(Farbe)
Verschieben(Adresse)
}
MoveN(Länge, entgegengesetzt(Richtung))
}

Übung 8: Zeichnen eines L.

Finden Sie heraus, welche der neuen Funktionen Sie aufrufen müssen, und definieren Sie
die Prozedur Ele(address). Machen Sie sich keine Gedanken über die anfängliche Position
des Kopfes, wir kümmern uns darum, ihn an der richtigen Stelle zu platzieren, damit das L
gezeichnet werden kann.

Antwort:

Prozedur Ele(Adresse){
Zeile(Adresse, Blau, 3)
Linie(next(Richtung), Blau, 3)
}

Übung 9: Vor dem Folgenden.

Antwort:
Wählen Sie Option Nummer 4.

Übung 10: Folgen Sie dem Pfeil.

Ich habe die Prozedur Arrow(direction) definiert, die einen roten Pfeil in die entsprechende
Richtung zeichnet. Der Kopf beginnt immer und sollte immer in der Mitte sein, wie auf den
Beispieltafeln dargestellt.

Antwort:

procedure Pfeil(Richtung){
Verschieben(vorherige(Adresse))
Put(Rot)
Move(next(address))
Move(next(address))
Put(Rot)
Verschieben(vorherige(Adresse))

Move(next(address))
Verschieben(vorherige(Adresse))
Verschieben(Adresse)
Put(Rot)
Bewegen(entgegengesetzt(Richtung))
}

Übung 11: Kopieren von Bällen.

ine Aufgabe, die wir mit Sicherheit zu erledigen haben, ist es, eine Menge Bälle zu
platzieren, und dafür gibt es bereits die PutN-Prozedur, die wir vor einigen Übungen gebaut
haben. Wir wissen auch, welche Farbe die Kugeln haben, die wir einwerfen müssen: Rot,
aber... Woher wissen wir, wie viele wir einsetzen müssen?

Sehen wir uns einige Beispiele an:

 Wenn es 4 grüne Kugeln gibt, musst du 4 rote Kugeln legen.


 Wenn es 2 grüne Kugeln gibt, musst du 2 rote Kugeln legen.
 Wenn es keine grünen Kugeln gibt, darf man keine roten Kugeln legen.

Antwort:

procedure CopyGreensInRed() {
SetN(nroBolitas(Grün), Rot)
}

Übung 12: Entnahme von Kügelchen.


Wenn Sie mit dem Zählen der Perlen fortfahren, müssen Sie nun ein Verfahren festlegen,
umalle Perleneiner Farbe zu entfernen.

Lassen Sie uns über die notwendigen Teilaufgaben nachdenken:

1. Die Möglichkeit, viele Pellets zu entnehmen: bereits mit SacarN gelöst.


2. Zählen Sie, wie viele Kugeln Sie entfernen müssen: Dies kann mit nroBolitas
geschehen.
3. Entferne alle Kugeln einer Farbe: Du musst die 2 vorherigen Kugeln kombinieren.

Ich habe TakeAll(Farbe) definiert, das eine Farbe erhält und alle Kugeln dieser Farbe
herausnimmt (mit den restlichen Farben darf es nichts machen).

Antwort:

procedure DrawAll(Farbe){
SacarN(nroBolitas(Farbe), Farbe)
}

8. Bedingte Alternative.

Übung 1: Sacar con miedo.

Antwort:

Kopieren, einfügen und senden Sie den Code

Übung 2: Sacar con miedo, zweiter Versuch.

Antwort:

Kopieren, einfügen und senden Sie den Code

Übung 3: Beseitigung des kleinen roten Balls.

Ändere das Verfahren, das wir dir gegeben haben, so ab, dass du nurdann eine rote Kugel
bekommst, wenn es eine gibt.

Antwort:

procedure SacarRojoConMiedo() {
if(hayBolitas(Rojo)){
Entfernen(Rot)
}
}
Übung 4: Ein ziemlich weit hergeholtes Beispiel.

Um letzteres zu üben, werden wir Sie bitten, eine CompleteCell()-Prozedur zu


definieren.Wenn es bereits eine schwarze Kugel gibt, vervollständigen Sie die Zelle, indem
Sie eine rote, eine blaue und eine grüne Kugel hinzufügen.

Antwort:

procedure CompleteCell(){
if(hayBolitas(Negro)){
Put(Rot)
Setzen(Blau)
Setzen(Grün)
}
}

Aufgabe 5: Und es ist nur gut, um nach Pellets zu suchen?

Erstellen Sie ein Programm, das sich nur nach Osten bewegt, wenn dies möglich ist. Denken
Sie daran, canMove(address) zu verwenden.

Antwort:

Programm{
if(canMove(East)){
Bewegung(Ost)
}
}

Übung 6: Ein bisschen Mathematik.

In einemif können Sie auch Zahlen vergleichen, wie Sie es wahrscheinlich in Mathematik
getan haben.

Glücklicherweise wird dies in Gobstones genau wie in der traditionellen Mathematik


geschrieben, mit einem < für minor und einem > für major. Beispiel: nroBalls(Green) > 5
sagt uns, ob es mehr als 5 grüne Bälle gibt.

Versuchen Sie daher, ein Programm zu erstellen, dasnur dann 1schwarze Kugel legt, wenn
es weniger als 5schwarze Kugeln gibt.

Antwort:

Programm{
if(nroBolitas(Negro) < 5){
Put(Schwarz)
}
}

Übung 7: Wie man Nein sagt zu...

Ich habe eine Prozedur EnsureAGreenBall() definiert, die sicherstellt, dass sich mindestens
ein grüner Ball in der aktuellen Zelle befindet. Das heißt: Wenn bereits grüne Pellets
vorhanden sind, brauchen Sie nichts zu tun, aber wennkeine grünen Pellets vorhanden sind,
müssen Sie welche einfüllen.

Antwort:

procedure SecureAGreenBall(){
if(not hayBolitas(Green)){
Setzen(Grün)
}
}

Übung 8: Zwei verschiedene Wege.

Antwort:

Kopieren, einfügen und senden Sie den Code

Aufgabe 9: Eine Leuchttafel.

Definieren Sie eine TurnOnLightOff()-Prozedur, die dafür zuständig ist, ausgeschaltete


Lichter einzuschalten oder eingeschaltete Lichter auszuschalten. Bitte beachten Sie, dass
sich in jeder Zelle nur grüne oder schwarze Kügelchen befinden dürfen.

Antwort:

procedure TurnOnLightOff(){
if(hayBolitas(Negro)){
Entfernen(Schwarz)
Setzen(Grün)
} sonst {
Entfernen(Grün)
Put(Schwarz)
}
}

9. Funktionen.

Übung 1: Und was isst man dazu?


Sie müssen mehrere Minuten lang lesen und den Code interpretieren und versuchen, ihn zu
verstehen.

Antwort:

Kopieren, einfügen und senden Sie den Code

Übung 2: Die Bedeutung der Benennung von Dingen.

Koboldstein-Funktionen,

Antwort:

Kopieren, einfügen und senden Sie den Code

Übung 3: MoveSomeBalls, Version 2.

Ändern Sie die erste Version von MoverSegunBolitas(), um die Funktion nroBolitasTotal()
anstelle des langen Ausdrucks zu verwenden.

Antwort:

procedure MoverSegunBolitas() {
if (nroBolitasTotal() > 10) {
Bewegung(Ost)
} sonst {
Bewegung(Nord)
}
}

Übung 4: allExcept.

Ich habe die Funktion allExcept definiert, um die Anzahl der Pellets zurückzugeben,
dienicht die als Parameter übergebene Farbe haben.

Antwort:

function allExcept(Farbe){
return (nroBolitasGesamt()-nroBolitas(Farbe))
}

Aufgabe 5: Eine Funktion eines anderen Typs.


Ich habe die Funktion redIsDominant() definiert, die uns sagt, ob die Anzahl der roten
Kugelngrößer ist als die Summe der Kugeln der anderen Farben. In derBibliothek ist
allExcept(colour) bereit, aufgerufen zu werden.

Antwort:

Funktion redIsDominant(){
return (nroBolitas(Rojo)>todasExcepto(Rojo))
}

Übung 6: In Freiheit.

Es gibt den Operator &&, der genau das tut: Er nimmt zwei boolesche Ausdrücke an und
gibt nur dann True zurück, wennbeide wahr sind. Wenn Sie sich mit Logik auskennen, ist
dies das, was man gemeinhin alsKonjunktion bezeichnet und gewöhnlich durch das
Symbol ∧ dargestellt wird .

Ich habe die Funktion isFreeCoasts() definiert, die angibt, ob sich der Kopf sowohl nach
Osten als auch nach Westen bewegen kann.

Antwort:

Funktion isFreeCoasts(){
return(canMove(East) && canMove(West))
}

Übung 7: Jeder kleine Ball ist geeignet.

Anders als in der vorherigen Übung wollen wir wissen, obeine der beiden Fragen wahr ist.
Daher müssen wir einen anderen Operator verwenden: dieDisjunktion, die mit | |
geschrieben wird und wahr ist, wenn mindestenseine der beiden Fragen wahr ist.

Sowohl && als auch | | können mehrfach verwendet werden, ohne dass Klammern
erforderlich sind, solange sie auf beiden Seiten boolesche Ausdrücke enthalten.

Ich habe die Funktion isThereAnyBall() definiert, die die Frage beantwortet: Gibt es einen
Ball in der aktuellen Zelle?

Antwort:

Funktion hayAlgunaBolita(){
return(hayBolitas(Grün) || hayBolitas(Blau) || hayBolitas(Rot) ||
hayBolitas(Schwarz))
}
Übung 8: Immer am Rande...

Wir erinnern Sie an die logischen Operatoren, die wir bisher gesehen haben:

 Negation:"kehrt" einen booleschen Ausdruck um- Beispiel: not hayBolitas(Rojo).


 Konjunktion: bestimmt, obbeide Bedingungen erfüllt sind - Beispiel:
canMove(North) && canMove(South).
 Disjunktion: bestimmt, obeine der Bedingungen erfüllt ist - Beispiel: isSmart() ||
hasGoodWave().

Mit Hilfe dieser kleinen Tabelle habe ich die Funktion I'mOnAnEdge() definiert, die
feststellt, ob der Kopf auf einer Kante steht.

Antwort:

Funktion I'mOnAnEdge(){
return(not canMove(North) || not canMove(South) || not canMove(East) || not
canMove(West))
}

Übung 9: Ideale Partner.

Wir werden uns nun Funktionen ansehen, dieetwas tun, bevor sie ein Ergebnis
zurückgeben. Um dies zu veranschaulichen, möchten wir, dass Sie eine Funktion definieren,
die uns sagt, ob sich ein Ball einer bestimmten Farbein der Zelle neben ihm befindet.

Ich habe die Funktion thereareBallsAt(direction, color) definiert, die meldet, ob sich in der
benachbarten Zelle Kugeln der angegebenen Farbe in der angegebenen Richtung befinden.

Antwort:

function hayBolitasAl(Adresse,Farbe){
Verschieben(Adresse)
return(hayBolitas(Farbe))
}

Aufgabe 10: Das Ideal kann auch gebrochen werden.

Probieren wir es aus: Testen wir die Funktion hayBolitasAl aus der vorherigen Übung mit
Fällen, in denen sich der Kopf nicht bewegen kann. Drücken Sie auf Absenden und sehen
Sie sich das Ergebnis an.

Antwort:

Senden drücken
Aufgabe 11: Sind die Bälle weit weg?

Ich habe die Funktion hayBolitasLejosAl(Richtung, Farbe, Entfernung) definiert. Die Idee,
den Kopf viele Male zu bewegen, wurde vor einigen Lektionen mit der ProzedurMoverN
gelöst. Sie können es verwenden.

Antwort:

function hayBolitasLejosAl(Richtung,Farbe,Entfernung) {
MoveN(Entfernung,Richtung)
return(hayBolitas(Farbe))
}

Aufgabe 12: Ich bin von alten Bällen umgeben.

Mit hayBolitasAl habe ich die Funktion estoyRodeadoDe(Farbe) definiert, die anzeigt, ob
der Kopf von Kugeln dieser Farbe umgeben ist.

Wir sagen, dass der Kopf"umzingelt" ist, wenn es Kugeln dieser Farbe in allen vier
Richtungen gibt: Norden, Osten, Süden und Westen.

Antwort:

function I'mSurroundedFrom(Farbe) {
return (es gibtBolitasAl(Nord, Farbe) && es gibtBolitasAl(Ost, Farbe) && es
gibtBolitasAl(Süd, Farbe) && es gibtBolitasAl(West, Farbe))
}

Übung 13: Keine Grenzen.

Zum Abschluss definieren wir die Funktion hayLimite(), die feststellt, ob es eine Art
Grenze für die Bewegung der Spindel gibt.

Es gibt zwei Gründe für die Begrenzung:Ich befinde mich auf einer Kante und kann mich
daher in keine Richtung bewegen, oder ichbin von roten Kugeln umgeben, die mich
abschneiden. Wenneine dieser beiden Bedingungen eintritt, bedeutet dies, dass es eine
Grenze gibt.

Mit I'mOnAnEdge und I'mSurroundedFrom habe ich dort isBoundary definiert.

Antwort:

Funktion hayLimite(){
return (I'mOnAnEdge() ||I'mSurroundedBy(Red))
}

Kapitel 2: Imperative Programmierung.

1) Funktionen und Datentypen.

Übung 2: Funktionen, Deklaration.

Mal sehen, ob du es verstehst: Ich habe eineJavaScript-Funktion half geschrieben, die


eine Zahl nimmt und ihre Hälfte zurückgibt. Beachten Sie, dass der Divisionsoperator
inJavaScript/ ist.

Antwort:

Funktion halb(Zahl){
Rückgabe(1/2*Zahl)
}

Übung 3: Funktionen, Verwendung.

Mal sehen, ob Sie es verstehen; ich habe die folgenden Funktionen geschrieben:

 oben:nimmt eine Zahl und gibt diese Zahl minus eins zurück.
 triple: gibt das Tripel einer Zahl zurück.
 previousDelTriple: kombiniert die beiden vorhergehenden Funktionen:
multipliziert eine Zahl mit 3 und subtrahiert 1 davon.

Antwort:

function previous(Zahl){
Rückgabe(Zahl - 1)
}
Funktion Dreifach(Zahl){
return(Zahl * 3)
}
vorherige FunktionDelTriple(Zahl){
return(previous(triple(number)))
}

Übung 4: Funktionen testen.

Probieren Sie die folgenden Ausdrücke in der Konsole aus, um zu sehen, ob Sie sie
verstehen:

 4 + 5
 Math.round(4.5)
 functionMysterious(1, 2, 3) (wir haben sie bereits für dich deklariert und du kannst
sie verwenden)

Antwort:

Versuchen Sie in der Konsole die Ausdrücke

Übung 5: Rechnen Sie nach.

Probieren Sie die folgenden Ausdrücke in der Konsole aus:

 Math.round(4.4)
 Math.round(4.6)
 Math.max(4, 7)
 Math.min(4, 7)

Antwort:

Probieren Sie die obigen Ausdrücke in der Konsole aus

Übung 6: Aufbau von Puffern.

Antwort:

Funktion extract(Saldo, Betrag) {


return Math.max((Saldo-Betrag),0);
}

Übung 7: Bücher mit gutem Gedächtnis.

Jetzt sind Sie dran! Dani sagt auch, dass jemand gerne liest, wenn die Anzahl der Bücher,
an die er/sie sich erinnert, mehr als 20 beträgt.

Antwort:

function likesRead(aNumber){
return(aZahl > 20)
}

Übung 8: Booleans.

Mal sehen, ob Sie es verstehen; ich habe die folgenden Funktionen geschrieben:

 ThisEntre, nehmen Sie drei Zahlen und sagen Sie, ob die erste größer als die zweite
und kleiner als die dritte ist.
 thisOutOfRange: nimmt drei Zahlen und sagt, ob die erste kleiner als die zweite
oder größer als die dritte ist.

Antwort:

function thisEntre(num1, num2, num3){


return(Ziffern1 > Ziffern2 && Ziffern1 < Ziffern3)
}
Funktion thisOutOfRange(num1, num2, num3){
return(Ziffern1 > Ziffern2 && Ziffern1 > Ziffern3)
}

Übung 9: Worte, nur Worte.

Mal sehen, ob das klar ist: Ich habe die Funktion isWeekEnd geschrieben, die eine
Zeichenkette nimmt, die den Namen eines Wochentags darstellt, und uns sagt, ob es
"Samstag" oder "Sonntag" ist.

Antwort:

function isWeekEnd(day){
return(Tag === "Samstag" || Tag === "Sonntag")
}

Übung 10: Operieren mit Strings.


Mal sehen, ob das klar ist: Ich habe eine Funktion lengthFirstNameFull geschrieben, die
einen Vornamen und einen Nachnamen annimmt und deren Gesamtlänge zurückgibt, wobei
ein zusätzliches Leerzeichen zur Trennung der beiden gezählt wird.

Antwort:

function lengthFullName(vorname, nachname){


return length((vorname)+(nachname)+(1));
}

Übung 11: SHOUT!

Ich habe die Shout-Funktion geschrieben. Wir überlassen es Ihnen, die Funktion
convertToCase zu verwenden, die, erm.... nun ja... grundsätzlich eine Zeichenkette in
Großbuchstaben umwandelt.

Antwort:

Funktion shout(Wort){
return("¡" + convertToMayuscula(word) + "!")
}

Übung 12: Was wäre wenn?

Keine Einführung in dieJavaScript-Sprache wäre vollständig, ohne zumindest eine


Kontrollstruktur zu zeigen, die wir bereits kennen: die bedingte Alternative.

Mal sehen, ob du es verstehst: Ich habe eine max-Funktion geschrieben, die wie Math.max
funktioniert (nicht zu gebrauchen!) und das Maximum zwischen zwei Zahlen liefert. Zum
Beispiel ist das Maximum zwischen 4 und 5 gleich 5, und das Maximum zwischen 10 und 4
ist 10.

Antwort:

Funktion maximo(numero1, numero2) {


wenn (Zahl1 >= Zahl2) {
Nummer1 zurückgeben;
} sonst {
Rückgabe numero2;
}
}

Übung 13: Welches Zeichen bist du?

Wir brauchen eine Vorzeichenfunktion, die bei einer Zahl den Wert zurückgibt:
 1, wenn die Zahl positiv ist.
 0, wenn die Zahl Null ist.
 -1, wenn die Zahl negativ ist.

Ich habe die Vorzeichenfunktion geschrieben. Möglicherweise benötigen Sie mehr als
einen, wenn.

Antwort:

Funktion Vorzeichen (Zahl){


if(Zahl > 0) return 1
if(Zahl === 0) return 0
if(Zahl < 0) return - 1
}

Übung 14: Die Rückkehr des Booleschen.

Ich habe die Funktion isLuckyNumber geschrieben, die bei einer Zahl angibt, ob sie der
obigen Logik folgt. Es ist nicht gut, wenn zu verwenden!

Antwort:

function isLuckyNumber(number) {
return (Zahl)>0 && (Zahl)<100 && (Zahl!=15);
}

Übung 15: Preise.

Die Jury eines Turniers bat uns, eine Funktion medalSecondPlace zu entwickeln, die die
den ersten Plätzen entsprechende Medaille zurückgibt, und zwar nach folgender Logik

 Erster Platz: "Gold".


 Zweiter Platz: "Silber".
 Dritter Platz: "Bronze".
 andere Positionen: "nichts" entspricht ihr.

Antwort:

function medallaSegunPuesto(lugar){
if(Ort === 1){
return("gold")
} else if(Ort === 2) {
return("Silber")
} else if(place === 3) {
return("Bronze")
} sonst {
return("nichts")
}
}
Übung 16: Datentypen.

Wie wir gerade gesehen haben, gibt es inJavaScript Zahlen, Boolesche Werte und
Zeichenketten:

Darüber hinaus gibt es Operationen, die für alleDatentypen funktionieren, zum Beispiel:

 ===: sagt uns, ob zwei Dinge gleich sind.


 !==: sagt uns, ob zwei Dinge unterschiedlich sind.

Probieren Sie die folgenden Dinge auf der Konsole aus:

 5 + 6 (ok, die Zahlen können addiert werden).


 5 === 6 (ok, alle Dinge können verglichen werden).
 8 > 6 (ok, Zahlen können sortiert werden).
 !true (ok, Boolesche Werte könnennegiert werden).
 false / true (nicht gut, Booleans können nicht geteilt werden!).

Antwort:

Test auf der Konsole

Übung 17: Daten aller Art.

Bevor wir zum Schluss kommen, noch eine letzte Aufgabe: Welchen Wert haben die
folgenden Ausdrücke? Kreuzen Sie alle richtigen Punkte an!

Antwort:

4 + 4 gleich 8

"4" + "4" ist gleich "44".

"on" + "ce" steht für "einmal".

true && false ist falsch

5 >= 6 ist falsch

! wahr ist falsch

2. Funktionen und Datentypen üben.


Übung 1: Kauf von Hardware.

Ich habe eine Funktion quantCuesta geschrieben, die aus der Anzahl der Zoll des Monitors
und der Menge des Arbeitsspeichers die geschätzten Kosten für unseren Computer
berechnet.

Antwort:

function how muchCuesta(monitor, speicher){


return((Monitor * 60) + (Speicher * 200) + 1000);
}

Übung 2: Ist das gut für mich?

Jetzt, da wir wissen, wie viel ein Computer kostet, wollen wir wissen, ob ein Computerdas
Richtige für mich ist. Dies ist der Fall, wenn:

 Sie beträgt weniger als 6000 Dollar.


 Er hat mindestens einen 32-Zoll-Monitor.
 Es verfügt über mindestens 8 GB Speicherplatz.

Ich habe die Funktion meIt's convenient geschrieben, die wiederum die Anzahl der Zoll und
die Menge des Speichers nimmt und uns sagt, ob es günstig ist, sie zu kaufen.

Antwort:

function meItChoices(inch,memory){
return (quantoCuesta(inch,memory) < 6000 && inch >= 32 && memory >= 8);
}

Übung 3: Dreiecke.

Zeit für Geometrie! Wir wollen ein paar Dinge über ein Dreieck wissen:

 perimeterTriangle: Angesichts der drei Seiten eines Dreiecks wollen wir wissen,
wie lang sein Umfang ist.
 areaTriangle: Angesichts der Basis und der Höhe eines Dreiecks wollen wir seinen
Flächeninhalt wissen.

Entwickeln Sie die Funktionen perimeterTriangle und areaTriangle.

Antwort:

function perimeterTriangle(side1, side2, side3){


Rückgabe (Seite1 + Seite2 + Seite3)
}
function areaTriangle(side1, side3){
return (Seite1 * Seite3 / 2)
}

Übung 4: Quadrate.

Und jetzt sind die Quadrate an der Reihe; wir wollen wissen

 perimeterSquare: Bei einer Seite wollen wir wissen, wie lang ihr Umfang ist.
 areaSquare: Bei einer Seite wollen wir wissen, wie groß ihre Fläche ist.

Entwickeln Sie die Funktionen perimeterSquare und areaSquare.

Antwort:

function perimeterSquare(side) {
Rückgabe (Seite * 4)
}
function areaSquare(side) {
Rückgabe (Seite * Seite)
}

Übung 5: Ist es gestimmt?

Entwickeln Sie eine abgestimmte Funktion, die die Frequenz (eine Zahl)vom Bedienfeld
empfängt und angibt, ob diese Frequenz gleich 440 Hz ist.

Antwort:

function thisFrequency(frequency){
return (Frequenz === 440)
}

Übung 6: Ist es knapp?

Jetzt wollen wir wissen, ob das mittlerec des Klaviersannähernd gestimmt ist. Dies ist der
Fall, wenn sie zwischen 437 Hz und 443 Hz liegt, aber NICHT genau 440 Hz beträgt.

Ich habe die Funktion thisClose geschrieben.

Antwort:

function thisClose(frequency){
return (437 <= Frequenz && Frequenz <= 443 && Frequenz !== 440)
}

Übung 7: Plakate.
Ich habe die Funktion writeLittleBillboard geschrieben, die aus einem Titel, einem
Vornamen und einem Nachnamen einen einzigen String bildet.

Antwort:

function writeLetter(title, vorname, nachname){


return(titel + " " + vorname + " " + nachname)
}

Übung 8: Weitere Plakate.

Antwort:

function writeLetter(title, vorname, nachname, bool){


return (Titel + " " + (!bool?vorname+""+nachname:nachname))
}

Übung 9: Optimale Plakate.

Da wir nun unsere großen und kleinen Typenschilder schreiben können, brauchen wir
eineneue Funktion, die uns die optimale Größe des Typenschilds liefert:

 Wenn Vor- und Nachname insgesamt mehr als 15 Buchstaben haben, wollen wir ein
kurzes Zeichen;
 Ansonsten wollen wir ein langes Banner.

Ich habe die Funktion writePostLetterOptimal definiert, die einen Titel, einen Vornamen
und einen Nachnamen annimmt und mit Hilfe von writePostLetter ein kurzes oder langes
Plakat entsprechend den oben genannten Regeln erzeugt.

Antwort:

function escribirCartelitoOptimo(titulo, nombre, apellido){


return writeLetter(title, vorname, nachname,(length(vorname + nachname) >=
15))
}

Übung 10: Köpfe oder Minze.

Ich habe eine Funktion decisionConMoneda geschrieben, die drei Parameter benötigt und
den zweiten zurückgibt, wenn der erste "cara" ist, oder den dritten, wenn "ceca".

Antwort:

function decisionConMoneda(currency, pizzas, pies){


if(Münze === "Kopf"){
Pizzen zurückgeben;
}else{
Empanadas zurückgeben;
}
}

Übung 11: Envido!

Wir wollen den Wert der Stichkarten wissen, wenn wirEnvido spielen. Das wissen wir:

 Alle Karten von 1 bis einschließlich 7 sind ihre Nummerierung wert.


 Die Karten 10 bis einschließlich 12 sind 0 wert.
 Man spielt nicht mit 8ern oder 9ern.

Ich habe eine Funktion valueSent geschrieben, die eine Buchstabennummer annimmt und
ihren Sendewert zurückgibt.

Antwort:

function valueSent(letter){
if(Buchstabe >= 1 && Buchstabe <= 7)
(Brief zurücksenden)
if(Buchstabe >= 10 && Buchstabe <= 12)
{Rückgabe 0}
}

Übung 12: Ich will eine Widerlegung!

Nun, ähm, nein, halt, zuerst wollen wir berechnen, wie viele Neidpunkte ein Spieler hat.
Das wissen wir:

 Wenn die beiden Karten die gleiche Farbe haben, ist der Wert der Sendung die
Summe ihrer Sendewerte plus 20.
 Andernfalls ist der Wert der Sendung der höchste Wert der Sendung zwischen
ihnen.

Entwickeln Sie unter Verwendung der Funktion sendValue (die wir bereits für Sie
geschrieben haben) die Funktion totalSendPoints, die die Werte und Farben von zwei
Karten nimmt und angibt, wie viel send sie insgesamt ergeben.

Antwort:

function pointsSentTotals(n1, p1, p1, n2, p2){


if(p1 === p2){
return (valueSent(n1) + valueSent(n2) + 20)
}else{
return Math.max(n1, n2)
}
}
Übung 13: Ich will Gutschein vier!

Beim Truco-Spiel können die gegnerischen Teams abwechselnd den Einsatz erhöhen. Wenn
zum Beispiel ein Spielertruco singt, kann ein anderer Spielerretruco singen. Es liegt auf der
Hand, dass die Einsätze immer höher werden:

Punkte auf dem


Canto
Spiel
Trick 2
retruco 3
ist vier
4
wert

Ich habe die Funktion valueChantTrick geschrieben, die den Gesang nimmt und zurückgibt,
wie viele Punkte er wert ist.

Antwort:

Funktion valueCantoTruco(canto){
if(canto === "truco"){
Rückgabe(2)
}
if(canto === "retruco"){
Rückgabe(3)
}
if(canto === "vale cuatro"){
zurück(4)
}
}

3 Variablen und Verfahren.

Übung 1: Was ist mit der Tafel?

Antwort:

functionMysterious(2, 1)

Übung 2: Siebdruck.

Antwort:

Versuchen Sie functionEgocentric() in der Konsole.

Übung 3: Martin Fierro.


Ich habe eine Funktion versosMartinFierro geschrieben, die die ersten Strophen des Martín
Fierro auf dem Bildschirm ausgibt, um zu sehen, ob es klar wird:

Hier fange ich an zu singen


Im Takt des Windes;
Dass der Mann, der es enthüllt
Ein außergewöhnlicher Kummer

Diese Funktion muss 0 zurückgeben

Antwort:

function versosMartinFierro() {
print("Hier fange ich an zu singen");
print("Im Takt der Sparren;");
print("Möge der Mann, der es enthüllt");
print("Ein außergewöhnlicher Kummer");
Rückgabe 0
}

Übung 4: Was ist mit Verfahren?

Wenn wir Code wiederverwenden wollen, können wir deklarieren:

 Funktionen, die immer etwas zurückgeben und keine Wirkung haben.


 Verfahren, die nichts zurückgeben, sondern Wirkungen erzeugen.

Senden Sie diese neue Version von versosMartinFierro.

Antwort:

function versosMartinFierro() {
print("Hier fange ich an zu singen");
print("Im Takt der Sparren;");
print("Möge der Mann, der es enthüllt");
print("Ein außergewöhnlicher Kummer");
}

Übung 5: Was ist mit dem Programm?

InJavaScript ist alles, was wir außerhalb einerFunktion schreiben, implizit dieser
Einstiegspunkt. Wenn wir zum Beispiel ein Programm wollen, das das klassische "Hello,
world!" auf dem Bildschirm ausgibt, können wir es wie folgt schreiben:

print("Hallo Welt!");
Antwort:

print("Wir würfeln");
print("Der erste Wurf traf " + rollDead());
print("Der zweite Wurf traf " + rollDead());
print("Der dritte Wurf traf " + rollDead());

Übung 6: Zwänge.

Mal sehen, ob das klar ist. Ich habe eine Funktion elephantsSwingers geschrieben, die eine
Anzahl von Elefanten nimmt und einen Reim aus einem bekannten Lied "3 elephants were
swinging"zurückgibt.

Antwort:

function elephantsEquilibrants(number){
return(Zahl + " " + "Elefanten haben geschaukelt")
}

Übung 7: Der Kreislauf des Lebens.

Nehmen wir an, dass die Zahl Pi gleich 3,14159265358979 ist (nicht unendlich, aber genau
genug für unsere Berechnungen):

Ich habe die Funktionen perimeterCircle und areaCircle definiert, die den Radius eines
Kreises erhalten und daraus seinen Umfang und seine Fläche zurückgeben.

Antwort:

function perimeterCircle(radius){
return(3.14159265358979 * 2 * Radius)
}
function areaCircle(radius) {
return(3.14159265358979 * Radius * Radius)
}

Aufgabe 8: Ich glaube, so ist es einfacher.

sei Pi = 3,14159265358979;

Ändern Sie die Stellen, an denen 3,14159265358979 für die Variable pi in den von uns
definierten Funktionen erscheint.

Antwort:

sei Pi = 3,14159265358979;
function perimeterCircle(radius){
return(pi * 2 * Radius)
}
function areaCircle(radius) {
return(pi * Radius * Radius)
}

Aufgabe 9: Dies ist wertlos.

Da Sie nun wissen, wie Variablenzugewiesen werden, hier ein kleiner Denkanstoß: Was
passiert, wenn ich versuche, eine Variablezu verwenden, der ich nie einen Wert
zugewiesen habe?

Antwort:

Kopieren, einfügen und in der Konsole testen

Übung 10: Globale Variablen.

Die innerhalb einer Funktion deklarierten Variablen, die so genanntenlokalen Variablen,


sind kein großes Geheimnis. Dabei ist jedoch besondere Vorsicht geboten: Sie können nur
innerhalb der betreffenden Funktion verwendet werden.

Direkt im Programm deklarierte Variablen, so genannteglobale Variablen, können jedoch


von jeder Funktion aus verwendet werden.

Antwort:

let loadMaximumInKilograms = 300


function elevatorOverloaded(people){
return(Personen * GewichtDurchschnittlichesPersonenGewichtInKilogramm) >
loadMaximumInKilogramm
}

Übung 11: Reich werden.

Ich habe eine incrementFortuna-Prozedur geschrieben, die den Wert der globalen Variablen
pesosInMyWallet verdoppelt. Geben Sie die Variable nicht an, wir haben das bereits für Sie
getan (mit einem geheimen Geldbetrag).

Antwort:

function increaseFortuna(){
pesosInMyWallet = pesosInMyWallet * 2
}

Aufgabe 12: Wie viel ist das wert?

Wir haben gesehen, dass eine Variable nur einen Wert haben kann, so dass wir jedes Mal,
wenn wir ihr einen neuen Wert zuweisen, den vorherigen verlieren.

Antwort:

20

4. Boolesche Logik.

Übung 1: Der Letzte, der das Licht ausmacht!

Beginnen wir mit etwas Einfachem: Erinnern Sie sich an den Betreiber! Sie wird als
Negation, not oder logisches Komplement bezeichnet und dient dazu, einen booleschen
Wert zu negieren.

Wenn ich den booleschen Wert von hasHungry habe, lautet das Komplement !hasHungry.

Ich habe die useClose-Prozedur definiert, damit wir den Verschluss eines Rucksacks öffnen
und schließen können.

Antwort:

let backpackOpen = true;


function useClose() {
backpackOpen = !backpackOpen
}

Übung 2: Leugnen kostet nichts.

Jetzt sind Sie dran! Ich habe isOlderOfAge definiert, das ein Alter erhält und daraus
YoungerOfAge wird.

Antwort:

function isOldestOf(age){
return(Alter >= 18)
}
function isMinorOfAge(age){
return(!isOldestOfAge(age))
}
Übung 3: Die Peripatetiker.

Ich habe eine esPeripatetic-Funktion definiert, die den Beruf einer Person, ihre Nationalität
und die Anzahl der Kilometer, die sie pro Tag zurücklegt, berücksichtigt. Jemand ist
peripatetisch, wenn er ein griechischer Philosoph ist und gerne zu Fuß geht (er geht mehr
als 2 Kilometer pro Tag).

Antwort:

function isPeripatetic(lehrer, nationalität, kms){


return(Lehrer === "Philosoph" && Nationalität === "Grieche" && kms > 2)
}

Übung 4: Die Wahrheit hinter der Konjunktion.

Antwort:

Test auf der Konsole:

verbrauchtwenigEnergie(24, 5)

verbrauchtwenigEnergie(24, 0)

verbrauchtwenigEnergie(21, 7)

verbrauchtwenigEnergie(18, 1)

Übung 5: Lasst uns T.E.G. spielen!

Antwort:

Test an der Konsole:

win(true, 25)

win(false, 30)

win(false, 20)

win(true, 31)

Übung 6: Und jetzt... wer kann uns helfen?


Wir wissen, dass die Bank geschlossen ist, wenn:

 Ist es ein Feiertag, oder


 Es ist Wochenende, oder
 Wir sind nicht während der Geschäftszeiten erreichbar.

Ich habe die Funktionen isWeekEnd und isClosed definiert.

Antwort:

let esFeriado = true;


function isWeekEnd(day){
return(tag === "samstag" || tag === "sonntag")
}
function isClosed(isFeriado, day, time){
return(isFeriado || !dentroDeHorarioBancario(horario) ||
esFinDeSemana(dia))
}

Übung 7: Guten Morgen.

In der Familie Buendía ist das so:

 Arcadio ist der Sohn von José Arcadio und Pilar Ternera.
 Aureliano José ist der Sohn von Oberst Aureliano und Pilar Ternera.
 Aureliano Segundo und Remedios sind die Kinder von Arcadio und Sofía De La
Piedad.

Um mit der Analyse dieser Familie zu beginnen, haben wir bereits die Funktionen
motherFrom und fatherFrom definiert.

Jetzt sind Sie an der Reihe, die Funktion areMeansBrothers zu definieren. Denken Sie
daran, dass Halbgeschwister eine Mutter oder einen Vater haben können, aber nicht beide,
denn.... dann wären sie Geschwister!

Antwort:

function haveTheSameMother(child1, child2){


let mother1 = motherFrom(child1);
let mother2 = motherFrom(child2);
return mutter1 === mutter2;
}
function haveSameParent(child1, child2){
let parent1 = parentFrom(child1);
let parent2 = parentFrom(child2);
return parent1 === parent2;
}
function areMiddleSiblings(child1, child2){
return (haveSameMother(child1, child2) !== haveSameFather(child1, child2));
}

Aufgabe 8: Die Wahrheit ist, dass es keine Wahrheit gibt.

Probieren Sie Ihre Funktion areMeansSiblings mit den folgenden Werten aus und prüfen
Sie, ob sie sich wie die Tabelle verhält:

Antwort:

areHalfBrothers(arcadio, aurelianoJose)
areMeansBrothers(aurelianoSegundo, remedios)
sonMediosHermanos(aurelianoJose, remedios)

Übung 9: Hallo! Mein Name ist Xor.

Im Gegensatz zu and, or und not wird xor normalerweise nicht in Sprachen definiert, aber
da Sie jetzt wissen, wie es funktioniert, können Sie es bei Bedarf von Hand definieren.

Mal sehen, ob Sie das verstehen: Ich habe die allgemeine Funktion xor definiert, die zwei
Boolesche Werte annimmt und den entsprechenden Wahrheitswert zurückgibt.

Antwort:

Funktion xor(a, b){


return(a !== b)
}

Übung 10: Vorrangigkeit.

Wenn ein mathematischer Ausdruck mehrere Operatoren enthält, wissen wir, dass
Multiplikation und Division vor Addition und Subtraktion ausgeführt werden:

5 * 3 + 8 / 4 - 3 = 14

Wie in der Mathematik werden Ausdrücke bei der Verwendung logischer Operatoren in
einer bestimmten Reihenfolge ausgewertet, die alsRangfolge bezeichnet wird.

Antwort:

Versuchen Sie es in der Konsole mit den Werten:

payWithCard(true, "Kredit", 320)

payWithCard(false, "Kredit", 80)


payWithCard(true, "debit", 215)

payWithCard(true, "debit", 32)

Übung 11: Eine noch nie dagewesene Übung.

Ich habe die Funktion canRetire geschrieben, die das Alter und das Geschlecht einer Person
sowie die Anzahl der Beitragsjahre für die Rente erhält.

Das Mindestalter für Frauen liegt bei 60 Jahren, das für Männer bei 65 Jahren. In beiden
Fällen müssen Sie mindestens 30 Beitragsjahre vorweisen können.

Versuchen Sie, die Aufgabe in einer einzigen Vorstellung zu lösen! Dann wollen wir mal
sehen, wie es aussehen würde, wenn wir delegieren.

Antwort:

function canRetire(age, gender, contribution){


return((Geschlecht === "F" && Alter >= 60) || (Geschlecht === "M" && Alter
>= 65)) && Beitrag >= 30
}

Übung 12: Kann ich nach oben gehen?

Die Voraussetzungen für die Teilnahme an der Attraktion sind:

 Erreichen Sie die Mindesthöhe von 1,5 m (oder 1,2 m, wenn Sie von einem
Erwachsenen begleitet werden).
 Sie haben kein Herzleiden.

Ich habe die 3-Parameter-Funktion canClimb definiert, die die Körpergröße einer Person in
Metern, die Tatsache, ob sie in Begleitung ist und ob sie eine Herzerkrankung hat, erhält.

Antwort:

function canRaise(height, accompanied, condition){


return((Höhe >= 1,5) || (Höhe >= 1,2 && begleitet)) && !affeccion
}

5. Verzeichnisse.

Übung 1: Lieblingsserie.
Um eine Reihe von Zeichenfolgen darzustellen, setzen wir alle Zeichenfolgen, an denen wir
interessiert sind, in eckige Klammern ([ und ]), die durch Kommas getrennt sind. Einfach,
nicht wahr?

Antwort:

Probieren Sie die folgenden Abfragen in der Konsole aus:

SerienFavoritenvonAna

SerienFavoritenDeHector

["Hallo", "Welt!"]

["hallo", "hallo"]

Übung 2: Und das ist eine Liste.

Wir haben gerade gesehen, wie man auf einfache Weise Mengen von Dingen modellieren
kann. Mit[] bietetJavaScript eine einfache Möglichkeit, diese Elemente in Listen zu
gruppieren.

Gibt es eine maximale Anzahl von Elementen? Nein, es gibt kein Limit! Listen können eine
beliebige Anzahl von Elementen enthalten.

Und nicht nur das, auch die Ordnung ist wichtig. Zum Beispiel ist ["hallo", "Welt"] nicht
dasselbe wie ["Welt", "hallo"]: beide haben die gleichen Elemente, aber an
unterschiedlichen Positionen.

Antwort:

Probieren Sie die folgenden Abfragen in der Konsole aus:

equalLists(["hallo", "Welt"], ["Welt", "hallo"])

equalLists(["hallo", "welt"], ["hallo", "welt"])

equalLists(["hallo", "welt"], ["hallo", "alle", "die", "welt"])

equalLists(["hallo"], ["hallo", "Welt"])


["hallo", "Welt"] === ["Welt", "hallo"] === ["Welt", "hallo"]

Menschen

["mara", "julian"] === Menschen

Menschen === Menschen

Übung 3: Glücksspiele.

Wir können auch Mengen von Zahlen oder Booleschen Werten auf dieselbe Weise
darstellen, indem wir sie in eckige Klammern setzen und durch Kommas trennen. Wir
können Listen mit Zahlen, Listen mit Zeichenketten, Listen mit Booleschen Werten und so
weiter haben. Wir könnten sogar Listen von Listen haben!

Antwort:

Mal sehen, ob das klar ist. Probieren Sie die folgenden Abfragen in der Konsole aus:

LotterieNummern

salioCara

[[1, 2, 3], [4, 5, 6]]

Übung 4: Leere Listen.

Toll, es scheint, dass eine Liste jede Art von Element enthalten kann! Wir können Listen
mit Booleschen Werten, mit Zahlen, mit Zeichenketten, mit Listen... haben.

Darüber hinaus können sie eine beliebige Anzahl von Elementen enthalten: eins, zwei,
fünfzehn, hundert.

Können wir dann leere Listen haben, d. h. mit keinen Elementen? Ja, natürlich!

let unaListaVacia = []

Antwort:

Versuchen Sie, in der Konsole aVacancyList einzugeben


Aufgabe 5: Wie viele Elemente haben Sie?

Inzwischen wissen wir, welche Dinge wir mit Listen darstellen können und wie wir dies
tun. Aber was können wir mit ihnen machen?

Beginnen wir mit dem einfachsten Teil: die Anzahl der Einträge in der Liste zu kennen.
Dies kann mit Hilfe der Längenfunktion geschehen, ähnlich wie bei den Strings.

Antwort:

Führen Sie die folgenden Abfragen in der Konsole durch:

length([])

length(lotteryNumbers)

length([4, 3])

Übung 6: Geschmacksverstärker.

Listen sind sehr nützlich, wenn sie mehrere Elemente enthalten. Aber es gibt noch mehr!
Mit der Funktion add, die zwei Parameter benötigt, nämlich die Liste und das Element,
können wir der Liste jederzeit Elemente hinzufügen.

Wie wir sehen können, wird durch das Hinzufügen ein Element zur Liste hinzugefügt,
wodurch die Liste größer wird. Aber wo in der Liste fügen Sie es hinzu? Am Anfang? Und
am Ende? In der Mitte?

Finden Sie es selbst heraus: Prüfen Sie in der Konsole, welche Gegenstände Habseligkeiten
enthalten, fügen Sie eine "Armbrust" hinzu und prüfen Sie die Habseligkeiten erneut.

Außerdem gibt es eine remove-Prozedur, die nur die Liste als Parameter erhält. Überprüfen
Sie die Konsole, um zu sehen, was sie tut.

Antwort:

Test auf der Konsole

add(Gegenstände, "magisches Amulett")


Übung 7: Übertragung.

Deklarieren Sie eine move-Prozedur, die zwei Listen nimmt, das letzte Element aus der
ersten entfernt und es der zweiten hinzufügt.

Antwort:

Funktion move(aList, anotherList){


add(otherList, remove(otherList))
}

Aufgabe 8: Und wo ist sie?

Und was passiert, wenn Sie ein Element, das es nicht hat, als Parameter an position
übergeben? Überzeugen Sie sich selbst!

Antwort:

Kopieren und in die Konsole einfügen

Position(Arbeitstage, "osvaldo")

Übung 9: Enthält.

Ich habe die Funktion contains geschrieben, um festzustellen, ob eine Liste ein bestimmtes
Element enthält.

Wenn Sie die Abfragebeispiele aufmerksam verfolgt haben, werden Sie festgestellt haben,
dass Listen auch doppelte Elemente enthalten können: [1, 2, 1], ["hallo", "hallo"], usw.

Daher gibt position tatsächlich die Position desersten Vorkommens des Elements in der
Liste zurück.

Antwort:

function contains(array, search){


return(position(array, search) >- 1)
}

Übung 10: N-te Element.


Genauso wie es eine Funktion gibt, um herauszufinden, an welcher Position sich ein
Element befindet, kann es auch vorkommen, dass wir das Gegenteil wissen wollen: welches
Element sich an einer bestimmten Position befindet.

Um das herauszufinden, können wir denIndexierungsoperator verwenden, indem wir nach


der Sammlung und zwischen eckigen Klammern [] die Position schreiben, die wir
herausfinden wollen.

Antwort:

let list =[]

Liste[0]

Übung 11: Weitere Preise.

Wenn Sie nach einem Element an einer Position fragen, die gleich oder größer als die
Größe der Liste ist, erhalten Sie ein undefiniertes Ergebnis. Das hört sich nicht schlimm an,
aber das Problem ist, dass man mit undefiniert nichts wirklich Sinnvolles machen kann.

Die Warnung lautet also: Nicht überindizieren!

In diesem Sinne hier eine Herausforderung: Ich habe die Funktion medalSecondPosts neu
geschrieben, aber dieses Mal mit höchstens einem einzigen if. Vielleicht finden Sie die
Listen hier nützlich.

Wir erinnern Sie daran, was die Funktion bewirkt: Sie soll die Medaille zurückgeben, die
den ersten Plätzen in einem Wettbewerb entspricht.

Antwort:

let medal = ["nichts", "gold", "silber", "bronze"].

function medalSecondPost(post){
if(post <= 3){
return(Medaille[Position])
} sonst {
return(Medaille[0])
}
}

Übung 12: Vergessen Sie nicht, "Hallo" zu sagen.


Lernen wir eine Möglichkeit kennen, die Elemente einer Liste mit einem neuen Freund
durchzugehen: die for-Schleife.

Antwort:

function greet(people){
for(let person1 of persons){
print("Hallo" + " " + Person1);
}
}

6. Aufzeichnungen.

Übung 1: Die ersten Register.

Antwort:

Kopieren Sie den Code und fügen Sie ihn in die Konsole ein

statueOfFreedom
christRedentor
Eiffelturm
tajMahal
Kolosseum

Übung 2: Ihr eigenes Denkmal.

Das ist dein Moment des Denkmals! Speichern Sie Aufzeichnungen dieser Denkmäler, die
aus den Städten Teheran,Iran bzw. Rosario,Argentinien, stammen, in den Variablen
torreAzadi und monumentoNacionalALaBandera. Trauen Sie sich zu erforschen, in
welchem Jahr sie fertiggestellt wurden, um dieses Feld zu vervollständigen?

Antwort:

let AzadiTower = {Name: "Azadi Tower", Standort: "Teheran, Iran", Baujahr:


1971}
let monumentoNacionalALaBandera = {Name: "Monumento Nacional A La Bandera",
Ort: "Rosario, Argentinien", Baujahr: 1957 }

Übung 3: Zugriff auf das Feld.


Wir deklarieren die Planeten Merkur, Mars und Saturn als Datensätze mit den folgenden
Informationen: Name, TemperaturDurchschnitt und ob er Ringe hat. Probieren Sie sie an
der Konsole aus!

Antwort:

Wir erklären die Planeten Merkur, Mars und Saturn zu Rekorden!

Übung 4: Temperatur gleiten lassen.

Entwickeln Sie eine temperatureFromPlanet-Funktion, die einen Planetendatensatz als


Parameter erhält und eine Zeichenkette mit seinem Namen und der Durchschnittstemperatur
zurückgibt. Es muss für jeden Planeten funktionieren!

Antwort:

Funktion planetTemperature(planet){
return(planet.name + " hat eine Durchschnittstemperatur von " +
planet.averageTemperature + " Grad")
}

Übung 5: Dateien verschieben.

Entwickeln Sie die moveFile-Prozedur, die einen Datensatz und einen neuen Pfad erhält
und die Datei mit dem neuen Pfad ändert.

Antwort:

function moveFile(record, pathNew){


let readme = register.path = pathNew
}

Übung 6: Aufzeichnungen aus zwei Jahrtausenden.

In der vorangegangenen Übung haben wir den Registrierungspfad geändert, aber wir haben
das Erstellungsdatum nicht verwendet. Benutzen wir es! Wir wollen wissen, ob eine Datei
aus dem letzten Jahrtausend stammt, was der Fall ist, wenn ihr Jahr vor 2000 liegt.

Entwickeln Sie die Funktion isPastMillennium, die eine Datei erhält und einen booleschen
Wert zurückgibt.

Antwort:
function isPastMillennium(file){
return(year(file.creation) < 2000)
}

Übung 7: Komplexe Nachspeisen.

Erstellen Sie eine Funktion moreDifficultToBake, die zwei Dessertdatensätze als Parameter
nimmt und denjenigen mit den meisten Zutaten zurückgibt.

Antwort:

function moreDifficultToCook(dessert1, dessert2){


if(length(dessert1.ingredients) < length(dessert2.ingredients)){
zurück dessert2;
}
if(length(dessert1.ingredients) >= length(dessert2.ingredients)){
return dessert1;
}
}

Übung 8: Registrierungslisten.

So wie wir mit Listen von Zahlen, Booleschen Werten, Zeichenketten oder anderen Listen
arbeiten, können wir auch Datensätze auflisten. Mit den eckigen Klammern [ ] können Sie
alles tun, was Sie zuvor getan haben, z. B. entfernen, die Länge herausfinden oder nach dem
Element einer bestimmten Position fragen.

Probieren Sie die Listen der DessertsFavoriten und DenkmälerAmerikas in der Konsole aus.
Es gibt ein Dessert, das wir noch nicht gezeigt haben. Kannst du anhand der Zutaten
erkennen, um welches Dessert es sich handelt?

Antwort:

Test auf der Konsole:

DessertsFavoriten

monumentosDeAmerica

Übung 9: 60 süße Minuten.

Entwickeln Sie die Prozedur addFastDesserts, die eine Liste mit Schnelldesserts und ein
Dessert pro Parameter erhält. Beträgt die Garzeit eine Stunde oder weniger, wird der
Eintrag in die Liste aufgenommen.
Antwort:

function addAPostresresRapidos(list, dessert){


if(dessert.cookingTime <= 60){
add(list, dessert)
}
}

Aufgabe 10: Es gibt einen Eintrag in meinem Register.

Finden Sie heraus, was das Feld ingredients des Feldes dessert des menuChildren-
Datensatzes ergibt. Es ist ein Register im anderen!

Antwort:

Test auf der Konsole

menuChildren.dessert.ingredients

Übung 11: Zucker!

Ich habe eine Prozedur sweetenMenu definiert, die einen Menüdatensatz empfängt und
dessen Dessertzutaten Zucker hinzufügt. Wenn bereits Zucker enthalten ist, spielt das keine
Rolle.... mehr hinzufügen!

Antwort:

function sweetenMenu(menu){
add(menu.dessert.ingredients, "Zucker")
return menu.dessert
}

7. Touren.

Übung 1: Halbjährliche Erträge.

Gibt es ein Problem mit der Funktion gainSemester, die wir oben geschrieben haben?
Funktioniert es auch mit vierteljährlichen Bilanzen? Wie sieht es mit viermonatigen
Quartalen aus?

Probieren Sie es an der Konsole aus!

Antwort:
Test auf der Konsole:

profitSemester

Aufgabe 2: Was ist mit dem Rest der Gewinne?

Wir möchten die Gewinne aller Salden in einer Liste addieren können, unabhängig davon,
wie viele es tatsächlich gibt; wir möchten eine Funktion profitTotal, die die Salden für jeden
beliebigen Zeitraum von Monaten addieren kann: Semester, Vierteljahr, Quartal usw. Wie
schwierig!

Antwort:

gananciaTotal([
{ Monat: "Januar", Gewinn: 2 },
{ Monat: "Februar", Gewinn: 3 }
])

Übung 3: Alle Gewinne, der Gewinn.

Antwort:

Funktion gananciaTotal4(balancesOfAperiod){
let sum = 0
Summierung = Summierung + balancesOfAperiod[0].gain
Summierung = Summierung + balancesOfAperiod[1].gain
Summierung = Summierung + balancesOfAperiod[2].gain
Summierung = Summierung + balancesOfAperiod[3].gain
Rücksumme
}

Übung 4: Ein alter Freund besucht uns.

Wir müssen also den Vorgang der Akkumulation mehrmals wiederholen, einmal für jedes
Element der Liste. Sagen wir (wieder) Hallo zum for...of!

Wie Sie sehen können, erlaubt uns das for...of, jedes Element einer Liste zu besuchen und
etwas damit zu tun; in diesem Fall werden wir jeden Saldo von balancesOfAperiod
besuchen.

Antwort:
profitTotal([
{ Monat: "März", Gewinn: 8 },
{ Monat: "August", Gewinn: 10 }
])

Übung 5: Konten abräumen.

Anna hat neue Anforderungen! Nun fragte er uns: "Ich möchte wissen, wie viele Bilanzen
positiv waren, d.h. bei denen der Gewinn größer als Null war.

Vervollständigen Sie die Funktion PositiveBalanceAmount. Wenn Sie genau hinschauen,


werden Sie feststellen, dass es eine ähnliche Struktur wie das vorherige Problem hat.

Antwort:

function amountOfBalancesPositive(balancesOfAperiod){
let Menge = 0
for(let balance of balancesOfOnePeriod){
Menge = Menge + ((Saldo.Gewinn) > 0)
}
Rücklaufmenge;
}

Aufgabe 6: Der durchschnittliche Gewinn.

Kommen wir nun zu Anas nächstem Anliegen. Wir können bereits eine Summe der Erträge
berechnen und auch Zähler erstellen, jetzt werden wir Durchschnittswerte berechnen.

Ana würde gerne wissen, wie hoch der durchschnittliche Gewinn bei einer beliebigen
Anzahl von Guthaben ist.

Antwort:

Funktion gananciaPrommedio(gananciaTotal){
let sum = 0
for(let balance of gananciaTotal){
Summierung = (Summierung + Balance.gain)
}
return Summe / Länge (gainTotal)
}

Übung 7: Wer gewinnt, wer verliert.

Da wir alles tun können, worum sie uns bittet, möchte Ana den durchschnittlichen Gewinn
der positiven Salden wissen.
Ich habe die Funktionen definiert:

 positivPositiver Gewinn, der sich aus der Summe der Gewinne der positiven Salden
ergibt.
 averagePositiveProfit mit Aufruf von PositivePositiveProfit und
PositiveBalanceSheetAmount.

Antwort:

function positiveGain(balancesOfAperiod){
let sum = 0
for(let balance of balancesOfOnePeriod){
if(balance.gain > 0){
Summierung = Summierung + (Saldo.Gewinn)
}
}
Rücksumme
}

function averagePositiveProfits(balancesOfAperiod){
return PositiveGain(balancesOfAperiod) /
PositiveBalanceAmount(balancesOfAperiod)
}

Übung 8: Ich bin die Karte, ich bin die Karte.

Leider ist es nicht möglich, die Durchschnittsfunktion mit unserer Liste von Datensätzen zu
verwenden. Was wir brauchen, ist eine Liste, die nur die Erträge der einzelnen Bilanzen
enthält. Dazu müssen wir jedes Element der Liste umwandeln bzw.abbilden.

Vervollständigen Sie die Ertragsfunktion, die eine Liste von Salden annimmt und nur die
Erträge der einzelnen Salden ausgibt.

Antwort:

function earnings(balancesOfAperiod){
let profits = []
for(let balance of balancesOfOnePeriod){
add(Gewinn, Saldo.Gewinn)
}
Renditechancen
}

Übung 9: Filtern, alles an seinen Platz bringen.

Mit Programmierung kann man alles, oder fast alles, machen. Wir haben bereits eine
Funktion erstellt, um die Anzahl der positiven Salden zu ermitteln
(numberOfPositiveBalances), nun wollen wir sehen, wie wir herausfinden können, welches
diese Salden sind.

Vervollständigen Sie die Funktion balancesPositive, die die Salden einer Periode aufnimmt
und eine Liste derjenigen zurückgibt, deren Gewinn größer als Null war.

Antwort:

function balancesPositive(balancesOfAperiod){
let balances = []
for(let balance of balancesOfOnePeriod){
if(balance.gain > 0){
add(Salden, Saldo)
}
}
Rücklaufsalden
}

Aufgabe 10: Ein positiverer Durchschnitt.

Da wir nun die Gewinnfunktion und die positiven Salden haben, können wir die allgemeine
Durchschnittsfunktion verwenden, um herauszufinden, wie hoch der durchschnittliche
Gewinn der positiven Salden ist.

Definieren Sie die Funktion profitsFromBalancesPositive und verwenden Sie sie dann
zusammen mit average, um averageFromBalancesPositive zu definieren.

Antwort:

function gainsFromBalancesPositive(balancesOfAperiod){
return earnings(balancesPositive(balancesOfAperiod))
}
function averagePositiveBalances(balancesOfAperiod){
return
average(earningsPositiveBalanceStatements(balanceStatementsOfAperiod))
}

Aufgabe 11: Das ist das Maximum.

Wir werden eine neue Funktion kennenlernen, maximo, mit der wir den größten Wert in
einer Liste von Zahlen ermitteln können.

Mit dieser neuen Funktion habe ich die Funktion maxProfit definiert, die uns den höchsten
Gewinn unter den Guthaben über einen bestimmten Zeitraum angibt.

Antwort:
function maxProfit(balancesOfAperiod){
return max(Erträge(SaldenderPeriode))
}

Aufgabe 12: Mindestens.

Wir gehen davon aus, dass Sie den Namen erraten haben. Wenn nicht, ist sie minimal.

Definieren Sie die Funktion minimumPositiveProfit, die uns sagt, was der niedrigste
Gewinn aller positiven Salden ist.

Antwort:

function minimumPositiveProfit(balancesOfAperiod){
return minimo(gananciasDeBalancesPositivos(balancesDeUnPeriodo));
}

Übung 13: Die besten Monate des Jahres.

Zu diesem Zweck werden wir die folgenden Aufgaben wahrnehmen:

 months, die bei einer Liste von Datensätzen eine Liste von Monaten zurückgibt;
 Glück, das diejenigen Datensätze herausfiltert, die einen Gewinn von mehr als 1000
Dollar aufweisen;
 LuckyMonths, gibt die Monate zurück, die Glück brachten.

Ich habe die Funktionen months, lucky, luckyMonths definiert.

Antwort:

Kapitel 2: Imperative Programmierung.

1) Funktionen und Datentypen.

Übung 2: Funktionen, Deklaration.

Mal sehen, ob du es verstehst: Ich habe eineJavaScript-Funktion half geschrieben, die


eine Zahl nimmt und ihre Hälfte zurückgibt. Beachten Sie, dass der Divisionsoperator
inJavaScript/ ist.
Antwort:

Funktion halb(Zahl){
Rückgabe(1/2*Zahl)
}

Übung 3: Funktionen, Verwendung.

Mal sehen, ob Sie es verstehen; ich habe die folgenden Funktionen geschrieben:

 oben:nimmt eine Zahl und gibt diese Zahl minus eins zurück.
 triple: gibt das Tripel einer Zahl zurück.
 previousDelTriple: kombiniert die beiden vorhergehenden Funktionen:
multipliziert eine Zahl mit 3 und subtrahiert 1 davon.

Antwort:

function previous(Zahl){
Rückgabe(Zahl - 1)
}
Funktion Dreifach(Zahl){
return(Zahl * 3)
}
vorherige FunktionDelTriple(Zahl){
return(previous(triple(number)))
}

Übung 4: Funktionen testen.

Probieren Sie die folgenden Ausdrücke in der Konsole aus, um zu sehen, ob Sie sie
verstehen:

 4 + 5
 Math.round(4.5)
 functionMysterious(1, 2, 3) (wir haben sie bereits für dich deklariert und du kannst
sie verwenden)

Antwort:

Versuchen Sie in der Konsole die Ausdrücke

Übung 5: Rechnen Sie nach.

Probieren Sie die folgenden Ausdrücke in der Konsole aus:

 Math.round(4.4)
 Math.round(4.6)
 Math.max(4, 7)
 Math.min(4, 7)

Antwort:

Probieren Sie die obigen Ausdrücke in der Konsole aus

Übung 6: Aufbau von Puffern.

Antwort:

Funktion extract(Saldo, Betrag) {


return Math.max((Saldo-Betrag),0);
}

Übung 7: Bücher mit gutem Gedächtnis.

Jetzt sind Sie dran! Dani sagt auch, dass jemand gerne liest, wenn die Anzahl der Bücher,
an die er/sie sich erinnert, mehr als 20 beträgt.

Antwort:

function likesRead(aNumber){
return(aZahl > 20)
}

Übung 8: Booleans.

Mal sehen, ob Sie es verstehen; ich habe die folgenden Funktionen geschrieben:

 ThisEntre, nehmen Sie drei Zahlen und sagen Sie, ob die erste größer als die zweite
und kleiner als die dritte ist.
 thisOutOfRange: nimmt drei Zahlen und sagt, ob die erste kleiner als die zweite
oder größer als die dritte ist.

Antwort:

function thisEntre(num1, num2, num3){


return(Ziffern1 > Ziffern2 && Ziffern1 < Ziffern3)
}
Funktion thisOutOfRange(num1, num2, num3){
return(Ziffern1 > Ziffern2 && Ziffern1 > Ziffern3)
}

Übung 9: Worte, nur Worte.


Mal sehen, ob das klar ist: Ich habe die Funktion isWeekEnd geschrieben, die eine
Zeichenkette nimmt, die den Namen eines Wochentags darstellt, und uns sagt, ob es
"Samstag" oder "Sonntag" ist.

Antwort:

function isWeekEnd(day){
return(Tag === "Samstag" || Tag === "Sonntag")
}

Übung 10: Operieren mit Strings.

Mal sehen, ob das klar ist: Ich habe eine Funktion lengthFirstNameFull geschrieben, die
einen Vornamen und einen Nachnamen annimmt und deren Gesamtlänge zurückgibt, wobei
ein zusätzliches Leerzeichen zur Trennung der beiden gezählt wird.

Antwort:

function lengthFullName(vorname, nachname){


return length((vorname)+(nachname)+(1));
}

Übung 11: SHOUT!

Ich habe die Shout-Funktion geschrieben. Wir überlassen es Ihnen, die Funktion
convertToCase zu verwenden, die, erm.... nun ja... grundsätzlich eine Zeichenkette in
Großbuchstaben umwandelt.

Antwort:

Funktion shout(Wort){
return("¡" + convertToMayuscula(word) + "!")
}

Übung 12: Was wäre wenn?

Keine Einführung in dieJavaScript-Sprache wäre vollständig, ohne zumindest eine


Kontrollstruktur zu zeigen, die wir bereits kennen: die bedingte Alternative.

Mal sehen, ob du es verstehst: Ich habe eine max-Funktion geschrieben, die wie Math.max
funktioniert (nicht zu gebrauchen!) und das Maximum zwischen zwei Zahlen liefert. Zum
Beispiel ist das Maximum zwischen 4 und 5 gleich 5, und das Maximum zwischen 10 und 4
ist 10.
Antwort:

Funktion maximo(numero1, numero2) {


wenn (Zahl1 >= Zahl2) {
Nummer1 zurückgeben;
} sonst {
Rückgabe numero2;
}
}

Übung 13: Welches Zeichen bist du?

Wir brauchen eine Vorzeichenfunktion, die bei einer Zahl den Wert zurückgibt:

 1, wenn die Zahl positiv ist.


 0, wenn die Zahl Null ist.
 -1, wenn die Zahl negativ ist.

Ich habe die Vorzeichenfunktion geschrieben. Möglicherweise benötigen Sie mehr als
einen, wenn.

Antwort:

Funktion Vorzeichen (Zahl){


if(Zahl > 0) return 1
if(Zahl === 0) return 0
if(Zahl < 0) return - 1
}

Übung 14: Die Rückkehr des Booleschen.

Ich habe die Funktion isLuckyNumber geschrieben, die bei einer Zahl angibt, ob sie der
obigen Logik folgt. Es lohnt sich nicht, sie zu benutzen!

Antwort:

function isLuckyNumber(number) {
return (Zahl)>0 && (Zahl)<100 && (Zahl!=15);
}

Übung 15: Preise.

Die Jury eines Turniers bat uns, eine Funktion medalSecondPlace zu entwickeln, die die
den ersten Plätzen entsprechende Medaille zurückgibt, und zwar nach folgender Logik

 Erster Platz: "Gold".


 Zweiter Platz: "Silber".
 Dritter Platz: "Bronze".
 andere Positionen: "nichts" entspricht ihr.

Antwort:

function medallaSegunPuesto(lugar){
if(Ort === 1){
return("gold")
} else if(Ort === 2) {
return("Silber")
} else if(place === 3) {
return("Bronze")
} sonst {
return("nichts")
}
}

Übung 16: Datentypen.

Wie wir gerade gesehen haben, gibt es inJavaScript Zahlen, Boolesche Werte und
Zeichenketten:

Darüber hinaus gibt es Operationen, die für alleDatentypen funktionieren, zum Beispiel:

 ===: sagt uns, ob zwei Dinge gleich sind.


 !==: sagt uns, ob zwei Dinge unterschiedlich sind.

Probieren Sie die folgenden Dinge auf der Konsole aus:

 5 + 6 (ok, die Zahlen können addiert werden).


 5 === 6 (ok, alle Dinge können verglichen werden).
 8 > 6 (ok, die Zahlen können geordnet werden).
 !true (ok, Boolesche Werte könnennegiert werden).
 false / true (nicht gut, Booleans können nicht geteilt werden!).

Antwort:

Test auf der Konsole

Übung 17: Daten aller Art.

Bevor wir zum Schluss kommen, noch eine letzte Aufgabe: Welchen Wert haben die
folgenden Ausdrücke? Kreuzen Sie alle richtigen Punkte an!

Antwort:

4 + 4 gleich 8
"4" + "4" ist gleich "44".

"on" + "ce" steht für "einmal".

true && false ist falsch

5 >= 6 ist falsch

! wahr ist falsch

2. Funktionen und Datentypen üben.

Übung 1: Kauf von Hardware.

Ich habe eine Funktion quantCuesta geschrieben, die aus der Anzahl der Zoll des Monitors
und der Menge des Arbeitsspeichers die geschätzten Kosten für unseren Computer
berechnet.

Antwort:

function how muchCuesta(monitor, speicher){


return((Monitor * 60) + (Speicher * 200) + 1000);
}

Übung 2: Ist das gut für mich?

Jetzt, da wir wissen, wie viel ein Computer kostet, wollen wir wissen, ob ein Computerdas
Richtige für mich ist. Dies ist der Fall, wenn:

 Sie beträgt weniger als 6000 Dollar.


 Er hat mindestens einen 32-Zoll-Monitor.
 Es verfügt über mindestens 8 GB Speicherplatz.

Ich habe die Funktion meIt's convenient geschrieben, die wiederum die Anzahl der Zoll und
die Menge des Speichers nimmt und uns sagt, ob es günstig ist, sie zu kaufen.

Antwort:

function meItChoices(inch,memory){
return (quantoCuesta(inch,memory) < 6000 && inch >= 32 && memory >= 8);
}

Übung 3: Dreiecke.
Zeit für Geometrie! Wir wollen ein paar Dinge über ein Dreieck wissen:

 perimeterTriangle: Angesichts der drei Seiten eines Dreiecks wollen wir wissen,
wie lang sein Umfang ist.
 areaTriangle: Angesichts der Basis und der Höhe eines Dreiecks wollen wir seinen
Flächeninhalt wissen.

Entwickeln Sie die Funktionen perimeterTriangle und areaTriangle.

Antwort:

function perimeterTriangle(side1, side2, side3){


Rückgabe (Seite1 + Seite2 + Seite3)
}
function areaTriangle(side1, side3){
return (Seite1 * Seite3 / 2)
}

Übung 4: Quadrate.

Und jetzt sind die Quadrate an der Reihe; wir wollen wissen

 perimeterSquare: Bei einer Seite wollen wir wissen, wie lang ihr Umfang ist.
 areaSquare: Bei einer Seite wollen wir wissen, wie groß ihre Fläche ist.

Entwickeln Sie die Funktionen perimeterSquare und areaSquare.

Antwort:

function perimeterSquare(side) {
Rückgabe (Seite * 4)
}
function areaSquare(side) {
Rückgabe (Seite * Seite)
}

Übung 5: Ist es gestimmt?

Entwickeln Sie eine abgestimmte Funktion, die die Frequenz (eine Zahl) vonder Zentrale
empfängt und feststellt, ob diese Frequenz 440 Hz entspricht.

Antwort:

function thisFrequency(frequency){
return (Frequenz === 440)
}

Übung 6: Ist es knapp?


Jetzt wollen wir wissen, ob das mittlerec des Klaviersannähernd gestimmt ist. Dies ist der
Fall, wenn sie zwischen 437 Hz und 443 Hz liegt, aber NICHT genau 440 Hz beträgt.

Ich habe die Funktion thisClose geschrieben.

Antwort:

function thisClose(frequency){
return (437 <= Frequenz && Frequenz <= 443 && Frequenz !== 440)
}

Übung 7: Plakate.

Ich habe die Funktion writeLittleBillboard geschrieben, die aus einem Titel, einem
Vornamen und einem Nachnamen einen einzigen String bildet.

Antwort:

function writeLetter(title, vorname, nachname){


return(titel + " " + vorname + " " + nachname)
}

Übung 8: Weitere Plakate.

Antwort:

function writeLetter(title, vorname, nachname, bool){


return (Titel + " " + (!bool?vorname+""+nachname:nachname))
}

Übung 9: Optimale Plakate.

Da wir nun unsere großen und kleinen Typenschilder schreiben können, brauchen wir
eineneue Funktion, die uns die optimale Größe des Typenschilds liefert:

 Wenn Vor- und Nachname insgesamt mehr als 15 Buchstaben haben, wollen wir ein
kurzes Zeichen;
 Ansonsten wollen wir ein langes Banner.

Ich habe die Funktion writePostLetterOptimal definiert, die einen Titel, einen Vornamen
und einen Nachnamen annimmt und mit Hilfe von writePostLetter ein kurzes oder langes
Plakat entsprechend den oben genannten Regeln erzeugt.

Antwort:

function escribirCartelitoOptimo(titulo, nombre, apellido){


return writeLetter(title, vorname, nachname,(length(vorname + nachname) >=
15))
}

Übung 10: Köpfe oder Minze.

Ich habe eine Funktion decisionConMoneda geschrieben, die drei Parameter benötigt und
den zweiten zurückgibt, wenn der erste "cara" ist, oder den dritten, wenn "ceca".

Antwort:

function decisionConMoneda(currency, pizzas, pies){


if(Münze === "Kopf"){
Pizzen zurückgeben;
}else{
Empanadas zurückgeben;
}
}

Übung 11: Envido!

Wir wollen den Wert der Stichkarten wissen, wenn wirEnvido spielen. Das wissen wir:

 Alle Karten von 1 bis einschließlich 7 sind ihre Nummerierung wert.


 Die Karten 10 bis einschließlich 12 sind 0 wert.
 Man spielt nicht mit 8ern oder 9ern.

Ich habe eine Funktion valueSent geschrieben, die eine Buchstabennummer annimmt und
ihren Sendewert zurückgibt.

Antwort:

function valueSent(letter){
if(Buchstabe >= 1 && Buchstabe <= 7)
(Brief zurücksenden)
if(Buchstabe >= 10 && Buchstabe <= 12)
{Rückgabe 0}
}

Übung 12: Ich will eine Widerlegung!

Nun, ähm, nein, halt, zuerst wollen wir berechnen, wie viele Neidpunkte ein Spieler hat.
Das wissen wir:

 Wenn die beiden Karten die gleiche Farbe haben, ist der Wert der Sendung die
Summe ihrer Sendewerte plus 20.
 Andernfalls ist der Wert der Sendung der höchste Wert der Sendung zwischen
ihnen.
Entwickeln Sie unter Verwendung der Funktion sendValue (die wir bereits für Sie
geschrieben haben) die Funktion totalSendPoints, die die Werte und Farben von zwei
Karten nimmt und angibt, wie viel send sie insgesamt ergeben.

Antwort:

function pointsSentTotals(n1, p1, p1, n2, p2){


if(p1 === p2){
return (valueSent(n1) + valueSent(n2) + 20)
}else{
return Math.max(n1, n2)
}
}

Übung 13: Ich will Gutschein vier!

Beim Truco-Spiel können die gegnerischen Teams abwechselnd den Einsatz erhöhen. Wenn
zum Beispiel ein Spielertruco singt, kann ein anderer Spielerretruco singen. Es liegt auf der
Hand, dass die Einsätze immer höher werden:

Punkte auf dem


Canto
Spiel
Trick 2
retruco 3
ist vier
4
wert

Ich habe die Funktion valueChantTrick geschrieben, die den Gesang nimmt und zurückgibt,
wie viele Punkte er wert ist.

Antwort:

Funktion valueCantoTruco(canto){
if(canto === "truco"){
Rückgabe(2)
}
if(canto === "retruco"){
Rückgabe(3)
}
if(canto === "vale cuatro"){
zurück(4)
}
}

3 Variablen und Verfahren.

Übung 1: Was ist mit der Tafel?


Antwort:

functionMysterious(2, 1)

Übung 2: Siebdruck.

Antwort:

Versuchen Sie functionEgocentric() in der Konsole.

Übung 3: Martin Fierro.

Ich habe eine Funktion versosMartinFierro geschrieben, die die ersten Strophen des Martín
Fierro auf dem Bildschirm ausgibt, um zu sehen, ob es klar wird:

Hier fange ich an zu singen


Im Takt des Windes;
Dass der Mann, der es enthüllt
Ein außergewöhnlicher Kummer

Diese Funktion muss 0 zurückgeben

Antwort:

function versosMartinFierro() {
print("Hier fange ich an zu singen");
print("Im Takt der Sparren;");
print("Möge der Mann, der es enthüllt");
print("Ein außergewöhnlicher Kummer");
Rückgabe 0
}

Übung 4: Was ist mit Verfahren?

Wenn wir Code wiederverwenden wollen, können wir deklarieren:

 Funktionen, die immer etwas zurückgeben und keine Wirkung haben.


 Verfahren, die nichts zurückgeben, sondern Wirkungen erzeugen.

Senden Sie diese neue Version von versosMartinFierro.

Antwort:

function versosMartinFierro() {
print("Hier fange ich an zu singen");
print("Im Takt der Sparren;");
print("Möge der Mann, der es enthüllt");
print("Ein außergewöhnlicher Kummer");
}

Übung 5: Was ist mit dem Programm?

InJavaScript ist alles, was wir außerhalb einerFunktion schreiben, implizit dieser
Einstiegspunkt. Wenn wir zum Beispiel ein Programm wollen, das das klassische "Hello,
world!" auf dem Bildschirm ausgibt, können wir es wie folgt schreiben:

print("Hallo Welt!");

Antwort:

print("Wir würfeln");
print("Der erste Wurf traf " + rollDead());
print("Der zweite Wurf traf " + rollDead());
print("Der dritte Wurf traf " + rollDead());

Übung 6: Zwänge.

Mal sehen, ob das klar ist. Ich habe eine Funktion elephantsSwingers geschrieben, die eine
Anzahl von Elefanten nimmt und einen Reim aus einem bekannten Lied "3 elephants were
swinging"zurückgibt.

Antwort:

function elephantsEquilibrants(number){
return(Zahl + " " + "Elefanten haben geschaukelt")
}

Übung 7: Der Kreislauf des Lebens.

Nehmen wir an, dass die Zahl Pi gleich 3,14159265358979 ist (nicht unendlich, aber genau
genug für unsere Berechnungen):

Ich habe die Funktionen perimeterCircle und areaCircle definiert, die den Radius eines
Kreises erhalten und daraus seinen Umfang und seine Fläche zurückgeben.

Antwort:

function perimeterCircle(radius){
return(3.14159265358979 * 2 * Radius)
}
function areaCircle(radius) {
return(3.14159265358979 * Radius * Radius)
}

Aufgabe 8: Ich glaube, so ist es einfacher.

sei Pi = 3,14159265358979;

Ändern Sie die Stellen, an denen 3,14159265358979 für die Variable pi in den von uns
definierten Funktionen erscheint.

Antwort:

sei Pi = 3,14159265358979;

function perimeterCircle(radius){
return(pi * 2 * Radius)
}
function areaCircle(radius) {
return(pi * Radius * Radius)
}

Aufgabe 9: Dies ist wertlos.

Da Sie nun wissen, wie Variablenzugewiesen werden, hier ein kleiner Denkanstoß: Was
passiert, wenn ich versuche, eine Variablezu verwenden, der ich nie einen Wert
zugewiesen habe?

Antwort:

Kopieren, einfügen und in der Konsole testen

Übung 10: Globale Variablen.

Die innerhalb einer Funktion deklarierten Variablen, die so genanntenlokalen Variablen,


sind kein großes Geheimnis. Dabei ist jedoch besondere Vorsicht geboten: Sie können nur
innerhalb der betreffenden Funktion verwendet werden.

Direkt im Programm deklarierte Variablen, so genannteglobale Variablen, können jedoch


von jeder Funktion aus verwendet werden.

Antwort:

let loadMaximumInKilograms = 300


function elevatorOverloaded(people){
return(Personen * GewichtDurchschnittlichesPersonenGewichtInKilogramm) >
loadMaximumInKilogramm
}

Übung 11: Reich werden.

Ich habe eine incrementFortuna-Prozedur geschrieben, die den Wert der globalen Variablen
pesosInMyWallet verdoppelt. Geben Sie die Variable nicht an, wir haben das bereits für Sie
getan (mit einem geheimen Geldbetrag).

Antwort:

function increaseFortuna(){
pesosInMyWallet = pesosInMyWallet * 2
}

Aufgabe 12: Wie viel ist das wert?

Wir haben gesehen, dass eine Variable nur einen Wert haben kann, so dass jedes Mal, wenn
wir einen neuen Wert zuweisen, der alte verloren geht.

Antwort:

20

4. Boolesche Logik.

Übung 1: Der Letzte, der das Licht ausmacht!

Beginnen wir mit etwas Einfachem: Erinnern Sie sich an den Betreiber! Sie wird als
Negation, not oder logisches Komplement bezeichnet und dient dazu, einen booleschen
Wert zu negieren.

Wenn ich den booleschen Wert von hasHungry habe, lautet das Komplement !hasHungry.

Ich habe die useClose-Prozedur definiert, damit wir den Reißverschluss eines Rucksacks
öffnen und schließen können.

Antwort:

let backpackOpen = true;


function useClose() {
backpackOpen = !backpackOpen
}
Übung 2: Leugnen kostet nichts.

Jetzt sind Sie dran! Ich habe isOlderOfAge definiert, das ein Alter erhält und daraus
YoungerOfAge wird.

Antwort:

function isOldestOf(age){
return(Alter >= 18)
}
function isMinorOfAge(age){
return(!isOldestOfAge(age))
}

Übung 3: Die Peripatetiker.

Ich habe eine esPeripatetic-Funktion definiert, die den Beruf einer Person, ihre Nationalität
und die Anzahl der Kilometer, die sie pro Tag zurücklegt, berücksichtigt. Jemand ist
peripatetisch, wenn er ein griechischer Philosoph ist und gerne zu Fuß geht (er geht mehr
als 2 Kilometer pro Tag).

Antwort:

function isPeripatetic(lehrer, nationalität, kms){


return(Lehrer === "Philosoph" && Nationalität === "Grieche" && kms > 2)
}

Übung 4: Die Wahrheit hinter der Konjunktion.

Antwort:

Test auf der Konsole:

verbrauchtwenigEnergie(24, 5)

verbrauchtwenigEnergie(24, 0)

verbrauchtwenigEnergie(21, 7)

verbrauchtwenigEnergie(18, 1)

Übung 5: Lasst uns T.E.G. spielen!

Antwort:
Test an der Konsole:

win(true, 25)

win(false, 30)

win(false, 20)

win(true, 31)

Übung 6: Und jetzt... wer kann uns helfen?

Wir wissen, dass die Bank geschlossen ist, wenn:

 Ist es ein Feiertag, oder


 Es ist Wochenende, oder
 Wir sind nicht während der Geschäftszeiten erreichbar.

Ich habe die Funktionen isWeekEnd und isClosed definiert.

Antwort:

let esFeriado = true;


function isWeekEnd(day){
return(tag === "samstag" || tag === "sonntag")
}
function isClosed(isFeriado, day, time){
return(isFeriado || !dentroDeHorarioBancario(horario) ||
esFinDeSemana(dia))
}

Übung 7: Guten Morgen.

In der Familie Buendía ist das so:

 Arcadio ist der Sohn von José Arcadio und Pilar Ternera.
 Aureliano José ist der Sohn von Oberst Aureliano und Pilar Ternera.
 Aureliano Segundo und Remedios sind die Kinder von Arcadio und Sofía De La
Piedad.

Um mit der Analyse dieser Familie zu beginnen, haben wir bereits die Funktionen
motherFrom und fatherFrom definiert.
Jetzt sind Sie an der Reihe, die Funktion areMeansBrothers zu definieren. Denken Sie
daran, dass Halbgeschwister eine Mutter oder einen Vater haben können, aber nicht beide,
denn.... dann wären sie Geschwister!

Antwort:

function haveTheSameMother(child1, child2){


let mother1 = motherFrom(child1);
let mother2 = motherFrom(child2);
return mutter1 === mutter2;
}
function haveTheSameParent(child1, child2){
let parent1 = parentFrom(child1);
let parent2 = parentFrom(child2);
return parent1 === parent2;
}
function areMiddleSiblings(child1, child2){
return (haveSameMother(child1, child2) !== haveSameFather(child1, child2));
}

Aufgabe 8: Die Wahrheit ist, dass es keine Wahrheit gibt.

Probieren Sie Ihre Funktion areMeansSiblings mit den folgenden Werten aus und prüfen
Sie, ob sie sich wie die Tabelle verhält:

Antwort:

sonHalfBrothers(arcadio, aurelianoJose)
areMeansBrothers(aurelianoSegundo, remedios)
sonMediosHermanos(aurelianoJose,remedios)

Übung 9: Hallo! Mein Name ist Xor.

Im Gegensatz zu and, or und not wird xor normalerweise nicht in Sprachen definiert, aber
da Sie jetzt wissen, wie es funktioniert, können Sie es bei Bedarf von Hand definieren.

Mal sehen, ob Sie das verstehen: Ich habe die allgemeine Funktion xor definiert, die zwei
Boolesche Werte annimmt und den entsprechenden Wahrheitswert zurückgibt.

Antwort:

Funktion xor(a, b){


return(a !== b)
}

Übung 10: Vorrangigkeit.


Wenn ein mathematischer Ausdruck mehrere Operatoren enthält, wissen wir, dass
Multiplikation und Division vor Addition und Subtraktion ausgeführt werden:

5 * 3 + 8 / 4 - 3 = 14

Wie in der Mathematik werden Ausdrücke bei der Verwendung logischer Operatoren in
einer bestimmten Reihenfolge ausgewertet, die alsRangfolge bezeichnet wird.

Antwort:

Versuchen Sie es in der Konsole mit den Werten:

payWithCard(true, "Kredit", 320)

payWithCard(false, "Kredit", 80)

payWithCard(true, "debit", 215)

payWithCard(true, "debit", 32)

Übung 11: Eine noch nie dagewesene Übung.

Ich habe die Funktion canRetire geschrieben, die das Alter und das Geschlecht einer Person
sowie die Anzahl der Beitragsjahre für die Rente erhält.

Das Mindestalter für Frauen liegt bei 60 Jahren, das für Männer bei 65 Jahren. In beiden
Fällen müssen Sie mindestens 30 Beitragsjahre vorweisen können.

Versuchen Sie, die Aufgabe in einer einzigen Vorstellung zu lösen! Dann wollen wir mal
sehen, wie es aussehen würde, wenn wir delegieren.

Antwort:

function canRetire(age, gender, contribution){


return((Geschlecht === "F" && Alter >= 60) || (Geschlecht === "M" && Alter
>= 65)) && Beitrag >= 30
}

Übung 12: Kann ich nach oben gehen?

Die Voraussetzungen für die Teilnahme an der Attraktion sind:


 Erreichen Sie die Mindesthöhe von 1,5 m (oder 1,2 m, wenn Sie von einem
Erwachsenen begleitet werden).
 Sie haben kein Herzleiden.

Ich habe die 3-Parameter-Funktion canClimb definiert, die die Körpergröße einer Person in
Metern, die Tatsache, ob sie in Begleitung ist und ob sie eine Herzerkrankung hat, erhält.

Antwort:

function canRaise(height, accompanied, condition){


return((Höhe >= 1,5) || (Höhe >= 1,2 && begleitet)) && !affeccion
}

5. Verzeichnisse.

Übung 1: Lieblingsserie.

Um eine Gruppe von Zeichenfolgen darzustellen, setzen wir alle Zeichenfolgen, an denen
wir interessiert sind, zwischen eckige Klammern ([ und ]), die durch Kommas getrennt sind.
Einfach, nicht wahr?

Antwort:

Probieren Sie die folgenden Abfragen in der Konsole aus:

SerienFavoritenvonAna

SerienFavoritenDeHector

["Hallo", "Welt!"]

["hallo", "hallo"]

Übung 2: Und das ist eine Liste.

Wir haben gerade gesehen, wie man auf einfache Weise Mengen von Dingen modellieren
kann. Mit[] bietetJavaScript eine einfache Möglichkeit, diese Elemente in Listen zu
gruppieren.

Gibt es eine maximale Anzahl von Elementen? Nein, es gibt kein Limit! Listen können eine
beliebige Anzahl von Elementen enthalten.
Und nicht nur das, auch die Ordnung ist wichtig. Zum Beispiel ist ["hallo", "Welt"] nicht
dasselbe wie ["Welt", "hallo"]: beide haben die gleichen Elemente, aber an
unterschiedlichen Positionen.

Antwort:

Probieren Sie die folgenden Abfragen in der Konsole aus:

equalLists(["hallo", "Welt"], ["Welt", "hallo"])

equalLists(["hallo", "welt"], ["hallo", "welt"])

equalLists(["hallo", "welt"], ["hallo", "alle", "die", "welt"])

equalLists(["hallo"], ["hallo", "Welt"])

["hallo", "Welt"] === ["Welt", "hallo"] === ["Welt", "hallo"]

Menschen

["mara", "julian"] === Menschen

Menschen === Menschen

Übung 3: Glücksspiele.

Wir können auch Mengen von Zahlen oder Booleschen Werten auf die gleiche Weise
darstellen, indem wir sie in eckige Klammern setzen und durch Kommas trennen. Wir
können Listen mit Zahlen, Listen mit Zeichenketten, Listen mit Booleschen Werten und so
weiter haben. Wir könnten sogar Listen von Listen haben!

Antwort:

Mal sehen, ob das klar ist. Probieren Sie die folgenden Abfragen in der Konsole aus:

LotterieNummern

salioCara

[[1, 2, 3], [4, 5, 6]]


Übung 4: Leere Listen.

Toll, es sieht so aus, als ob eine Liste jede Art von Element enthalten kann! Wir können
Listen mit Booleschen Werten, mit Zahlen, mit Zeichenketten, mit Listen... haben.

Darüber hinaus können sie eine beliebige Anzahl von Elementen enthalten: eins, zwei,
fünfzehn, hundert.

Können wir dann leere Listen haben, d. h. mit keinen Elementen? Ja, natürlich!

let unaListaVacia = []

Antwort:

Versuchen Sie, in der Konsole aVacancyList einzugeben

Aufgabe 5: Wie viele Elemente haben Sie?

Inzwischen wissen wir, welche Dinge wir mit Listen darstellen können und wie wir dies
tun. Aber was können wir mit ihnen machen?

Beginnen wir mit dem einfachsten Teil: die Anzahl der Einträge in der Liste zu kennen.
Dies kann mit Hilfe der Längenfunktion geschehen, ähnlich wie bei den Strings.

Antwort:

Führen Sie die folgenden Abfragen in der Konsole durch:

length([])

length(lotteryNumbers)

length([4, 3])

Übung 6: Geschmacksverstärker.

Listen sind sehr nützlich, wenn sie mehrere Elemente enthalten. Aber es gibt noch mehr!
Wir können auch jederzeit Elemente hinzufügen, indem wir die Funktion add verwenden,
die zwei Parameter benötigt: die Liste und das Element.
Wie man sieht, wird die Liste größer, wenn man ein Element hinzufügt. Aber wo in der
Liste fügen Sie es hinzu? Am Anfang? Und am Ende? In der Mitte?

Finden Sie es selbst heraus: Überprüfen Sie die Konsole, um zu sehen, welche Gegenstände
Habseligkeiten enthalten, fügen Sie eine "Armbrust" hinzu und überprüfen Sie die
Habseligkeiten erneut.

Außerdem gibt es eine remove-Prozedur, die nur die Liste als Parameter erhält. Überprüfen
Sie die Konsole, um zu sehen, was sie tut.

Antwort:

Test auf der Konsole

add(Gegenstände, "magisches Amulett")

Übung 7: Übertragung.

Deklarieren Sie eine move-Prozedur, die zwei Listen nimmt, das letzte Element aus der
ersten entfernt und es der zweiten hinzufügt.

Antwort:

Funktion move(aList, anotherList){


add(otherList, remove(otherList))
}

Aufgabe 8: Und wo ist sie?

Und was passiert, wenn Sie per Parameter ein Element positionieren, das es nicht gibt?
Überzeugen Sie sich selbst!

Antwort:

Kopieren und in die Konsole einfügen

Position(Arbeitstage, "osvaldo")

Übung 9: Enthält.
Ich habe die Funktion contains geschrieben, um festzustellen, ob eine Liste ein bestimmtes
Element enthält.

Wenn Sie die Abfragebeispiele aufmerksam verfolgt haben, werden Sie festgestellt haben,
dass Listen auch doppelte Elemente enthalten können: [1, 2, 1], ["hallo", "hallo"], usw.

Daher gibt position tatsächlich die Position desersten Vorkommens des Elements in der
Liste zurück.

Antwort:

function contains(array, search){


return(position(array, search) >- 1)
}

Übung 10: N-te Element.

Genauso wie es eine Funktion gibt, um herauszufinden, an welcher Position sich ein
Element befindet, kann es auch vorkommen, dass wir das Gegenteil wissen wollen: welches
Element sich an einer bestimmten Position befindet.

Um das herauszufinden, können wir denIndexierungsoperator verwenden, indem wir nach


der Sammlung und zwischen eckigen Klammern [] die Position schreiben, die wir
herausfinden wollen.

Antwort:

let list =[]

Liste[0]

Übung 11: Weitere Preise.

Wenn Sie nach einem Element an einer Position fragen, die gleich oder größer als die
Größe der Liste ist, erhalten Sie ein undefiniertes Ergebnis. Das hört sich nicht schlimm an,
aber das Problem ist, dass man mit undefiniert nichts wirklich Sinnvolles machen kann.

Die Warnung lautet also: Nicht überindizieren!


In diesem Sinne hier eine Herausforderung: Ich habe die Funktion medalSecondPosts neu
geschrieben, aber dieses Mal mit höchstens einem einzigen if. Vielleicht finden Sie die
Listen hier nützlich.

Wir erinnern Sie daran, was die Funktion bewirkt: Sie soll die Medaille zurückgeben, die
den ersten Plätzen in einem Wettbewerb entspricht.

Antwort:

let medal = ["nil", "gold", "silver", "bronze"]

function medalSecondPost(post){
if(post <= 3){
return(Medaille[Position])
} sonst {
return(Medaille[0])
}
}

Übung 12: Vergessen Sie nicht, "Hallo" zu sagen.

Lernen wir eine Möglichkeit kennen, die Elemente einer Liste mit einem neuen Freund
durchzugehen: die for-Schleife.

Antwort:

function greet(people){
for(let person1 of persons){
print("Hallo" + " " + Person1);
}
}

6. Aufzeichnungen.

Übung 1: Die ersten Register.

Antwort:

Kopieren Sie den Code und fügen Sie ihn in die Konsole ein

statueOfFreedom
christRedentor
Eiffelturm
tajMahal
Kolosseum
Übung 2: Ihr eigenes Denkmal.

Das ist dein Moment des Denkmals! Speichern Sie Aufzeichnungen dieser Denkmäler, die
aus den Städten Teheran,Iran bzw. Rosario,Argentinien, stammen, in den Variablen
torreAzadi und monumentoNacionalALaBandera. Trauen Sie sich zu erforschen, in
welchem Jahr sie fertiggestellt wurden, um dieses Feld zu vervollständigen?

Antwort:

let AzadiTower = {Name: "Azadi Tower", Standort: "Teheran, Iran", Baujahr:


1971}
let monumentoNacionalALaBandera = {Name: "Monumento Nacional A La Bandera",
Ort: "Rosario, Argentinien", Baujahr: 1957 }

Übung 3: Zugriff auf das Feld.

Wir deklarieren die Planeten Merkur, Mars und Saturn als Datensätze mit den folgenden
Informationen: Name, TemperaturDurchschnitt und ob er Ringe hat. Probieren Sie sie an
der Konsole aus!

Antwort:

Wir erklären die Planeten Merkur, Mars und Saturn zu Rekorden!

Übung 4: Temperatur gleiten lassen.

Entwickeln Sie eine temperatureFromPlanet-Funktion, die einen Planetendatensatz als


Parameter erhält und eine Zeichenkette mit seinem Namen und der Durchschnittstemperatur
zurückgibt. Es muss für jeden Planeten funktionieren!

Antwort:

Funktion planetTemperature(planet){
return(planet.name + " hat eine Durchschnittstemperatur von " +
planet.averageTemperature + " Grad")
}

Übung 5: Dateien verschieben.

Entwickeln Sie die moveFile-Prozedur, die einen Datensatz und einen neuen Pfad erhält
und die Datei mit dem neuen Pfad ändert.

Antwort:
function moveFile(record, pathNew){
let readme = register.path = pathNew
}

Übung 6: Aufzeichnungen aus zwei Jahrtausenden.

In der vorangegangenen Übung haben wir den Registrierungspfad geändert, aber wir haben
das Erstellungsdatum nicht verwendet. Benutzen wir es! Wir wollen wissen, ob eine Datei
aus dem letzten Jahrtausend stammt, was der Fall ist, wenn ihr Jahr vor 2000 liegt.

Entwickeln Sie die Funktion isPastMillennium, die eine Datei erhält und einen booleschen
Wert zurückgibt.

Antwort:

function esDelMilenioPasado(file){
return(year(file.creation) < 2000)
}

Übung 7: Komplexe Nachspeisen.

Erstellen Sie eine Funktion moreDifficultToBake, die zwei Dessertdatensätze als Parameter
nimmt und denjenigen mit den meisten Zutaten zurückgibt.

Antwort:

function moreDifficultToCook(dessert1, dessert2){


if(length(dessert1.ingredients) < length(dessert2.ingredients)){
zurück dessert2;
}
if(length(dessert1.ingredients) >= length(dessert2.ingredients)){
return dessert1;
}
}

Übung 8: Registrierungslisten.

So wie wir mit Listen von Zahlen, Booleschen Werten, Zeichenketten oder anderen Listen
arbeiten, können wir auch Datensätze auflisten. Mit den eckigen Klammern [ ] können Sie
alles tun, was Sie zuvor getan haben, z. B. entfernen, die Länge herausfinden oder nach dem
Element einer bestimmten Position fragen.

Probieren Sie die Listen der DessertsFavoriten und DenkmälerAmerikas in der Konsole aus.
Es gibt ein Dessert, das wir noch nicht gezeigt haben. Kannst du anhand der Zutaten
erkennen, um welches Dessert es sich handelt?
Antwort:

Test auf der Konsole:

DessertsFavoriten

monumentosDeAmerica

Übung 9: 60 süße Minuten.

Entwickeln Sie die Prozedur addFastDesserts, die eine Liste mit Schnelldesserts und ein
Dessert pro Parameter erhält. Beträgt die Garzeit eine Stunde oder weniger, wird der
Eintrag in die Liste aufgenommen.

Antwort:

function addAPostresresRapidos(list, dessert){


if(dessert.cookingTime <= 60){
add(list, dessert)
}
}

Aufgabe 10: Es gibt einen Eintrag in meinem Register.

Finden Sie heraus, was das Feld ingredients des Feldes dessert des menuChildren-
Datensatzes ergibt. Es ist ein Register im anderen!

Antwort:

Test auf der Konsole

menuChildren.dessert.ingredients

Übung 11: Zucker!

Ich habe eine Prozedur sweetenMenu definiert, die einen Menüdatensatz empfängt und
dessen Dessertzutaten Zucker hinzufügt. Wenn bereits Zucker enthalten ist, spielt das keine
Rolle.... mehr hinzufügen!

Antwort:

function sweetenMenu(menu){
add(menu.dessert.ingredients, "Zucker")
return menu.dessert
}

7. Routen.

Übung 1: Halbjährliche Erträge.

Gibt es ein Problem mit der Funktion gainSemester, die wir oben geschrieben haben?
Funktioniert es auch mit vierteljährlichen Bilanzen? Wie sieht es mit viermonatigen
Quartalen aus?

Probieren Sie es an der Konsole aus!

Antwort:

Test auf der Konsole:

profitSemester

Aufgabe 2: Was ist mit dem Rest der Gewinne?

Wir möchten in der Lage sein, die Gewinne aller Salden in einer Liste zu addieren,
unabhängig davon, wie viele es tatsächlich gibt; wir möchten eine Funktion profitTotal, die
die Salden für einen beliebigen Zeitraum von Monaten addieren kann: Semester, Quartal,
Trimester usw. Wie schwierig!

Antwort:

gananciaTotal([
{ Monat: "Januar", Gewinn: 2 },
{ Monat: "Februar", Gewinn: 3 }
])

Übung 3: Alle Gewinne, der Gewinn.

Antwort:

Funktion gananciaTotal4(balancesOfAperiod){
let sum = 0
Summierung = Summierung + balancesOfAperiod[0].gain
Summierung = Summierung + balancesOfAperiod[1].gain
Summierung = Summierung + balancesOfAperiod[2].gain
Summierung = Summierung + balancesOfAperiod[3].gain
Rücksumme
}

Übung 4: Ein alter Freund besucht uns.

Wir müssen also den Vorgang der Akkumulation mehrmals wiederholen, einmal für jedes
Element der Liste. Sagen wir (wieder) Hallo zum for...of!

Wie Sie sehen können, erlaubt uns das for...of, jedes Element einer Liste zu besuchen und
etwas damit zu tun; in diesem Fall werden wir jeden Saldo von balancesOfAperiod
besuchen.

Antwort:

profitTotal([
{ Monat: "März", Gewinn: 8 },
{ Monat: "August", Gewinn: 10 }
])

Übung 5: Konten abräumen.

Anna hat neue Anforderungen! Nun fragte er uns: "Ich möchte wissen, wie viele Bilanzen
positiv waren, d.h. bei denen der Gewinn größer als Null war.

Vervollständigen Sie die Funktion PositiveBalanceAmount. Wenn Sie genau hinschauen,


werden Sie feststellen, dass es eine ähnliche Struktur wie das vorherige Problem hat.

Antwort:

function amountOfBalancesPositive(balancesOfAperiod){
let Menge = 0
for(let balance of balancesOfOnePeriod){
Menge = Menge + ((Saldo.Gewinn) > 0)
}
Rücklaufmenge;
}

Aufgabe 6: Der durchschnittliche Gewinn.

Kommen wir nun zu Anas nächstem Anliegen. Wir können bereits eine Summe der Erträge
berechnen und auch Zähler erstellen, jetzt werden wir Durchschnittswerte berechnen.
Ana würde gerne wissen, wie hoch der durchschnittliche Gewinn bei einer beliebigen
Anzahl von Guthaben ist.

Antwort:

Funktion gananciaPrommedio(gananciaTotal){
let sum = 0
for(let balance of gananciaTotal){
Summierung = (Summierung + Balance.gain)
}
return Summe / Länge (gainTotal)
}

Übung 7: Wer gewinnt, wer verliert.

Da wir alles tun können, worum sie uns bittet, möchte Ana den durchschnittlichen Gewinn
der positiven Salden wissen.

Ich habe die Funktionen definiert:

 positivPositiver Gewinn, der sich aus der Summe der Gewinne der positiven Salden
ergibt.
 averagePositiveProfit mit Aufruf von PositivePositiveProfit und
PositiveBalanceSheetAmount.

Antwort:

function positiveGain(balancesOfAperiod){
let sum = 0
for(let balance of balancesOfOnePeriod){
if(balance.gain > 0){
Summierung = Summierung + (Saldo.Gewinn)
}
}
Rücksumme
}

function averagePositiveProfits(balancesOfAperiod){
return PositiveGain(balancesOfAperiod) /
PositiveBalanceAmount(balancesOfAperiod)
}

Übung 8: Ich bin die Karte, ich bin die Karte.

Leider ist es nicht möglich, die Durchschnittsfunktion mit unserer Liste von Datensätzen zu
verwenden. Was wir brauchen, ist eine Liste, die nur die Erträge der einzelnen Bilanzen
enthält. Dazu müssen wir jedes Element der Liste umwandeln bzw.abbilden.
Vervollständigen Sie die Ergebnisfunktion, die eine Liste von Bilanzen aufnimmt und nur
die Ergebnisse der einzelnen Bilanzen zurückgibt.

Antwort:

function earnings(balancesOfAperiod){
let profits = []
for(let balance of balancesOfOnePeriod){
add(Gewinn, Saldo.Gewinn)
}
Renditechancen
}

Übung 9: Filtern, alles an seinen Platz bringen.

Mit Programmierung kann man alles, oder fast alles, machen. Wir haben bereits eine
Funktion erstellt, um die Anzahl der positiven Salden zu ermitteln
(numberOfPositiveBalances), nun wollen wir sehen, wie wir herausfinden können, welches
diese Salden sind.

Vervollständigen Sie die Funktion balancesPositive, die die Salden einer Periode aufnimmt
und eine Liste derjenigen zurückgibt, deren Gewinn größer als Null war.

Antwort:

function balancesPositives(balancesOfAperiod){
let balances = []
for(let balance of balancesOfOnePeriod){
if(balance.gain > 0){
add(Salden, Saldo)
}
}
Rücklaufsalden
}

Aufgabe 10: Ein positiverer Durchschnitt.

Da wir nun die Gewinnfunktion und die positiven Salden haben, können wir die allgemeine
Durchschnittsfunktion verwenden, um herauszufinden, wie hoch der durchschnittliche
Gewinn der positiven Salden ist.

Definieren Sie die Funktion profitsFromBalancesPositive und verwenden Sie sie dann
zusammen mit average, um averageFromBalancesPositive zu definieren.

Antwort:
function gainsFromBalancesPositive(balancesOfAperiod){
return earnings(balancesPositive(balancesOfAperiod))
}
function averagePositiveBalances(balancesOfAperiod){
return
average(earningsPositiveBalanceStatements(balanceStatementsOfAperiod))
}

Aufgabe 11: Das ist das Maximum.

Wir werden eine neue Funktion kennenlernen, maximo, mit der wir den größten Wert in
einer Liste von Zahlen ermitteln können.

Mit dieser neuen Funktion habe ich die Funktion maxProfit definiert, die uns den höchsten
Gewinn unter den Guthaben über einen bestimmten Zeitraum angibt.

Antwort:

function maxProfit(balancesOfAperiod){
return max(Erträge(SaldenderPeriode))
}

Aufgabe 12: Mindestens.

Wir gehen davon aus, dass Sie den Namen erraten haben. Wenn nicht, ist sie minimal.

Definieren Sie die Funktion minimumPositiveProfit, die uns sagt, was der niedrigste
Gewinn aller positiven Salden ist.

Antwort:

function minimumPositiveProfit(balancesOfAperiod){
return minimo(gananciasDeBalancesPositivos(balancesDeUnPeriodo));
}

Übung 13: Die schönsten Monate des Jahres.

Zu diesem Zweck werden wir die folgenden Aufgaben wahrnehmen:

 months, die bei einer Liste von Datensätzen eine Liste von Monaten zurückgibt;
 Glück, das diejenigen Datensätze herausfiltert, die einen Gewinn von mehr als 1000
Dollar aufweisen;
 LuckyMonths, gibt die Monate zurück, die Glück brachten.

Ich habe die Funktionen months, lucky, luckyMonths definiert.

Antwort:
function months(earningsPeriod){
let month = []
for(let period of earningsPeriod){
add(Monat, Zeitraum.Monat)
}
Rückgabemonat
}
function lucky(earningsPeriod){
let lucky = []
for(let period of earningsPeriod){
if(period.gain > 1000){
add(lucky, period);
}
}
Glück zurück;
}
function LuckyMonths(earningsPeriod){
return months(lucky(earningsPeriod));
}

Das könnte Ihnen auch gefallen