Hallo und willkommen zurück.
In dieser Vorlesung möchte ich gehen
durch eine Lösungsdemonstration unserer bisherigen Herausforderung, die
war es, einige Funktionen zu erstellen, hauptsächlich die GCD-Funktion und a Kopplungsfunktion,
Absolutwertfunktion und Quadratwurzelfunktion.
Ich werde ein Projekt erstellen und Ich
werde wahrscheinlich nur die Projektfunktionen benennen, ich werde um mein bestehendes Projekt hier zu schließen.
Ich werde ein anderer sein Konsolenanwendung.
Wir haben nicht wirklich bekommen in Bibliotheken oder jede Art von
grafischer Programmierung.
Das wird so sein über nur einige Funktionen.
Normalerweise möchten Sie eine haben guter Name dort, aber dies
ist nur zu Lernzwecken.
Wir sind also irgendwie gerecht Bereitstellung allgemeiner Funktionen.
Wenn es ein GCD-Programm wäre, würde ich schreibe den größten gemeinsamen Teiler.
Aber als erstes werden wir tun werden wir unser
größtes gemeinsames Divisor-Programm implementieren?
Dies wird eine Funktion sein, die findet den größten gemeinsamen Teiler zwischen zwei
nicht negativen ganzen Zahlen Werte und gibt dann die Ergebnisse zurück.
Wir sollten Funktion bereitstellen Prototypen auch, damit wir sie nennen
und platzieren können sie überall in der Funktion.
Also lass uns das machen.
Für die erste Funktion ist dies ist eine Funktionsdeklaration.
Warum machen wir eine Funktion Deklaration,
damit wir sie überall im Programm aufrufen können.
Das müssen wir eigentlich nicht Implementieren Sie
diese Funktion über der Hauptfunktion, wenn wir sie aufrufen.
Und es ist einfach eine gute Übung Es ist sehr einfach, klar
zu sehen, was mit all dem im Programm vor sich geht Funktionsdeklarationen oben.
Dies wird ein int zurückgeben.
Denken Sie also daran, den ersten Funktionsheader zu verwenden Sie geben lediglich den Datentyp an, der
zurückgegeben werden soll.
GCD wird ein int zurückgeben.
Es wird dann Name die Funktion, die GCD ist.
Und dann sind in den Klammern Daten, die an die GCD übergeben werden.
Und das wird auch int sein.
Wir werden zwei Datenelemente übergeben.
Also trennen wir diese durch Kommas.
Wir geben den Datentyp für an jeweils und der Variablenname.
Ich werde nur in u und v sagen.
Und dann habe ich das Semikolon dazu Beenden Sie die Definition der Funktion.
Jetzt kann ich meine Funktion unten definieren Der Main und ich können es immer noch
aufrufen und keine Probleme bekommen.
Also jetzt, wenn du es wirklich willst Definieren
Sie die Funktion. Implementieren Sie sie. Sie führen dieselbe Funktion aus Header int Rückgabewert GCD.
Es muss mit dem übereinstimmen Erklärung in Bezug auf Typen.
Sie könnten es etwas anderes nennen wie int x für die Namen, aber wir
werden konsistent sein.
Wir werden nur int v sagen.
Wir wissen, dass es die Funktion ist Definition, weil es Klammern
gibt, die den Körper definieren.
Dies ist der Implementierungscode.
Der eigentliche Algorithmus für Die GCD ist recht einfach.
Sie müssen lediglich eine Schleife schreiben und gehen Sie durch die Schleife und sehen Sie sich die
Temperaturwerte basierend auf den Resten an.
Also werde ich ein lokales erstellen Variable in meiner GCD-Funktion.
Woher wissen wir, dass es lokal ist, weil Es befindet sich in den Klammern für 12 bis 14.
Auf diese Variable kann nicht zugegriffen werden innerhalb der Hauptfunktion.
Es ist nur lokal für diesen Block.
Hier gehe ich einfach hin Rufen Sie temp an, da es lokal ist.
Ich werde jetzt auch meine Schleife erstellen.
Ich werde eine while-Schleife verwenden.
Und meine while-Schleife geht gerade bis v gehen, was unser größter
gemeinsamer Teiler wäre.
Denken Sie daran, die größte gemeinsame Divisor nimmt zwei Parameter.
Es würde einen Parameter benötigen.
Und basierend auf diesen beiden Parametern, Es muss ein Algorithmus erstellt werden, um den
größten gemeinsamen Teiler zu finden.
Also, wenn wir versuchen zu finden Als
Teiler müssen wir sicherstellen, dass v nicht gleich ist Null, unser zweiter Parameter.
Dies ist nur Standard Teile des Algorithmus.
Während das v nicht gleich ist auf Null setzen wir
Klammern für die Schleife.
Was wir tun werden, ist, dass wir es tun
Weisen Sie zuerst die Temperatur dem Modulwert von u mod v zu.
Wir werden dich dann setzen gleich v, und wir werden
v gleich temp setzen.
Und dann wollen wir zurückkehren Daten aus dieser Funktion.
Wie geben wir also Daten von zurück? eine Funktion? Wir verwenden das Schlüsselwort
return und geben nur das zurück Daten, die wir zurückgeben möchten.
In diesem Fall möchten wir u zurückgeben.
Denken Sie jetzt daran, wenn diese Funktion keine Daten zurückgegeben, müssten wir
den Typ in void ändern.
Und dann könnten wir einfach eine Rückgabe ohne Daten haben.
Dies gibt jedoch Daten zurück.
Also müssen wir zusammenpassen.
Und hier würden wir sag wieder zurück u.
Auch wenn wir keine Daten weitergaben Für diese Funktion könnten
wir void als Parameter setzen oder wir könnten Halten Sie sie leer und das
würde bedeuten, dass die Funktion keine Daten nimmt, aber wir übergeben zwei Variablen.
Und diese Variablen u und v sind lokale Variablen zur GCD-Funktion.
Wir können sie innerhalb der Funktion verwenden.
Und genau das machen wir.
Dies sind alles Merkmale einer Funktion.
Der Rückgabewert, die Daten, die Sie übergeben lokale Variablen
und geben dann Daten zurück.
All diese Dinge achten in die Syntax mit den Klammern und dann auch
mit der Deklaration oben.
Jetzt wollen wir es versuchen Testen Sie diese Funktion.
Also wollen wir es für alle testen verschiedene Dinge.
Lassen Sie uns weitermachen und uns daran erinnern Die Funktion gibt Daten zurück, daher möchten wir wahrscheinlich
eine lokale Variable in erstellen Unser Haupt, wir nennen es einfach Ergebnis.
Wir können es auf Null initialisieren.
Und dann wollen wir Rufen Sie im Grunde die Funktion auf.
Wie rufen wir eine Funktion auf?
Wir geben nur die Funktion an Name gefolgt von den Daten, die an
ihn übergeben werden.
Weil diese Funktion zurückkehrt Daten, ich werde sagen, Ergebnis ist
gleich und dann der Funktionsname.
Der Funktionsname lautet GCD.
Und ich werde es 150 bestehen für meinen ersten Test und 35.
Ich werde zwei weitere Tests machen um nur verschiedene Zahlen zu übergeben, aber was ich tun
möchte, ist, dass ich will um die Daten auszudrucken, die
das Ergebnis zurückgeben.
Also werde ich printf sagen, und das bin ich Ich werde sagen, der GCD von 150 und 35 ist
ein prozentualer Zeilenvorschub und ergibt sich dann.
Richtig. Zeile 10 ist also wichtig.
Wir erhalten also Daten von GCD zurück Wir weisen es einer Variablen zu.
Und wir können die Funktionsübergabe aufrufen in zwei Konstanten hier 150 und 35.
Wir könnten auch Variablen übergeben.
Die Art und Weise, wie wir die Funktion aufrufen Wenn die übergebenen
Daten in Klammern stehen, setzen wir die Werte durch Kommas getrennt und dann steht
dort das Semikolon am Ende.
Ich möchte mehrere Tests durchführen.
Also werde ich die Zeilen 10 und kopieren 11 und geben Sie einfach einige andere Daten ein.
Ich werde 1026 setzen und 405 und dann auch 83.
Und tatsächlich könnten wir tun Anstatt die Variable zurückzugeben, könnten wir sie
auch einfach so setzen Rufen Sie die Funktion im printf
auf und drucken Sie sie direkt dort aus. wir müssen es nicht einmal speichern.
Wir könnten also einfach GCD 83, 240 sagen.
Wir müssten was ändern
Wir drucken hier beispielsweise in Form der fest codierten Werte aus 1026, 405 und dann auch 240 und 83.
Also lasst uns fortfahren und das kompilieren.
Lassen Sie uns sicherstellen, dass wir bekommen Keine Fehler oder Warnungen.
Wir haben keine Fehler und Warnungen.
Also lass es uns laufen.
Wenn wir es ausführen, sollten wir sehen der größte gemeinsame
Teiler dreimal für bestimmte Zahlen.
Wir sehen also, dass die GCD von 150 und 35 5 ist.
Die GCD von 1026 und 405 beträgt 27.
Und die GCD von 83 und 240 ist 1.
Größter gemeinsamer Teiler bedeutet das Faktoren, die in diese beiden Zahlen eingehen,
was ist der höchste Faktor.
Also 5 geht in 35, und 5 geht in 150.
Und das ist der höchste.
27 geht auch in 405 und 1026, das ist der höchste zwischen den beiden.
Es sieht also so aus, als würde es funktionieren.
Und wir haben die Grundlagen von behandelt Daten übergeben und Daten zurückgeben.
Jetzt wollen wir ein paar üben andere Dinge in Bezug
auf nur Algorithmen und Problemlösung.
Lassen Sie uns eine andere Funktion erstellen absoluter Wert genannt.
Die Absolutwertfunktion geht einen Schwimmer zurückgeben und einen Schwimmer nehmen.
Es wird ein sehr einfache Funktion.
Also werden wir erklären die Funktion in Zeile fünf.
Wir werden Float Absolue sagen Wert, das ist ein Name, gefolgt von den Parametern, und wir sind
gerecht werde float x sagen, und dann werden
wir ein Semikolon beenden.
Beachten Sie auch hier die Funktion Deklaration, der Rückgabewert,
den die Parameter mit Datentypen angeben und dann den Namen der Funktion.
Wir können dann weitermachen und definieren Diese Funktion liegt unterhalb
der GCD-Funktion und wird sehr einfach sein.
Wir definieren die Funktion mit dem Typ Das wird zurückgegeben, der Name
und dann der Parameter, genau wie der Deklaration, außer dass wir jetzt Klammern haben,
um den Codeblock zu starten.
Das ist einfach, weil wir nur etwas tun müssen Überprüfen Sie den übergebenen Parameter
und prüfen Sie, ob er kleiner als Null ist.
Wenn es kleiner als Null ist, dann Wir werden ihm nur die
Umkehrung zuweisen, die ein Minus x wäre.
Wenn es also ein Minuswert ist, es wird mit einem
Minus multiplizieren und ein positives Ergebnis erzielen.
Und wir möchten diese Daten zurückgeben.
Also sagen wir return x.
Nun eine Sache, die ich in der erwähnt
habe Vorträge, für die ich kein Beispiel geben konnte, waren was wenn Sie alle Daten zurückgeben.
Weil wir ein paar haben könnten if-Anweisungen, und wir könnten in jeder
if-Anweisung zurückkehren.
Und so kann Ihre Funktion, in Theorie, haben viele return-Anweisungen, wenn sie in
ifs oder Schleifen sind.
Und dann könntest du habe einen unten.
Das Problem dabei ist es ist wirklich schwer zu folgen.
Wenn Sie anders zurückgeben müssen Teile Ihres Codes speichern im Grunde nur die Daten
in einer Variablen und geben Sie es unten zurück.
Aber hier ist dies eine einfache Funktion.
Wir geben nur einen Wert zurück.
Lassen Sie uns fortfahren und versuchen, zu verwenden Diese Funktion und es ist wirklich schön, dass es
Floats braucht, damit wir es können Verwenden Sie es mit ganzen Zahlen und Gleitkommazahlen.
Also werde ich schaffen ein paar Variablen hier, die
wir übergeben werden.
Und ich gehe auch um eine ganze Zahl zu erstellen.
Ich werde das machen an der Spitze meiner Hauptleitung.
Ich werde schaffen ein Schwimmer für F1 F2 F3.
Und ich werde eine ganze Zahl I1 erstellen.
Und ich werde einen anderen erschaffen Variable, die das Ergebnis speichert, aber ein
Float sein muss.
Also muss ich
schaffen eine andere Variable und
dies wird nur das Absolutwertergebnis sagen, und ich werde das auf
0 initialisieren. 0.
Jetzt werde ich das aufrufen Funktionieren und drucken Sie die Ergebnisse aus.
Also werde ich kopieren und Fügen Sie hier Code ein.
Ich kann die Funktion aufrufen und speichern Die zurückgegebenen Daten oder ich kann sie
einfach an die Funktion printf übergeben.
Ich möchte hier wahrscheinlich einige Kommentare abgeben,
um die Absolutwertfunktion zu testen.
Und wenn Sie die Sternchen auf einem einzigen verwenden Linie, es hebt es ein bisschen hervor.
Also habe ich hier nur ein paar Anrufe ins Absolute eingefügt Wertfunktion und zeigte dann einige Ergebnisse an.
Also rufe ich hier in 24 an Absolutwert mit f1.
Denken Sie daran, f1 ist ein Float.
Es ist gleich negativ 15. 5.
Ich werde das formatieren Ergebnis und drucken Sie es aus.
Und dann bin ich auch werde f1 ausdrucken.
Also werden wir sehen, ob die Das Ergebnis ändert
sich durch Aufrufen der Funktion als das Original.
Also werde ich ausdrucken Das Ergebnis des Aufrufs der Funktion ist
dann der ursprüngliche Wert.
Dies wird uns sagen, ob es hat sich überhaupt geändert.
Wenn es ursprünglich negativ war und zu positiv geändert.
Das auf mehreren machen Zeilen für mehrere Tests.
Und dann in Zeile 37 die einzige Der
Unterschied besteht darin, dass anstatt den Wert in einer Variablen zu speichern, Ich werde es einfach ausdrucken.
Also muss ich die Ergebnisse ändern hier zur rechten Variablen.
Also lass uns das machen und.
Also hier unten möchte ich das tun.
Als ich das ursprünglich schrieb Programm schrieb ich sie als separate.
Hoffentlich mache ich hier keine Fehler.
Und ändern Sie alle, die ich brauche zu ändern und das sollte es tun.
Die anderen sind es eigentlich nicht Drucken der Ergebnisse
aller Variablen, nur der in Zeile 26.
Ansonsten sind wir einfach zeigt die Ergebnisse.
Der erste zeigt nur das es, dass es sich geändert hat,
weil f1 ein negativer Wert ist.
Nun, lass uns das bauen.
Wir haben keine Fehler oder Warnungen.
Die Ausgabe, die wir wollen Achten Sie darauf, dass nur
der absolute Wert ausgegeben wird.
Also könnte es besser sein Fügen Sie tatsächlich einige Zeilenvorschübe hinzu.
Nachdem wir unseren letzten angezeigt haben, Fügen wir ein paar Zeilenvorschübe hinzu.
Einfacher zu lesen und auszuführen.
Jetzt sehen wir also, dass das Ergebnis 15 ist. 5.
Also hat es es tatsächlich geändert von negativ zu positiv, weil
f1 ursprünglich 15 war. 5.
Und all die anderen Ergebnisse sind auch positive Werte.
Die letzte Druckanweisung wurde nicht gedruckt Als Ergebnis wurde nur der
von der Funktion zurückgegebene Wert gedruckt.
Sieht so aus, als würde es funktionieren.
Die letzte Funktion, die ich wollte define war eine Quadratwurzelfunktion.
Dies wäre eine Funktion, die berechnet die Quadratwurzel einer Zahl.
Und wenn ein negatives Argument ist bestanden, wird eine Meldung angezeigt
und die negative 1 zurückgegeben.
Definieren wir also die Deklaration von Diese Funktion fungiert als Float-Quadratwurzel
und benötigt einen Float mit einem beliebigen Namen.
Und Quadratwurzel geht tatsächlich um die Absolutwertfunktion zu verwenden.
Also können wir es oben definieren es und verwenden Sie es immer
noch wegen der Funktionsdeklaration.
Also definieren wir es, und es braucht einen Schwimmer.
Wir werden also ziemlich praktisch Definieren dieser Funktionen,
Datentyp für Rückgabeparameter, Klammern.
Wir werden ein Paar schaffen lokale Variablen hier.
Dies kann nur sein Zugriff innerhalb des Blocks.
Das wird nur helfen mit unserem Quadratwurzel-Algorithmus.
Sie werden hier in den Zeilen 59 bemerken, Ich habe eine konstante Variable erstellt.
Darüber haben wir nicht gesprochen, Dies ist jedoch nur eine Möglichkeit, eine
Konstante zu erstellen, anstatt eine Definition zu verwenden.
Wir haben eine Float-Variable mit dem Namen erstellt Epsilon, es ist. 001 hilft es bei unserer
Quadratwurzelberechnung zu machen sicher, dass es in einem bestimmten Bereich liegt.
Wir haben eine Vermutung, die 1 ist. 1 und eine Absolutwertdeklaration hier.
Wir müssen eigentlich nicht liefern die Erklärung, weil wir sie oben definiert
haben, damit ich sie loswerden kann.
Denken Sie jetzt daran, dass wir müssen Überprüfen Sie die Parameter, wir
möchten die Parameterüberprüfung durchführen.
Wenn der Parameter kleiner als
Null ist, Wir möchten einen Kommentar ausdrucken und einen negativen Wert zurückgeben.
Wenn also x kleiner als Null ist, drucken Sie Geben Sie ein negatives Argument für die Quadratwurzel aus
und geben Sie ein negatives zurück.
Hier werden wir haben Mehrere Rückgabewerte, und
ich zeige Ihnen, wie Sie einmal zurückgeben können und legen Sie es einfach unten.
Ansonsten haben wir unsere Algorithmus für Quadratwurzel.
Ich werde das nicht erklären Algorithmus, weil es nicht relevant für das
ist, was wir lernen.
Aber im Grunde, um den Platz zu finden Wurzel einer Zahl erhalten wir den
absoluten Wert davon durch Multiplikation es und dann minus im x.
Die Vermutung ist also, dass wir raten werden.
Also werden wir ursprünglich raten und Überprüfen Sie dann, ob dies
der Algorithmus ist, und prüfen Sie, ob er innerhalb eines bestimmten Bereichs liegt.
Und wenn ja, dann gehen wir unsere Vermutung auf etwas zu setzen und es durch zwei zu
teilen und das geht die Vermutung zu sein, dass wir zurückkehren.
Ganz unten also wir würde sagen, raten Sie zurück.
Und so benutzen wir die Absolutwertfunktion.
Es ist unter uns definiert, aber Wir haben unsere Erklärung oben,
also ist das gut.
Eine Sache hier ist, dass wir haben mehrere return-Anweisungen.
Dies ist völlig legal, sollte es aber sein vermieden werden, weil es schwieriger
ist herauszufinden, was los ist.
Also würde ich hier tun, was ich tun würde wahrscheinlich speichern Sie dieses negative in einer
anderen Variablen als raten, aber Mal sehen, wie wir das machen können.
Also würde ich raten wird auf 1 initialisiert. 0, und wir geben eine
negative zurück.
Ich würde wahrscheinlich nur eine andere erstellen Variable namens float Rückgabewert.
Wir können dies auf 0 setzen. 0.
Und dann, bevor Sie es hierher
zurückbringen weil dies aus der mathematischen Funktion herausspringt, kann ich nur sagen Rückgabewert
gleich negativ 1. 0 statt die Rückgabe zu haben.
Dann kann ich nachsehen und ich kann sagen wenn der Rückgabewert nicht gleich einer
negativen 1 ist. 0 weil ich nicht möchte
dies ausführen, wenn ich bereits meine ungültige Nummer habe, ungültige Nummer, und ich könnte dies in eine
if-Anweisung einschließen.
Und dann in der while-Anweisung: Ich kann sagen, dass der Rückgabewert gleich der Vermutung ist.
Auf diese Weise gebe ich das richtige zurück was wäre, wenn es ein gültiger Eintrag wäre.
Und dann anstatt zurückzukehren Ich schätze, ich gebe
den Rückgabewert zurück.
Und dieser Code ist etwas sauberer weil es
unten nur einmal zurückkehrt und es einfacher ist zu folgen.
Der Rückgabewert ist also entweder negativ eine, wenn es sich um ein ungültiges Argument handelt oder es
sich um das tatsächliche Quadrat handelt root, wenn es kein ungültiges Argument ist.
Und wir könnten auch machen Dies ist einfach, indem der Rückgabewert nicht einmal
überprüft wird hier wäre es wohl einfacher einfach
etwas anderes zu sagen und das zu machen sonst Teil des Originals wenn.
Also, wenn es eine positive Zahl ist, dass würde es sogar sauberer machen, so
dass Sie diese if-Anweisung nicht haben.
Jetzt müssen wir es testen.
Lassen Sie uns fortfahren und dies testen.
Wir rufen einfach an Funktioniere ein paar Mal.
Wir werden sagen, Quadratwurzel testen.
Ich werde keine machen Lust hier zu drucken.
Ich werde nur sicherstellen, dass ich kann eine Reihe von Zeilenvorschüben hinzufügen,
damit das Lesen einfacher ist.
Klicken Sie dort auf die Schaltfläche Einfügen.
Alles klar. Also mache ich jetzt nur ein paar
printfs, wo ich einige gute und wertvolle Daten und einige Inval-Daten einsenden werde und ich werde es genauso formatieren.
Sagen wir einfach den ersten Anruf wird die Quadratwurzel dessen sein, was einige gute gültige
Quadratwurzeln sind.
Nun, zuerst werden wir überprüfen es mit einer negativen Zahl.
Also sagen wir einfach negativ 3 das sollte einen Fehler ausdrucken.
Ansonsten werden wir es testen mit einigen gültigen Nummern.
Also sagen wir die Quadratwurzel von 16, und wir werden nur ein int übergeben, sie werden konvertiert,
ich könnte einige Warnungen bekommen.
Nun, ich will keine bekommen Warnungen, und wir werden 165 tun.
Lassen Sie uns dies jetzt ausführen und testen.
Lassen Sie uns hoffentlich kompilieren.
Ich habe einen Rechtschreibfehler mit float.
Nun, wenn ich es laufen lasse, hoffentlich Wir werden eine gute Quadratwurzelausgabe erhalten.
Hier haben wir also einen negativen.
Und wir haben tatsächlich Negativ ausgedruckt Argument punktet, das ist also gut.
Und dann sind die anderen ich glaube, die richtigen Quadratwurzeln.
So sieht es aus wie die Funktion funktioniert ziemlich gut.
Wir haben die Quadratwurzel von 16 gemacht Das ist 4, 25, das ist 5, 9, das ist
3, 165 ist 12. 85.
Also habe ich mich dort verrechnet.
Ich habe versucht daran zu denken 15 mal 15, das ist 225.
Wenn ich also 225 hier reinstelle, würde es Komm zurück als 15 als Quadratwurzel.
Ich werde diesen Quellcode bereitstellen
für Sie, damit Sie es analysieren können, aber Funktionsdeklarationen verstehen,
verstehen, wie man eine Funktion mit dem Rückgabetyp und
dem definiert Parameter, die Daten übergeben, lokale Variablen verstehen, verstehen, wie unten nur einmal zurückkehren.
Der Algorithmus selbst ist nicht so wichtig.
Ich hoffe das hat geholfen. Vielen Dank.