Hallo und herzlich willkommen.
Wir beginnen einen neuen Abschnitt.
Unser Abschnitt basiert auf Funktionen.
Also werden wir über einige reden der Grundlagen der Funktionen zuerst.
Eine Funktion ist in sich geschlossen Einheit des
Programmcodes, der zur Erfüllung einer bestimmten Aufgabe entwickelt wurde, Das ist eine High-Level-Definition.
Funktion wird im Grunde sein Etwas, das Sie aufrufen können, um
die Doppelung von Code zu reduzieren.
Aber was es tut, ist es im
Code selbst in sich geschlossen, und es hat nur einige Aufgaben dass es erreichen wird.
Syntaxregeln werden Definieren Sie die Struktur einer Funktion und
wie sie verwendet werden kann.
Also je nach welcher Programmierung In der von Ihnen verwendeten Sprache
können Funktionen unterschiedlich definiert sein.
Für c werden wir reden über spezifische Regeln für c.
Die meisten Programmiersprachen unterstützen dieses Konzept einer Funktion, und ich werde Ihnen die Vorteile
erläutern und warum sie unterstützt werden.
Eine Funktion in c ist dieselbe wie Unterprogramme oder Prozeduren
in anderen Programmiersprachen.
So oft hört man diese Begriffe Unterprogramme und Prozeduren, das Gleiche
wie eine Funktion.
In sich geschlossene Einheit, die ausgeführt wird einen Code, den Sie aufrufen können.
Einige Funktionen verursachen eine Aktion stattfinden.
Wir kennen also ein Paar funktioniert bis zu diesem Punkt.
Wir haben den Druck studiert Funktion, die die Ausgabe
auf Ihrem Bildschirm anzeigt, die eine Aktion, tut etwas für Sie.
Und dann haben wir uns auch das Ergebnis angesehen bei der scanf-Funktion, die
Eingaben von der Tastatur entgegennimmt.
Wieder macht es eine andere Aktion.
Andere Funktionen kann eigentlich nur einen Wert für ein
Programm finden, um zu verwenden.
Also zum Beispiel, wenn wir Strings studieren und Zeichenarrays werden wir uns
Funktionen für Zeichenfolgen ansehen Manipulation und Veränderung von Dingen.
Es gibt insbesondere eine Funktion Rührlänge genannt und das wird einem Programmierer
sagen, wie lang ist eine bestimmte Zeichenfolge.
Es führt keine Aktion aus gibt Ihnen nur Informationen zurück.
Funktionen werden also ausgeführt Aufgaben abhängig von der Aufgabe, was Sie in Ihrem
erledigen müssen Programm, es wird entweder eine
Aktion auslösen oder es wird eine ändern Programmieren Sie einen Wert oder geben Sie einen Wert zurück oder teilen Sie
Ihnen einige Statusinformationen mit.
Vorteile von Funktionen.
Wir werden Funktionen verwenden weil haben eine Menge Vorteile.
Funktionen ermöglichen die Strategie teilen und erobern.
Also, wenn Sie aufschreiben und Gehen Sie und schreiben Sie ein mittelgroßes
Programm oder ein großes Programm, es wird sei wirklich sehr, sehr schwer zu pflegen.
Es wird schwer zu testen sein, Debuggen und suchen und beheben Sie alle Fehler, wenn Sie eine
einzige große Funktion haben.
Also zusammenbrechen und das tun Das Teilen der Eroberungsstrategie
wird es viel einfacher machen Finden und beheben Sie Fehler in Ihrem Code.
Und können Sie sich ein einzelnes c-Programm vorstellen? Alles, was ich hatte, war die Hauptfunktion und
es waren 5000 Zeilen darin.
Wir hätten keine Ahnung wie um dieses Problem anzugreifen.
Es ist wirklich sehr, sehr schlechte Organisation.
Du hast keinen Zusammenhalt und Du tauchst einfach da rein, um zu versuchen,
ein Problem zu lösen.
Also werden wir Funktionen verwenden.
Teilen und Erobern bedeutet im Grunde Diese Aufgaben können in mehrere unabhängige
Unteraufgaben unterteilt werden.
Es reduziert die Gesamtmenge Komplexität des Codes.
Sie können separate Funktionen erstellen Für jede Unteraufgabe können Sie
sogar weitere Funktionen zum Teilen erstellen die Unteraufgabe in kleinere Unteraufgaben.
Jedes Mal, wenn Sie diese zusätzlichen erstellen Funktionen reduziert es die Komplexität.
Ihr Ziel sollte sein, wenn Sie sind Erstellen dieser
Funktionen und Verwenden der Teilung und Eroberung Strategie ist es, Ihre Funktionen
so zusammenhängend wie möglich zu gestalten.
Und das bedeutet, stellen Sie sicher Jede Funktion erledigt nur eine Aufgabe, keine Funktion erledigt
5 verschiedene Aufgaben oder 10 verschiedene Aufgaben.
Wenn Sie eine Funktion schreiben, die liest Eingabe von der Tastatur,
lassen Sie es Eingabe von der Tastatur lesen, nicht Lassen Sie es einen String oder
eine Anzeigeausgabe oder ähnliches überprüfen.
Funktionen müssen klein sein und Sie müssen sehr zusammenhängend sein.
Aber die Teilung und Eroberung Strategie ist wirklich schön, weil
sie diese Komplexität reduziert.
Anstatt eine Hauptfunktion zu haben Mit 5000 Codezeilen können Sie viele,
viele Funktionen haben, die erledigen bestimmte Aufgaben und Sie können
sie sehr schnell identifizieren.
Also werden Funktionen Reduzieren Sie die Duplizierung von Code.
Und wenn Sie die Duplizierung reduzieren Wenn Sie Code schreiben, sparen
Sie Zeit beim Schreiben und Testen und Debuggen dieses Codes.
Es wird auch wieder reduziert die Größe des Quellcodes.
Und warum reduzieren sich Funktionen? Duplizieren von Code, denn wenn Sie
eine Aufgabe haben, anstatt dies zu tun Aufgabe immer und immer und immer wieder
und schreiben den gleichen Code immer und immer wieder und immer wieder kapseln
Sie diese Aufgabe in eine Funktion und Sie nur Rufen Sie die Funktion auf, und
die Funktion erledigt dies jedes Mal für Sie habe dort keine Vervielfältigung.
Wenn Sie eine bestimmte Aufgabe erledigen müssen mehrmals in
einem Programm müssen Sie nur ein entsprechendes schreiben Funktion einmal, genau
wie ich erwähnt habe. Das musst du nicht Schreiben Sie diesen Code mehrmals.
So kann dann ein Programm verwenden diese Funktion bei Bedarf.
Und Sie können das gleiche auch verwenden Funktion in verschiedenen Programmen, und das ist
es, was eine Bibliothek ausmacht.
Das haben wir gemacht, Wir haben
die printf-Funktion verwendet, die von der stammt Standardeingabe Ausgabe Bibliothek.
Und das ist nur einmal geschrieben, und wir rufen es immer und immer wieder auf.
Wenn diese Funktion nicht existieren würde, würden wir
müssen die Implementierung dieser Funktion übernehmen und in unsere aufnehmen programmieren und einfach weiter wiederholen.
Funktionen können also viel sparen Zeit und sie
können Ihren Quellcode reduzieren und Sie können Verwenden Sie sie immer und immer wieder.
Es ist also auch eine Software Wiederverwendungstechnik.
Es hilft auch bei der Lesbarkeit.
Wenn Sie Ihr Programm modulieren Das ist, was Sie
tun, wenn Sie diese separaten Funktionen erstellen Wenn Sie bestimmte Aufgaben ausführen, wird
das Programm viel besser organisiert.
Wie ich schon sagte, wenn Sie eine Hauptleitung hatten Routine, eine Hauptfunktion
und jede Menge Code, das wird es Es ist viel schwieriger
zu befolgen als eine Hauptroutine, die 5 Funktionen und aufruft Diese Funktionen erledigen bestimmte Aufgaben.
Es hilft also bei der Programmorganisation.
Es hilft bei der Programmpflege.
Es ist viel einfacher zu lesen und einfacher um einen Quellcode zu ändern oder zu reparieren.
Und denken Sie daran, die Wartung Phase ist die teuerste
Phase des Software-Lebenszyklus Hier beheben Sie Ihre Fehler,
das Programm wurde veröffentlicht und wo Sie neue Funktionen hinzufügen.
Je besser organisiert Ihre Programm ist, desto einfacher wird
es zu warten sein.
Also diese Organisation, das Lesbarkeit, dies kann verfolgen, was in
los ist Ihr Quellcode ist sehr wichtig und
Funktionen helfen einer Menge.
Der Divide and Conquer-Ansatz Außerdem können
Teile des Programms entwickelt und getestet werden und unabhängig debuggt.
Wenn du da draußen in der Realität bist Welt und du
fängst an, an Code zu arbeiten, das wirst du bemerken Programme sind wirklich sehr, sehr groß.
Und es gibt viele Leute Hunderte oder sogar
Tausende arbeiten an diesen Programmen.
Wenn all diese Leute arbeiten In einem Programm ist es viel einfacher, an
diesem Programm zu arbeiten, wenn Sie Machen Sie diesen Teilungs-Eroberungs-Ansatz, wenn Sie kleine
Aufgaben haben, die Menschen tun und es ist unabhängig.
Du berührst nicht dasselbe Quellcode und Sie können fortfahren
und Aufgaben viel einfacher implementieren.
Und wenn du das tust und du hast Wenn mehrere Personen
an einem Projekt arbeiten, kann dies die Gesamtentwicklung verringern Zeit, die
wiederum die Wartungskosten senkt, reduziert die Entwicklungskosten.
Die Funktionen können auch wiederverwendet werden was wiederum die Zeit verkürzt.
Und wieder machen wir das mit dem printf Funktion, verwenden Sie das wieder.
Aber Sie, wenn Sie Ihren eigenen Benutzer schreiben definierte Funktionen können Sie
im Programm immer wieder verwenden.
Die Wiederverwendung von Software ist also eine große Sache. großer Vorteil der Funktionen.
Wenn du denkst über diese Funktionen.
Das andere schöne am Entwerfen Ihr Programm für Funktionen ist, dass Sie es
als Black Box betrachten möchten.
Was es bedeutet, wenn Sie, wenn Sie Betrachten Sie es als eine Black Box. Alles,
woran Sie denken, ist die Eingabe auf die Funktion und den Ausgang.
Und wenn Sie sich nur auf das konzentrieren Eingabe in die Ausgabe, ermöglicht es Ihnen,
das Design als Ganzes zu betrachten bevor Sie mit der Implementierung beginnen.
Und so funktioniert im Allgemeinen Bringen Sie Sie in diese Art des Denkens, wo Sie
sich auf Design konzentrieren können.
Und ich erwähnte, dass Design wichtig ist.
Design ist, wenn Sie mit der Planung beginnen aus Ihrem Programm, wie
Sie es organisieren werden, wie Du wirst den Code schreiben.
Und es ist wichtig, diese Planung durchzuführen bevor Sie überhaupt mit der Implementierung beginnen, bei der
der Code geschrieben wird.
Und indem wir über Funktionen nachdenken und wenn Sie nur an
Ein- und Ausgänge denken, können Sie darüber nachdenken, wie die Das Programm wird organisiert und
welche Funktionen müssen erstellt werden.
Sie müssen sich also keine Sorgen machen nur Umsetzung im Detail.
Und das ist wichtig, weil die Bevor Sie
Code schreiben, müssen Sie zunächst nur nachdenken Über Design möchten Sie nicht über
die Implementierung nachdenken.
Viele Probleme, die Studenten haben, wenn sie zum ersten Mal Code schreiben,
sind sie Starten Sie einfach die Implementierung.
Sie denken nicht einmal an das Problem, sie denken nicht,
wie sie das Problem lösen werden, Sie fangen einfach an, Code zu schreiben.
Niemals ein guter Ansatz.
Wenn Sie über das Schreiben nachdenken Code und Funktionen, denken
Sie nur an Ein- und Ausgänge der Funktion und es wird Ihnen
bei Ihrem Design helfen.
Schauen wir uns also einige Beispiele an.
Wir haben eingebaute Funktionen wie z als printf und scanf, wie ich schon sagte.
Die sind im Standard Eingabe Ausgabe Bibliothek, die von der
Programmiersprache c bereitgestellt wird.
Wir kennen uns also etwas mit was aus Eine Funktion ist, weil wir sie verwendet
haben, aber wir haben die Geldstrafe nicht durchlaufen detaillierte Details darüber,
wie Sie eine Funktion definieren oder wie Sie sie tatsächlich übergeben Daten zu einer Funktion, nichts dergleichen.
Aber mit der printf-Funktion, Sie sollten bemerkt haben,
dass es Daten nimmt.
Sie können Daten an die Funktion übergeben.
Die Daten sind die Argumente zwischen den Klammern
nach dem Funktionsnamen.
Wir werden ein Ganzes haben andere Vorlesung über Argumente
und Parameter, um sie näher zu erläutern.
Aber auf hohem Niveau verstehe das Sie können Daten an eine Funktion übergeben.
Und verstehen Sie das, indem Sie schauen bei der printf-Funktion.
Das erste Argument zum printf Die Funktion, bei der es sich
um die Daten handelt, die wir an sie übergeben, war eine Zeichenfolge wörtlich, es war alles,
was all diese Zeichen in doppelten Anführungszeichen.
Und dann hatten wir auch Argumente welche Es hätte 0 oder viele geben können, es gab
variable Argumente, die es waren eine Reihe von Variablen oder Ausdrücken, deren
Werte angezeigt werden sollten.
Denken Sie also daran, ob wir ein Format hatten Spezifizierer im
ersten Argument hätten wir dann die Variablen in dies in den nachfolgenden Argumenten.
Konnten Sie also bestehen? Daten an die Funktion printf.
Sie sollten auch bemerkt haben, wie Sie kann Informationen von einer Funktion
zurückerhalten, Daten können an Sie zurückgegeben werden.
In der scanf-Funktion eine Zu den Argumenten gehörte, wie Sie die
Daten speichern wollten.
Und so würden Sie es a bestehen Variable und diese Variable hätte
einen beliebigen Wert Der Benutzer tippte die Tastatur ein.
Das kann man sich also vorstellen als Rückgabewert in einer Funktion.
Funktionen sind also sehr wertvoll, weil Sie können Daten in sich aufnehmen und
dann Daten aus ihnen zurückgeben.
Also ein Codierungsbeispiel einer Funktion und dies wäre nur eine Funktion, die wir
aufrufen werden, Dies ist jedoch die Hauptfunktion.
Wir sind mit dem vertraut Hauptfunktionen, der
Einstiegspunkt des Programms.
Aber schau dir an, wie schön das ist.
Wir rufen Funktionen auf Leseliste sortieren und durchschnittlich.
Wir haben nur 3 Codezeilen.
Wir müssen diese umsetzen funktioniert, aber es macht das Programm besser organisiert,
weil wir sofort wissen, was dieses Programm tut.
Dieses Programm wird lesen eine Liste, dann wird
eine Liste sortiert, dann wird Zeigen Sie den Durchschnitt der Liste an,
und die Liste enthält Floats.
Es ist also sehr gut lesbar sehr pflegeleicht sein.
Wenn wir irgendwelche Fehler in der haben Programm werden wir sofort wissen, wie
man diesen Fehler findet oder isoliert.
Wenn der Fehler nicht sortiert wird, wir kann zur Sortierfunktion gehen.
Wenn der Fehler in der Mittelwertbildung liegt, Wir können zur Durchschnittsfunktion gehen,
sehr einfach, Fehler zu isolieren.
Also, wenn wir diese implementieren Funktionen in der vorherigen Folie
haben wir sie nur aufgerufen.
Um Funktionen tatsächlich zu implementieren, Sie müssen den Code in den
Hauptteil der Funktion schreiben.
Sie können entweder Funktionen verwenden, die werden von der c-Sprache wie
printf implementiert oder Sie können erstellen Ihre eigenen benutzerdefinierten Funktionen.
Sie müssen das nicht implementieren printf-Funktionen oder eine der
Funktionen in der Bibliothek, Sie Implementieren Sie nur Ihre eigenen Funktionen.
Also in diesem vorherigen Beispiel mit die Leselistensortierung und den Durchschnitt, wir müssten
gehen und wir würden müssen diese Funktion implementieren.
Wir müssten eine Funktion bereitstellen Header, ein Funktionskörper, der tatsächlich
das Lesen von die Liste, die Sortierung der
Liste und die Mittelung der Liste.
Wir sind nicht nur durch Definieren fertig Funktionen müssen wir implementieren.
Und wenn Sie die implementieren Funktionen möchten
Sie immer beschreibende Funktionsnamen verwenden um deutlich zu machen, was das Programm tut
und wie es organisiert ist.
Im vorherigen Beispiel hatten wir eine Funktion namens Leseliste, ziemlich klar,
was das tut, Funktionsname sortieren.
Wir haben die Funktion x y oder z nicht benannt.
Wir haben diese Funktion beschrieben.
Es ist das gleiche, wenn Sie beschreiben
oder erstellen Variablen, aussagekräftige Namen.
Und auch wenn Sie diese Funktionen machen wo sie generisch genug sind,
wo sie tatsächlich etwas tun und sie nehmen generische Daten, die Sie tatsächlich
könnten Verwenden Sie sie in anderen Programmen wieder, genau
wie in einer Bibliotheksfunktion.
Auch hier wird die Wiederverwendung von Software unterstützt.
Also in diesen kommenden Vorträgen, Wir werden darüber sprechen, wie
wir eine Funktion definieren können spezifische Syntax, wie wir eine Funktion aufrufen
und aufrufen können und wie wir können Daten von ihnen weitergeben und zurückgeben.
Darauf werden wir uns konzentrieren weiter in den kommenden Vorträgen.
Das wollte ich auch erwähnen unsere Hauptroutine, die wir
in jedem immer wieder gesehen haben c Programm, das ist eine Funktion.
Die Hauptfunktion ist eine spezielle Erkannter Name im c-System,
zeigt an, wo die Programm soll mit der Ausführung beginnen.
Alle c-Programme haben immer eine Hauptleitung.
Die Hauptfunktion kann übernehmen Daten, wenn Sie an
sie übergeben, die Befehlszeilenargumente oder es muss keine Daten nehmen.
Es hat auch optional Daten, die es zurückgeben kann.
Sie werden feststellen, dass wir verwenden Hauptfunktionen, die 0 zurückgeben.
Normalerweise wird das verwendet, wenn Sie Fehlercodes zurückgeben möchten.
Wir haben jedoch bestimmte Funktionen verwendet bereits und die
wichtigste Funktion ist die Hauptfunktion und das hilft wieder, den Code zu organisieren.
Wir wissen immer wo die Programm startet, weil wir
nur die Haupt finden müssen.
Dies ist eine allgemeine Beschreibung von Funktionen Art der Identifizierung der Vorteile von
Funktionen und was genau eine Funktion ist.
Jetzt wollen wir reden über die Umsetzung.
Vielen Dank.