Können Sie diese Codierungsfrage lösen, die in der Mittelschule gestellt wird? ✔️
Obwohl viele Menschen heute die Beziehung zwischen Mathematik und Codierung nicht vollständig akzeptieren, AnfängerlevelCodierung durchzuführen Grundkenntnisse in Mathematik sind erforderlich.Auf diese Weise, was Sie schreiben, schreiben oder schreiben Codes verstehen und verständlich machenwird möglich.
Das jüngste Beispiel für diese Situation zeigte sich bei den 30. Science Olympics, die am 21. Mai stattfanden. Die Codierungsfrage, die bei den von TÜBİTAK organisierten Olympischen Spielen an weiterführende Schulen gestellt wurde, wurde heute erneut zur Tagesordnung in den sozialen Medien. Werfen wir einen Blick auf die Frage, ihre Lösung und die Reaktionen.
Hier ist die umstrittene grundlegende Codierungsfrage:
Scrollen Sie nicht gleich durch die Seite! Versuchen Sie zunächst, ein wenig zu verstehen und wahrzunehmen, was hier gefragt wird.
Was ist also die Antwort auf diese Frage?
Um diese Frage zu beantworten, braucht man eigentlich ein grundlegendes Coding-Wissen, über das heute jeder verfügen sollte. Die obige Frage, geschrieben in der Programmiersprache C, fragt uns eigentlich nach einer mathematischen Situation. Lassen Sie uns zuerst den Code Zeile für Zeile erklären, damit diejenigen, die sich nicht mit Codieren auskennen, die Frage verstehen können.
Was bedeutet main() {…}?:
Diese Struktur, die unseren gesamten Code abdeckt, sagt uns eigentlich, dass dieser Code stellt eine Funktion dar zeigt. Funktionen, die die Bausteine eines Programms darstellen, sind Codes, die zusammengestellt werden, um eine bestimmte Aufgabe zu erledigen. Variablen und Operationen werden innerhalb der Funktionen definiert, und wenn diese Funktion ausgeführt wird, entsteht ein Ergebnis. Es ist eigentlich eine Funktion, die in alle Programme eingebaut ist, mit dem Code, den ein Programm zum ersten Mal ausführt, wenn es ausgeführt wird.
Ganzzahl a = 0;
Wir haben gesagt, dass wir innerhalb jeder Funktion Variablen definieren. Diese Codezeile definiert auch eine Variable für uns. Der ‚int‘-Ausdruck hier, ganzzahlige Werte stellt den Datentyp dar. Zunächst einmal, nachdem wir den Datentyp unserer Variablen im Code angegeben haben, this Wir geben unserer Variablen einen Namen . Dann präsentieren wir dem Programm den Wert unserer Variablen, also sagen wir, nimm a als 0.
for (int b = 55; b > 0; a++, b = b – a);
Die Antwort auf die Frage kommt tatsächlich in dieser Zeile heraus. In dieser Zeile verwenden wir die „for(…;…;…)“-Schleife. Dank dieser Schleife, die einer der grundlegendsten Bausteine der Programmierung ist. Anstatt sich wiederholende Transaktionen Zeile für Zeile zu schreiben, können wir sie in einer einzigen Zeile schreiben. Ohne diese Schleife könnten wir wiederholende Operationen tausende von Zeilen untereinander schreiben. Wenn wir zum Beispiel Zahlen von 1 bis 1000 auf einem Bildschirm ausgeben wollten, würden wir normalerweise jede dieser Zahlen in jeder Zeile wiederholen, wie „Schreibe 1, schreibe 2, schreibe 3, schreibe 4, schreibe 5 …“.
Die for-Schleife ist in Klammern eingeschlossen und durch Semikolons getrennt. Es fragt nach drei verschiedenen Situationen.In der ersten davon, unserer Ursprünglicher Wertwir definieren, dann für die Fortsetzung der Schleife erforderliche Bedingungwir sagen und schließlich was in jeder Schleife zu tun ist wir erzählen. Die Schreibreihenfolge dieser drei Fälle ändert sich sicherlich nicht. Lassen Sie uns diese drei Situationen in der obigen Frage erläutern.
-
int b = 55
Hier geben wir wie oben eine Variable vom Typ Integer an und geben den Namen dieser Variablen als „b“ und ihren Wert als 55 ein.
-
b > 0
Auch hier nennen wir unsere Schleife setze diese Schleife fort, solange ‚b‘ größer als 0 ist. „Nun, wir haben gerade b bis 55 gesagt, wird dieser Zyklus nicht ewig so weitergehen?“ Sie sagen vielleicht. Aber in der nächsten Operation werden wir den Wert von b in jeder Iteration ändern.
-
a++, b = b – a
Wir kamen an den Ort, wo die Zurna zırt ruft. Diese Zeile zeigt, wie wichtig Satzzeichen beim Codieren sind. Wir haben gerade gesagt, dass die for-Schleife drei Zustände benötigt. Aber hier sehen wir zwei Anweisungen mit einem Komma dazwischen. Hier stammt dieses Komma eigentlich aus der for-Schleife zeigt, dass wir wollen, dass es zwei Operationen ausführt.Mit dem Komma können wir die Anzahl der Transaktionen erhöhen, die wir im dritten Fall angeben und die wir ausführen möchten.
In unserer ersten Operation (a++) sagen wir dem Programm that Inkrementiere ‚a‘ um 1 pro Schleife. Auf diese Weise wird ‚a‘, das in der ersten Schleife 0 ist, als 1 bewertet, dann als 2, 3, 4, 5 … (Tatsächlich werden wir das Schreiben von Tausenden von Codezeilen los). Aber bevor wir mit dieser Bewertung fortfahren, wollen wir noch etwas aus dem Programm: b = b – a.
Wenn das, was wir von dem Programm wollen, in dieser Erklärung steht Nehmen Sie ‚b‘ mit jeder Schleife, subtrahieren Sie ‚a‘ von ‚b‘ und weisen Sie ‚b‘ die neue Nummer zu. Ändern Sie also den Wert von ‚b‘ in ‚b-a‘. Wenn wir dies in Bezug auf den Moment ausdrücken, in dem unser Zyklus beginnt, wird der Prozess wie folgt aussehen:
- b = 55 (b) – 0 (a)
- b = 55
Diese Schleife wird fortgesetzt, bis die letzte Variable ‚b‘ als Ergebnis der Operationen 0 wird. In jedem neuen Zyklus behandelt die Variable ‚b‘, die in der vorherigen Schleife gesetzt wurde.In der ersten Schleife ist also b = 55, während in der zweiten Schleife b = 54 ist.
printf(“%d”, a)
In dieser Befehlszeile weisen wir das Programm an, eine Anweisung an die Konsole zu schreiben, indem wir die Funktion „printf“ verwenden. Dieser Ausdruck mit ‚%d‘ ist eine ganze Zahl und diese ganze Zahl ist ‚a‘ Diese Befehlszeile funktioniert nur, wenn die obige Schleife endet, indem sie die Werte verarbeitet, die sich aus der Schleife ergeben. Solange also ‚b‘ nicht 0 erreicht, wird das Programm nichts drucken.
Wir haben den Code erklärt, es ist Zeit für die Lösung:
Kommen wir nun zur Lösung. deine Schleife die Aktion, die es in jedem Zyklus ausführen wird, und seine Ergebnissees wird so sein:
- b = 55 – 0 => b = 55, erhöhe a um 1.
- b = 55 – 1 => b = 54, erhöhe a um 1.
- b = 54 – 2 => b = 52, (a nimmt stetig zu)
- b = 52 – 3 => b = 49,
- b = 49 – 4 => b = 45….
Die Antwort auf die Frage, die letzte Antwort, die die Schleife gibt, und die letzte Zahl, bei der sie die Schleife stoppt, werden angezeigt, wenn b auf 0 gesetzt ist. Was braucht es also, um das ‚b‘ am Ende der Schleife zurückzusetzen? Natürlich ist es gleich der Zahl ‚a‘. In diesem Fall aber es passiert, wenn a 10 erreicht:
- b = 19 – 9 => b = 10
- b = 10 – 10 => b = 0
Unsere Schleife endet jetzt hier, weil wir Stop gesagt haben, wenn ‚b‘ 0 ist. Der neue Wert von ‚b‘ im Schleifenergebnis ist 0, Der neue Wert von ‚a‘ ist als 10 definiert.Das Programm geht nun zur nächsten Codezeile ‚printf()‘, wo es uns den Wert ‚a‘ schreibt:
- Antwort: 10.
Natürlich ist es nicht notwendig, die Schritte des Programms zu durchlaufen, um all dies zu tun. Hier kommen Mathematik und die Fähigkeit, das zu vermitteln, was Sie verstehen, ins Spiel. Dieser Code Würde es in einer Matheklausur gefragt, sähe es tatsächlich so aus:
- Fortlaufende Zahlen, die bei 1 beginnen, ergeben 55, wenn Sie die letzte Zahl in die Gesamtzahl einbeziehen?
Die mathematische Antwort auf diese Frage lautet von n(n+1)/2 = 55 Lösung wäre. Hier war der einzige Wert, der die Gleichung erfüllte, 10.
Hier waren die Antworten auf die Frage:
- Ein Benutzer von Ekşi Sözlük erklärt die Bedeutung des Problems tatsächlich sehr gut wie folgt: