[Powered by Google Translate] LEXI ROSS: All right, hallo, everyone.
Willkommen zur ersten CS50 Oberabschnitt.
Dies wird die einzige Woche supersections sein.
Danach werden Sie regelmäßig Abschnitt gehen mit Ihrem
zugeordnet TF.
Aber diese Woche, wir tun es in ein wenig anders
Format, obwohl das tatsächliche Format, wie es geht zu gehen
für die nächste Stunde und eine Hälfte oder so, wird es ziemlich
ähnlich dem, was Sie für sehen werden
der Rest des Semesters.
>> So, was wir tun müssen, ist zu starten, indem Sie über die
Abschnitt Teil des Problems gesetzt.
Also, wenn Sie über die p-Set, die hoffentlich haben Sie gelesen,
Sie werden sehen, dass es ein Teil "A Sektion
Questions ", und diese sollen verschwunden sein
über in Ihrem Abschnitte.
So haben Sie einen Vorteil, indem sie hier in die Sie bekommen
gehen über diesen konzeptionellen-basierte Fragen.
Und nachdem wir das tun, werden wir in den letzten zwei gehen
Abschnitt Fragen, die mehrere Tauchgänge sind
in Codierungsart Fragen.
Daher freuen wir uns tatsächlich gehen zu müssen euch nehmen ein paar
Minuten für jede Frage, versuchen, sie auf eigene Faust zu lösen, und
dann werden wir, zusammen zu kommen mit dem neuen CS50
Spaces Tool und gehen über die Antworten, damit Sie alle haben die
richtigen Code zu überprüfen.
>> So ein paar Ankündigungen.
Vergessen Sie nicht, dass es Bürozeiten jede Nacht diese
Woche im Annenberg 8 bis 11, so zu tun zu nehmen
Vorteil davon.
Und auch nicht, starten Sie den p gesetzt zu spät in der Woche.
Starten Sie heute Abend oder morgen Abend nachzukommen.
Sie werden es bereuen, wenn Sie zu lange zum Starten warten
und in Probleme laufen.
So nehmen Sie unsere Beratung und definitiv früh zu beginnen.
Das wird ein guter Weg, um mit loszulegen
diese Sektion Fragen.
Also ich bin Lexi, by the way.
Ich bin ein TF.
Und das ist Dan, der auch ein TF.
Dan Bradley: Hey, Jungs.
LEXI ROSS: Und er wird zu bekommen
begann mit den Fragen.
>> Dan Bradley: All right.
Also werde ich nur vorstellen ein paar kleine Compiler
Fragen, die wir gehen, darüber zu sprechen und gerade durchlaufen
irgendeine Art von konzeptionellen Ideen, die wir brauchen, um tatsächlich
Code, entweder in einem Gerät oder mit unserer Art von gefälschten
Geräte, Run CS50 und Spaces.
So lasst uns einfach sehen, ob jemand im Publikum eine Idee hat,
über das, was wir reden.
>> So ist eine Bibliothek, was im Zusammenhang mit der Code?
Wer noch keine Idee?
Okay.
Sweet.
PUBLIKUM: Wie ein Lager von Funktionen, die jemand anderes
bereits programmiert, dass wir aufbauen können?
Dan Bradley: Genau.
So eine Bibliothek einen Bestand von Funktionen, die jemand anderes
bereits programmiert, dass wir nicht
neu implementieren uns.
So haben wir Dinge wie die Standard-I / O-Bibliothek, die
cs50.h Bibliothek, die Dinge sind, dass die Welt, die
Internet, haben die Angestellten sorgten dafür, dass macht unsere
Leben der Menschen leichter als Programmierer.
So wie Sie ausdrucken Dinge auf einem Bildschirm?
Ich habe keine Ahnung, printf tut es für mich.
Es ist etwas, jemand anderes hat bereits das ist
genial und funktioniert recht gut.
>> Okay.
So um Bibliotheken zu verwenden, auf der anderen Seite jedoch muss man
tatsächlich tun einige zusätzliche Dinge mit Ihrem Code.
So haben Sie zu nutzen, Dinge wie diese # include.
Was bedeutet das?
Welche Rolle spielt dieses Spiel, wenn Sie es in einem Programm haben?
Zielgruppe: IT können Sie Gebrauch machen von allen Funktionen, die es
[Unverständlich]
Bibliothek, indem Sie einfach die Definitionen, die bereits
[Unverständlich]
Bibliothek.
Dan Bradley: Okay.
Damit können Sie Pull-Library-Funktionen in Ihren Code, aber
es tut es auf eine Weise, die nicht genau das gleiche wie wie
-LCS50, die wir in einer Minute bekommen.
Es ist einfach lässt der Compiler wissen, dass hey, es gibt diese
Funktionen, die kommen in Ihren Code.
Seien Sie sich bewusst, dass, wenn sie nicht vollständig im Code beschrieben
das ist vor Ihnen, es gibt einige Library-Funktion
das wird sich darum kümmern.
>> So im Fall von printf, die wir gehen über ein paar
Mal ist heute der Standard I / O-Bibliothek.
So, während ich nicht printf überall tun zu definieren in meinem Code immer die
Standard-I / O sorgt es für mich, und ich werde # verstehen sich inkl.
stdio.h, und es wird in diesen Funktionen zu ziehen, dass ich
haben nie definiert.
Also, was ist der Unterschied dann zwischen dieser # include
und-LCS50?
Was bedeutet-LCS50 tun, wenn ich es passieren, um die
Compiler, wie Clang?
Wer noch keine Idee?
Okay.
Yeah?
Zielgruppe: IT können Sie auf den CS50-Bibliothek?
Dan Bradley: Es bietet Zugriff auf den CS50-Bibliothek in
dass es sagt dem Compiler, Clang, dass hey, das ist, wo
Sie tatsächlich gehen, um diese Funktionen zu erhalten.
So ist die # include sagt, es gibt
diese Funktionen irgendwo.
The-LCS50 sagt zu diesem Punkt in Ihrem Computer -
das ist der CS50-Bibliothek -
und ziehen Sie den eigentlichen Code für diese Funktionen.
Macht das Sinn, alle?
>> So das sind alles Dinge, die zu Ihrem Compiler helfen
zusammen mit der Herstellung der Code tatsächlich ausgeführt werden.
Kurze Frage.
Haben die Leute wissen, was ein Compiler?
Sinnvoll?
Es ist im Grunde, das geschriebene Code, den Sie haben,
Umwandlung in binäre, Umwandeln in Maschinencode,
damit Ihr Computer tatsächlich verstehen.
Und ohne weitere Umschweife, werden wir in den mehr gehen
tatsächlichen Kodierung Übungen, die euch etwas Spaß haben werden
Sinken Sie Ihre Zähne in und Lexi gehen über diese.
>> LEXI ROSS: Okay.
Awesome.
So werden wir über zwei Fragen finden Sie hier.
Also das erste ist eigentlich sehen, können Sie, es ist ein wenig
kleine genau hier, im wesentlichen aber fragt Sie
ein Programm schreiben, einige Benutzereingaben erfolgen.
Ich bin nicht sicher, warum es ein schwarzes Quadrat gibt.
Es ist mysteriös.
Es sollte in Ordnung sein, though.
So ist es Ihnen, eine Benutzereingabe in Celsius nehmen will, konvertieren,
Fahrenheit, und dann sagen die Benutzer, was die Temperatur
würde in Fahrenheit sein.
So können Sie eine Probe Input / Output-Sequenz finden Sie hier.
Der Benutzer gibt - nach Celsius, bezieht sich die kühn
Benutzereingabe.
So dass der Benutzer Eingaben 100, und das Programm Ausgänge
Fahrenheit, 212,0.
Und eine wichtige Unterscheidung in diesem Programm ist, dass wir
werde nur eine Dezimalstelle, so werden wir sehen, wie es zu tun
das außerdem.
Und so eine andere Sache zu beachten ist, dass wir mit a.out
weil Clang der Compiler automatisch benennt seine binäre
Dateien a.out, wenn Sie es angeben, mit einer bestimmten Flagge zu geben
es seinen eigenen Namen, aber für jetzt sind wir gerade dabei, den Einsatz
Standardmäßig a.out.
>> Lassen Sie uns also tatsächlich ein paar Minuten und versuchen zu schreiben,
einige Code für diese euch.
So ist es 4:15.
So um 4:20 werden wir wieder kommen und - oh, richtig.
Spaces.
Cool.
Das ist ein bisschen wie das, was wir Skeleton-Code, dass
es ist ein Skelett, aber Sie müssen im Fleisch der Füllung
Programm tatsächlich machen es laufen.
So sehen Sie die # include-Direktiven dort oben zu zählen
CS50 und stdio.
Ich bemerkte in einem Kommentar die aktuelle Formel für die Umrechnung
Celsius in Fahrenheit, falls Sie nicht von hohen erinnern
Wissenschaft in der Schule oder Dingsbums.
Und dann ist das nur ein Gerüst für
die eigentliche Hauptfunktion.
So alles, was Sie schreiben, wird hier.
Und um tatsächlich zu diesem Platz zu bekommen -
so CS50 Spaces können über diese URL werden, was Dan ist
gehen auf die Tafel schreiben, und ich werde auch zu diktieren.
Dan Bradley: cs50.net/spaces--
LEXI ROSS: / qWLc -
Es tut mir leid, y.
Dan Bradley: Y?.
LEXI ROSS: Nein, nein, nein, nein.
Das ist in Ordnung.
qYLcYWfg.
Also sollte ich sehen, alle Namen Art auftauchen hier.
>> Awesome.
Das sieht gut aus.
Dies bedeutet, Menschen schließen sich den Raum.
Also, wenn Sie nicht eine Chance zu spielen, um in bekommen
Spaces noch, das ist eigentlich, was du gehst zu sein mit
mit TFs in Abschnitt alle Semester.
Wie es funktioniert, ist Art von jeder schreibt ihre eigenen
Code, und niemand kann es sehen, bis Sie das Speichern drücken
Taste, die ich nach rechts zeigenden bin jetzt.
Also werde ich Speichern drücken, und wenn Sie alle meinen Namen gehen,
das sollte man in der Lage sein, um es in Menschen in das zu sehen
Raum, der Lexis Beryl Ross ist.
So, wie es geht zu schauen wird Sie auf meinen Namen klicken, und
du wirst Revision 5, festzustellen, welche
ist die neueste Revision.
Kopieren Sie nur Revision 5 in Ihren Raum, indem Sie darauf klicken.
>> Gut.
Also lasst uns durch dieses Problem gemeinsam zu gehen, und ich bin
eigentlich los, um den Code hier auf den Bildschirm schreiben.
Sie können ein wenig vergrößern.
Und dann, wenn ich fertig bin, können Sie kopieren meinem letzten Revision
in Ihren Raum, um, wenn Sie wollen, sehen die endgültige Lösung.
Nun hat Spaces die Möglichkeit für mich zu gehen und sehen einem
der Code, dass euch geschrieben habe, aber nur, weil es
wie ein großer Teil, und wir haben nicht wirklich die gleiche
Art der Diskussion Fähigkeiten als kleinere
Abschnitt wollen wir einfach zu durchlaufen und ich werde einfach
um den Code zu schreiben.
Aber auf jeden Fall halten mich mit Fragen zu jedem Zeitpunkt.
Wir werden durch sie Art von Schritt für Schritt zu machen
sicher, dass wir verstehen, jeden Teil von dem, was hier vor sich geht.
Kann jeder sehen, diesen Text hier?
Hat jemand wollen, dass es größer?
>> Also, was ist das erste, was wir hier zu tun sind?
Nun Wesentlichen, da wollen wir den Eingang von den zu
Benutzer, und wir wollen, dass es eine Art gute Erfahrung für die sein,
Nutzer, wir tatsächlich wollen, um ihnen zu sagen, was wir suchen.
Also lasst uns auszudrucken genau das, was wir wollen, bilden den Benutzer.
So einfach nicht die Mühe Steigerung Ihrer Hand, nur klappert es aus.
Was ist der Befehl, um etwas auf dem Bildschirm auszugeben?
PUBLIKUM: printf.
LEXI ROSS: Awesome.
Okay, so printf.
>> PUBLIKUM: Hey, Lexi?
[Unverständlich]?
LEXI ROSS: Sicher.
So printf, wie wir häufig in der Vorlesung gesehen, ist die
befehlen, etwas zu dem Standard-Ausgabe-Stream zu drucken.
So wollen wir die Benutzer zur Eingabe einer frage
Temperatur in Celsius.
Und jetzt wollen wir eigentlich, um den Eingang, dass sie zu ergreifen
uns und speichern Sie es in eine Variable.
So haben wir ein wenig über die Arten gelernt.
Kann mir jemand erinnern, welche Art würden wir für eine variable möchten
mit einer Dezimalstelle in ihm?
PUBLIKUM: Float.
LEXI ROSS: Float.
Yeah, awesome.
Es ist ein Schwimmer.
So.
Und wie werden wir - große Tipp - nutzen Sie die
schweben vom Benutzer?
PUBLIKUM: GetFloat.
LEXI ROSS: Yeah.
Cool.
Und könnte der Benutzer potenziell bedeuten, und versuchen, uns ein
negative Zahl, aber lasst uns nicht kümmern, dass für diese
Problem jetzt.
Du wirst zu, dass ein bisschen mehr Sorgen auf Ihrem
Hausaufgaben auf dem Problem-Set.
>> Also lasst uns annehmen, dass sie uns eine gute Zahl, und jetzt haben wir
tatsächlich, dass float von Celsius zu konvertieren
Fahrenheit.
Lassen Sie uns also bitte unsere Formel hier oben, und lassen Sie erstellen ein
neue Variable und nennen es Fahrenheit.
Ich studierte die Rechtschreibung.
Es ist irgendwie verrückt, ich weiß.
Und lassen Sie uns über die Reihenfolge der Operationen, um Art zu tun zu zählen
seine Arbeit hier, aber wir Klammern verwenden, nur um
komplett ausführlich und klar.
So Celsius mal 9 geteilt durch 5.
Ich werde Verkleinern nur ein bisschen so ist dies auf passen
eine Zeile, aber ich werde vergrößern wieder für diejenigen, die nicht sehen können,
weiter in der Rückseite.
Sorry about that.
Seltsam Cursor Fragen.
Plus 32.
Okay, hat jemand irgendwelche Fragen darüber, wie habe ich in
die Formel, oder alle Probleme mit dem?
Yeah.
>> PUBLIKUM: Müssen wir printf setzen, bevor der Schwimmer
celsius schweben fahrenheit script Linien?
Spielt es eine Rolle, in welcher Reihenfolge sie in sind?
LEXI ROSS: So war die Frage, müssen wir printf
bevor wir tatsächlich für den Schwimmer fragen?
Die Antwort ist, dass wir es tun.
Auf diese Weise, dass der Cursor, der Benutzer erhält zur Eingabe ihrer
Schwimmer nach dem gedruckten c auftreten, nicht wahr?
Und es macht Sinn, wenn Sie über logisch zu denken, wie
Sie fragen den Benutzer eine Frage, und dann bist du
eine Antwort zu erhalten.
So druckt er c, und dann gibt es ein Cursor, dann ist die
Benutzer kann den Wert geben, wie wir sehen,
später, wenn wir Demo.
Ja?
>> PUBLIKUM: Warum verwenden wir einen Schwimmer und nicht eine doppelte?
LEXI ROSS: So eine doppelte, im Wesentlichen, wie der Name
andeutet, gibt uns die doppelte Menge an
Präzision als Schwimmer.
Aber typischerweise in C, in diesem Kurs für eine Anzahl von
Gründen werden wir schwimmt verwenden.
Und das ist wirklich alles, was die Präzision brauchen wir nur für
Art der Grundtemperatur Konvertierungen.
Typischerweise sind Doppelzimmer mehr in der Java-Sprache verwendet,
Schwimmer sind häufiger bei C. alles in Ordnung, awesome.
>> Dan Bradley: One more.
LEXI ROSS: One more.
Ja?
PUBLIKUM: Wo platzieren Sie die Leertaste?
Wie, [unverständlich] die Leertaste [unverständlich]?
Spielt es eine Rolle?
LEXI ROSS: Oh, nein.
So spielt es keine Rolle.
Ich sollte eigentlich einen weiteren Raum hier setzen.
Aber was bedeutet Sache ist, dass Sie konsequent sind
gesamten Code.
Also, wenn Sie ein Stil der Abstand entscheiden, stellen Sie sicher,
halten Sie es in Ihrem gesamten Code, oder Sie können Stil erhalten
Punkte abgezogen.
So Konsistenz ist der Schlüssel.
Dan Bradley: Ich glaube, er war zu diesem Raum zu sprechen.
LEXI ROSS: Oh, du bist zu diesem Raum sprechen?
Durch die tatsächliche C?
PUBLIKUM: Yeah.
LEXI ROSS: Oh, das ist also nur für aussieht, nicht wahr?
So so, wenn wir den Code auszuführen, wenn wir nicht diese
Platz hier, wenn es so aussah, würde der Benutzer starten
Eingabe der Nummer, und es wäre oben rechts gequetscht
gegen den Dickdarm nach C und es würde sich ein wenig
besser, wenn es eine Raum.
Und Sie können, dass ein bisschen besser sehen, wenn wir tatsächlich
diesen Code auszuführen, wenn wir damit fertig sind.
Awesome.
Ja, eine weitere Frage.
>> PUBLIKUM: Muss ich, um einen Dezimalpunkt nach einer der Put-
[Unverständlich]?
LEXI ROSS: Sie glauben also nicht, weil in der Größenordnung von
Operationen.
Also, weil Fahrenheit bereits ein Schwimmer, wie
Celsius, müssen Sie nicht explizit gegossen einer dieser
andere Zahlen als Schwimmer, obwohl in anderen
Umständen, wenn Sie mit ints tun, können Sie
müssen, um einen Punkt explizit warf es als Schwimmer setzen.
Yeah?
PUBLIKUM: Ich frage mich, ob Marktkapitalisierung Angelegenheiten
diese Befehle wie GetFloat?
LEXI ROSS: Ja, gute Frage.
Die Frage war also, tut Marktkapitalisierung Materie
Befehle wie GetFloat?
Die Antwort ist ja, tut es.
So GetFloat ist, wie Dan wurde früher beschrieben, eine Bibliothek
Funktion im CS50 Bibliothek, und es wurde als Großbuchstaben geschrieben
G-, Kapital-F. Also, wenn Sie nicht schreiben Sie es mit diesen Hauptstädten
dort wird der Compiler nicht zu verstehen, was
funktionieren Sie sich beziehen.
Okay.
Yeah?
>> PUBLIKUM: Ist das Argument für die wichtigsten immer Leere?
LEXI ROSS: Ja, das ist eine andere große Frage.
So dass der Code, den Sie von my space kopiert irrtümlich hatten
einige weitere Argumente.
So war die Frage, ist das Argument der Hauptfunktion
immer nichtig, was im wesentlichen bedeutet nichts?
Die Antwort ist nein.
Sie können feststellen, dass Sie den Code aus meinem früheren kopiert
Revision hatte, was mag nichts, was wirklich aussehen lässt
Sinn jetzt, einige char *, argv, argc.
Mach dir darüber jetzt Sorgen machen, aber du wirst später herauszufinden,
auf sie machen einen Unterschied machen.
Aber wenn Sie sie nicht verwenden diese Art von zusätzlichen Funktionen
Sie finden das zu später erfahren, nichtig
ist völlig in Ordnung.
>> Gut.
Und wir haben einen weiteren Schritt, das heißt, wir wollen, ist
tatsächlich zeigen dem Benutzer, was die konvertierte Temperatur ist.
Also noch einmal, werden wir printf verwenden, und sagen wir f, nur
Konsistenz willen.
Und jetzt werden wir etwas ein bisschen tricky zu tun.
So werden wir eine Flagge, oder eine spezielle Art der Notation zu verwenden,
printf zu sagen, nur drucken, eine Dezimalstelle.
Und hat jemand zufällig weiß, was das ist gut aussehen
möchte, bevor ich es tippen?
Yeah?
PUBLIKUM: 0,2% f?
LEXI ROSS: Yeah, yeah.
Also eigentlich ist es ganz nah.
0.01f für 0,01% f, und dann haben wir daran zu erinnern, gehören
das andere Argument von printf, die die Variable selbst ist,
welche N.
>> Ein letzter Schritt.
Kann jemand daran erinnern, was, dass in unserer Hauptfunktion ist?
Ja, da oben.
PUBLIKUM: Return?
LEXI ROSS: Genau.
So, da dies wichtigsten Renditen in int, wollen wir
auch in int zurück.
Dan Bradley: Percent muss auf der anderen Seite sein.
LEXI ROSS: Okay.
Sorry, Jungs.
Das war ein Fehler.
So die prozentuale kommt vor 0,01.
Es ist also% 0,01 f.
Das sind ziemlich schwer zu merken.
Viele Menschen, die wie ich, nur schauen sie auf
wenn wir sie verwenden.
Ja, da oben.
PUBLIKUM: Warum ist es 0,01 und nicht 0,2 oder 0,1?
LEXI ROSS: Ich weiß es nicht, eigentlich.
Weißt du es?
Dan Bradley: Der Grund ist es 0,01 zu 0,02 Gegensatz oder
0,2 oder 0,1, ist ziemlich willkürlich, die Art und Weise, dass die
Programmierer ursprünglich konzipiert ist.
PUBLIKUM: Das ist nicht das, was ich meinte.
Ich verlange nicht den Grund.
[Unverständlich], warum.
Ich habe es als 0,2 geschrieben, und es liefert zwei -
Dan Bradley: Ja.
So waren wir nur wollen ein.
PUBLIKUM: Oh, Okay.
So konnte man 0,01 dann.
Dan Bradley: 0,1 würde wahrscheinlich auch funktionieren.
0,01 funktioniert genauso gut.
LEXI ROSS: Oh, die 0 sein könnte auf Null zeigen, wenn
es ist weniger als ein.
Dan Bradley: Ja, ich denke das ist richtig.
Also die 0,01 würde zeigen, eine Null, wenn es nicht noch etwas
das wäre es natürlich gehen.
Also, wenn Sie, sagen wir, indem in 100 für Celsius, wäre es
kommen, um 212 in der Regel in Fahrenheit, wie 212 genau.
Wenn Sie die 0,01 haben, wird es zeigen, 212,0, wie
Gegensatz zu nur 212.
LEXI ROSS: Das ist richtig.
So liest es im Grunde sagt, printf, drucken Sie eine Dezimalstelle,
und drucken Sie eine 0, falls erforderlich.
Wenn nicht, drucken Sie die erste Dezimalstelle.
Dan Bradley: Und wir werden einige dieser erforschen, wenn wir
tatsächlich den Code ausführt.
LEXI ROSS: Yeah.
PUBLIKUM: Also habe ich 0,1.
Es ist immer noch druckt seine Null.
Dan Bradley: Es hat immer druckt seine Null?
PUBLIKUM: Yeah.
Dan Bradley: Hm, okay.
LEXI ROSS: Cool.
>> Gut.
Weitere Fragen zu diesem Code, bevor ich kompilieren und ausführen?
Hat jemand sehen keine Fehler hier in erster Linie?
Wer etwas sehen, was hier sein sollte?
Wenn dies Ihr Problem Satz, was wäre hier zu sein, das ist nicht
es gerade jetzt?
Yeah, great.
Ich habe also keine Kommentare enthalten, weil ich liefern sie bin
mündlich, aber wenn ich schreibe dies in einem Problem-Set, würde ich
möchte auf jeden Fall Bemerkungen gesetzt, um anzuzeigen, was ich bin
Dabei Wesentlichen im Programm.
Und du wirst Art bekommen Sie ein Gefühl dafür, wie Sie durch Bewegen
das Semester, die richtige Menge zu kommentieren.
Sie wollen nicht zu ausführlich und legte Linien und
Zeilen Kommentare für jedes Ihrer Zeilen Code, aber Sie
will auch nicht, dass sie nicht verbose genug und lassen Sie das
Leser versuchen, herauszufinden, was zum Teufel
Ihr Code tut.
>> Okay, cool.
Lassen Sie uns versuchen Sie diesen Code ausführen.
Okay, ich werde Verkleinern ein wenig.
Cool.
So werden Sie feststellen, es gibt eine Play-Taste hier.
Lassen Sie Play.
So wirst du bemerken, die hier, wie in der Spezifikation auf das Problem
eingestellt ist, wird die. / a.out.
a.out ist der Name des Binärformat ist, die eine
langes Wort für nur eine Datei aus binären Code,
Ihr Computer tatsächlich läuft.
So wie wir es erwartet haben wir C hier.
So rufen Sie eine Nummer.
PUBLIKUM: 23.
LEXI ROSS: 23.
Dan Bradley: Ihr Programm dauerte zu lange zu laufen.
Führen Sie einfach wieder.
LEXI ROSS: Oh, my bad.
Okay.
Spaces ist wählerisch manchmal.
Es möchte, dass Sie auf Ihre Füße denken.
Okay, 23.
Awesome.
Hat jeder das glauben?
Cool, weil es funktioniert.
>> Okay.
Lassen Sie uns ein paar mehr versuchen.
Lassen Sie uns versuchen eine Kante Fall.
In der Informatik, wenn wir über Grenzfälle sprechen, meinen wir
Argumente für Ihr Programm zu laufen, dass es eine Art auf dem sehr
Kanten vernünftigen Eingänge oder diesem Test bestimmte Ecken
die Logik in Ihrem Programm, und das macht mehr Sinn, wenn wir
mehr tun, komplizierte Programme.
Lassen Sie uns versuchen 0.
Awesome.
Wir alle wissen.
Cool.
Haben Sie noch Fragen zu diesem Thema, bevor ich bewegen
zum nächsten Programm?
Alle Rechte, awesome.
So, jetzt werden wir -
Sie wollen nur meinen Computer verwenden?
Dan Bradley: Ja, das ist einfach genug.
>> Alle Rechte, so gehe hin und rede darüber machen Prozentsätze.
Wir sind also im wesentlichen, in diesem nächsten wenig Übung, geht auf
nehmen zwei Integer-Eingaben des Benutzers, in der Hoffnung für eine
nichtnegative Zähler und Nenner eine positive und
Grundsätzlich teilt sie, und zum Ausgeben, was dabei herauskommt als
Prozentsatz.
So wollen wir es akzeptieren nur nichtnegative Zähler und
akzeptieren nur positive Nenner, und immer wieder gefragt
für neue, wenn sie nicht bekommen, was sie will.
Alles in Ordnung?
So geben, dass ein gehen.
LEXI ROSS: Oh yeah, willst du zu tun, die -
oh, vielleicht Leute kopieren soll mein Code.
Dan Bradley: Ja.
LEXI ROSS: [unverständlich]
Spaces.
>> PUBLIKUM: Ich habe eine Frage.
Wenn ich mit Spaces und ich will [unverständlich] das Speichern
Fahrenheit Umwandlung, speichere ich sie und dann eine neue -
LEXI ROSS: Wir könnten einfach eine neue Space, oder Sie können nur
kopieren möchten, und fügen Sie sie in eine Textdatei oder
etwas, so dass Sie es haben.
Dan Bradley: Ich werde einfach meinen Namen ändern.
LEXI ROSS: Also habe ich einfach rettete die neueste Version
tofahrenheit.c, wenn Sie also in AAAA Lexis Beryl gehen
Ross, können Sie gehen in und kopieren diese neuesten Code, und dann
beginnen auf dieser neuen, was ich denke, Dan wird, um
einige Skeleton-Code für so gut.
Okay.
Dan Bradley: Die neueste Version habe ich auf meine, so
es ist an der Spitze dieser Zeit ist Revision 4 und
es wird haben, was Sie für den Einstieg.
LEXI ROSS: All right, und ich werde das in meine als auch kopieren.
>> Dan Bradley: All right.
Ich denke, wir werden nur beginnen werde über diese, wenn
jemand interessiert ist.
LEXI ROSS: Wir sind alle interessiert.
Dan Bradley: Wir werden beginnen, nur durch die Erklärung
einige Variablen. Wir haben also ein Zähler und aus Gründen der
jetzt werde ich nur starten sie mit dem Wert -1,
und dann werde ich die Einrichtung eines do-while-Schleife. Während -
so, wenn ich wollen, dass es in einer Schleife?
Wann muss ich wollen, dass es immer wieder zu fragen -
yeah?
PUBLIKUM: Wenn sie weniger als oder gleich Null ist.
Dan Bradley: Warum kann es nicht gleich Null sein?
PUBLIKUM: [unverständlich].
Dan Bradley: Ja.
So für den Zähler, es ist nur während der Zähler
kleiner als Null ist.
Macht das Sinn für Menschen?
Wir halten Looping, während der Zähler kleiner als Null ist,
Wir fragen immer wieder nach neuen Eingang, und halten Sie fordern, dass sie
Ein neuer Dinge.
Also werde ich nur ein wenig printf hier, nicht-negative
num -.
Und dann tun wir das Gleiche wie vorher, außer ein do
GetInt, nur weil wir es als tun wollte
Prozentsätze von ints.
So Zähler = GetInt.
>> Okay, jetzt ein paar Dinge.
Brauche ich diese hier -1?
PUBLIKUM: [unverständlich].
Dan Bradley: Nein
Warum nicht?
PUBLIKUM: Weil du immer einen zufälligen Wert aus dem Anwenderprogramm.
Dan Bradley: Genau.
Aber will ich die Erklärung haben hier draußen?
Ja.
Warum?
PUBLIKUM: Sie müssen die außerhalb der Schleife zu finden.
Sonst wirst du nicht um die Variable für den Rest haben
des Programms.
Dan Bradley: Genau.
Scope.
Sweet.
Macht das Sinn für alle?
PUBLIKUM: Können Sie sagen, dass man mehr Zeit?
Dan Bradley: Okay.
So, wenn ich diese Zähler in der Schleife zu erklären, wenn
Ich hatte diese anstelle der Zähler ist int Zähler
und ich losgeworden dies völlig,
Zähler verschwinden würden.
Es wäre nicht außerhalb dieser Schleife gibt, weil alles
ist im Rahmen dieser geschweiften Klammern.
Sinn?
Okay.
>> Also für Nenner, tun wir etwas ziemlich ähnlich, int
Nenner = -
und ich brauche nicht das Gleichheitszeichen -
zu tun, und für die, während in diesem Fall, was ich will?
In welchem ​​Zustand will ich es noch Schleife auf?
PUBLIKUM: Weniger als oder gleich 0 ist.
Dan Bradley: Weniger als oder gleich 0 ist.
Nenner <= 0 ist.
Vergessen Sie nicht Ihre Semikolon, Kinder.
Also tun wir das Gleiche wie vorher, printf einer positiven
Nenner, und wir bekommen int von hier.
Dort gehen wir.
GetInt.
Okay.
Und dann am Ende wollen wir drucken einen gewissen Prozentsatz.
So, dies zu tun, was soll unseren String aussehen?
printf.
Irgendwelche anderen Ideen von dem, was ich hier tun?
Yeah?
PUBLIKUM: Vielleicht% 0,2 [unverständlich].
Dan Bradley: Yep.
Okay.
Ich werde mit dem ersten Bit,% 0,02%% beginnen,
Zitate, Komma.
Und ich werde eine neue Zeile hier zu werfen, nur weil ich
wie neue Zeilen, wenn ich Dinge zu tun.
Welche Art von mathematischen Ausdruck soll ich hier?
PUBLIKUM: Klammern und Schwimmer.
Dan Bradley: Gut.
Warum will ich, um es in float?
PUBLIKUM: [unverständlich].
Dan Bradley: Gut, gut.
Schweben.
PUBLIKUM: Zähler.
Dan Bradley: Zähler?
Okay, so dass ich float Zähler.
PUBLIKUM: Divided by -
Dan Bradley: Geteilt durch?
PUBLIKUM: Nenner.
Dan Bradley: Muss ich tun genau Nenner, oder muss ich tun, float
Nenner?
PUBLIKUM: Just Nenner.
Dan Bradley: Okay.
PUBLIKUM: Und Sie können, dass mit 100 multiplizieren.
Dan Bradley: Und ich multiplizieren Sie diese mit 100.
PUBLIKUM: Und dann Klammern um den gesamten Ausdruck.
Dan Bradley: Yep.
>> Okay.
Gut aussehen?
Lass es uns versuchen.
-50.
Gut, 50.
0 und 100, 50%.
Es funktionierte wie wir wollten.
Bedeutet dieser Code sinnvoll, Leute?
Ich werde um sie zu speichern, so dass Sie eine Kopie davon bekommen kann.
Yeah?
PUBLIKUM: Warum gehst du nicht brauchen, um [unverständlich] setzen?
Dan Bradley: Wo?
PUBLIKUM: Wie, wenn Sie sagen Nenner gleich
[Unverständlich].
Dan Bradley: Wenn ich hier?
Warum sollte ich int, bevor es?
PUBLIKUM: Weil der andere ein int vor sich hat.
Dan Bradley: Na ja, das war also nicht in einer Schleife, nicht wahr?
So erkläre ich dieses int Nenner über der Schleife,
und ich habe es nicht in der Schleife, weil ich wäre
Deklaration ein paar Mal, und es wäre eigentlich nicht zu tragen
über, irgendwo anders im Programm.
LEXI ROSS: Ja, das ist die wichtige Sache zu erinnern, dass
Variablen müssen nur einmal deklariert werden.
So vorstellen, es ist wie die Einführung einer neuen Variablen
in die Welt, indem er sie int oder float oder Dingsbums, und
sobald es deklariert ist, ist alles was Sie tun müssen, um es zu ändern
nennen es beim Namen: Nenner, oder x oder y.
Sie müssen nur wirklich nennen es ein int nur einmal.
>> Dan Bradley: Ja.
PUBLIKUM: Können Sie erklären, den Unterschied zwischen% d
und% f und wenn Sie jemals erklären, a
Variable als Dezimalzahl?
Dan Bradley: Also% d und% f hier?
LEXI ROSS: So d bezieht sich eigentlich nur einer Ziffer, nicht
dezimal, welche Art von verwirrend ist.
Es gibt keine tatsächlichen Datentyp namens decimal, und wenn Sie
ausdrucken möchten einen int finden Sie es als% d oder
%-Whatever-d. F ist für Schwimmer, die Sie denken würden
würde ich sein, aber es ist eigentlich d für int.
>> Dan Bradley: Yep?
PUBLIKUM: So in dem anderen Programm, warum wir nicht einfach
dasselbe, wenn du sagst Fahrenheit?
Warum haben wir nicht gesagt, wie -?
Dan Bradley: In der unteren hier?
Sie haben könnten.
Es wäre völlig legitim gewesen.
Ich mag es zu tun auf diese Weise, wie andere Menschen trennt
es in verschiedene Codezeilen.
So oder so funktioniert.
Was ist los?
>> PUBLIKUM: Können Sie erklären, was das%%
[Unverständlich]?
Dan Bradley: Okay, so der Prozentsatz, Prozent.
Richtig, ich wollte über diese zu gehen.
Das erste Prozent wird als Escape-Zeichen, und es ist nur
sagt der Sache dahinter ist eigentlich nicht Code.
Also das erste Prozent, rechts, die% .02 f, alle jene% .02 f
etwas bedeuten printf als Funktion.
%%, Ich wollte, dass es eigentlich nur drucken Sie eine
Prozent-Zeichen.
Also ich sage nicht, dass es etwas Wichtiges dahinter.
Ich sage nur, es gibt ein Prozent-Zeichen dahinter.
Bitte drucken Sie ein Prozentzeichen.
So Prozent, dann ein weiteres Prozent.
PUBLIKUM: Können Sie zeigen, was es aussehen würde, wenn Sie
schwimmt auf der Basis einer anderen Linie?
Dan Bradley: Oh ja, sicher.
Also ich bin gefragt zu zeigen, was es wäre, wenn ich sehe
hatte dieses float Zähler, alles Mathematik, auf einer anderen Leitung.
So float Prozent = -
und ich würde loszuwerden dieser und nur in Prozent setzen.
Und es tut genau dasselbe, ich
eine andere Variable.
>> PUBLIKUM: [unverständlich].
Dan Bradley: Scrollen Sie was?
PUBLIKUM: Also, ich kann [unverständlich] zu sehen.
Dan Bradley: Was kannst du nicht sehen?
PUBLIKUM: Sorry, ich war [unverständlich].
Dan Bradley: Ja.
PUBLIKUM: Also, wenn wir anstelle der Escape-Zeichen
Angenommen, wir wollten ein Dollar-Zeichen stattdessen, nur für
beispielsweise ein Dollar-Zeichen hinter Prozent?
Dan Bradley: Nope.
Es ist nur ein Dollar, nur ein Dollar-Zeichen, da ein Dollar
Zeichen bedeutet nicht, nichts zu printf.
Die Frage war, brauche ich, um eine Escape-Zeichen für haben
Symbole wie Dollarzeichen?
PUBLIKUM: So eine Art verwandten, gibt es andere Fälle, in denen
wir sollten wissen, wann etwas wie die prozentuale
Zeichen bedeuten könnte etwas [unverständlich]?
LEXI ROSS: Ja.
Nicht unbedingt das Prozent-Zeichen, aber der Backslash, siehe
wie wir spielfrei Ende haben hier?
Sagen wir, wir wollten eigentlich eine Gegenreaktion zu drucken, hätten wir
zu dem zu entkommen -
und dies wird verwirrend klingen -
mit einem anderen Backslash.
Also, wenn wir \ \ ausdrucken wollten, würden wir
nur noch das, oder für weitere geben
Backslash, anderen zu entkommen.
Und noch eins, wenn wir den Ausdruck ein Angebot möchten - so
im Grunde alles, was Art etwas Besonderes bedeutet
innerhalb einer Zeichenkette, wir wollen, zu entkommen.
Also sagen wir mal hier sind wir wirklich wollen, ein Angebot haben, würden wir
wollen \ tun. "
PUBLIKUM: So ist es meist ein Backslash?
Dan Bradley: Es ist in der Regel ein Backslash.
LEXI ROSS: Yeah.
Aus irgendeinem Grund hier ist es ein Prozent-Zeichen.
>> PUBLIKUM: [unverständlich]?
Dan Bradley: Dieser Kerl?
Dies ist nur zu sagen, ist die Sache, die aufgeteilt ist hier
werde als Schwimmer aus Gründen der Teilung behandelt werden.
So im Fall von 50 durch 100 geteilt, wenn ich nicht über die
float gibt, wäre es nur 0 sein.
Das ist alles, was herauskommen würde, da 50 geteilt durch
100, wenn Sie nicht wie alle Dezimalstellen, 0 ist. -
und alles, was nach dem Komma ist nur abgeschnitten aus.
PUBLIKUM: Ähm,
warum nicht wir es, bevor Nenner gut?
Dan Bradley: Also der Grund, warum wir nicht legte es vor der
Nenner ist, weil, wenn Sie teilt etwas von
eine ganze Zahl, es funktioniert ganz gut.
Mit einer größeren Anzahl an der Unterseite
ändert nichts.
Sie können durch Zahlen just fine teilen.
Es funktioniert einfach nicht wirklich wichtig.
Man könnte, würde es nichts ändern.
PUBLIKUM: Also, wenn Sie drei Dezimalstellen wollte, würde
Sie setzen Prozent 0,03?
Dan Bradley: Yep.
Sie setzen würde% 0,03, wenn man wollte
drei Dezimalstellen.
>> PUBLIKUM: Und do befehle, was ist der Unterschied zwischen
dass und nur tun, während an der Spitze?
Dan Bradley: Also eine do-while gegenüber einer while-Schleife sind zwei
ziemlich ähnlich Befehle.
Der einzige Unterschied ist, dass Sie den Code einmal laufen, laufen Sie die
Code innerhalb der Schleife einmal zuvor
dass eine tatsächliche Kontrolle.
So ist es auch der Grund, warum ich Nenner, ohne sagen kann
es eine Zahl ist.
Also, wenn ich sagte int Nenner, und dann, während (Nenner <=
0), könnte es noch nie
führen Sie den Code hinein.
Es werde diese Überprüfung vor zu machen -
so hier.
Also, wenn ich diese while-Schleife hier hätte, würde ich haben müssen
Nenner gleich, sagen wir, -2 oder eine Zahl kleiner
als oder gleich 0, so wäre es eigentlich versuchen Sie den Code
Innere zuerst.
So allgemein gesprochen, wollen Sie eine do-while-Schleife
statt einer while-Schleife, wenn Sie für Benutzereingaben gefragt
weil Sie den Code einmal, um etwas bittet den Benutzer
Ihnen ist in der Regel die beste Lösung, im Gegensatz
nur vertrauen, was Sie setzen in den Anfang.
PUBLIKUM: Und ist immer eine Weile gefolgt tun.
Dan Bradley: Do wird von einigen Stück Code gefolgt, dass Sie
ausführen möchten, und dann, während eine Bedingung ist.
LEXI ROSS: Denken Sie daran, wie ein Befehl Art aufgebrochen
in zwei Teile.
Es ist ein do-while, nicht wie hier eine zu tun, und dann bin ich
wird eine Weile hinzuzufügen, ist es nur eine do-while.
>> PUBLIKUM: Ich verstehe den Grund, warum Sie mit dem du
zwei Prozent-Zeichen, kann aber du mir erklären, warum wir haben
haben die [unverständlich]?
Dan Bradley: Okay, so dass der ein Prozent-Zeichen wird nur sagen,
printf, hier ist ein Befehl, dass ich dich zu wollen
füllen sich mit einer gewissen Anzahl.
Deshalb möchte ich Ihnen, es mit zwei Dezimalstellen und eine Füllung
schweben, und Sie werden die Schwimmer am Ende des Fundes
Befehl ist es diese Prozent.
Macht das Sinn?
PUBLIKUM: Yep.
Dan Bradley: Okay.
>> PUBLIKUM: Gibt es etwas über die do-while-Schleife,
wenn die Bedingung nicht erfüllt ist, wenn Sie ein
negative Zahl für Ihren Zähler, es wird einfach weiter
fragen und halten den Benutzer auffordert?
Dan Bradley: Ja.
So dass, wenn der Zustand der während nicht am Ende erfüllt
Die Do-while, wird es laufen zurück zum Start.
Es ist nur eine Schleife.
Es ist also wie eine while-Schleife, dass die Bedingung nicht
erfüllt auf.
Es läuft einfach noch einmal.
Yeah.
PUBLIKUM: Also, wenn du das tust, können Sie, für Ihre Zeit,
legte zwei Bedingungen?
Dan Bradley: Sie können.
Es hängt davon ab, was Sie fragen.
So können Sie zwei Bedingungen in einer while-Schleife zu setzen, wenn Sie es haben
alle innerhalb einer Art Boolean Operator, der klingt
hässlich, aber es ist im Grunde diese Nenner ist kleiner oder
gleich Null, entweder wieder wahr oder falsch, nicht wahr?
Es ist entweder kleiner als oder gleich Null ist oder nicht.
So kannst du anderen Booleschen Operatoren, die sagen, während werde
dies gilt auch oder während dies ist auch falsch.
Es ist also Dinge wie und Zähler ist größer als
Null, nicht wahr?
Das ist zu fragen, werde dies nur while Nenner ist weniger
als Null und Sie haben eine positive Zähler.
PUBLIKUM: Und Sie tun die beiden ANDs, nicht wahr?
Dan Bradley: Zwei ANDs.
LEXI ROSS: Wir werden, dass später mehr decken.
>> PUBLIKUM: Was passiert, wenn jemand nicht in einer positiven gestellt
Nenner?
Wenn sie in einer negativen Zähler setzen, können Sie sie veranlassen
, sagen wir, in eine nicht-negative Zähler und haben
ein Befehl dafür?
Dan Bradley: Du könntest.
PUBLIKUM: Im Moment ist es nur sagt nichtnegative Zähler.
Was wäre dafür verwendet werden?
Dan Bradley: Also würden Sie eine haben, wenn die Bedingung, so wie wenn
Zähler kleiner als Null ist.
LEXI ROSS: Sie würde wahrscheinlich nur wollen es lösen sich in mehr
Schritte, nicht wahr?
So sie das erste Mal in das Eingabefeld setzen, würden wir nur sagen, geben
uns ein Zähler oder Dingsbums.
Und dann, wenn sie das Falsche zu tun, könnte dies der Fall sein,
für eine while-Schleife, sondern als ein do-while, denn wir haben
Zum ersten Mal haben wir die GetInt, und dann, während dieser Eingang
schlecht ist, halten wir bitten sie für weitere Eingaben mit einem
andere Art von Text, mochte das nicht funktioniert oder rufen Sie uns ein
nichtnegative Zähler statt, diese Art der Sache.
>> Dan Bradley: Ja?
PUBLIKUM: Wie sehen Sie klar die Sachen, die [unverständlich]
das Terminal?
LEXI ROSS: Klar.
Dan Bradley: Ja, Sie können nicht hinein geben.
LEXI ROSS: Eigentlich ist dies keine wirkliche Terminal.
Die Frage war, wie kann man klar das Zeug da unten?
Die Antwort ist, dass es nicht eine echte Terminal, aber sagen wir Ihnen
sind in einem realen Terminal.
Löschen.
Oh, es ist eine Katze.
Dan Bradley: [unverständlich]?
Es ist so, nicht wahr?
LEXI ROSS: Nein, das ist alles meine Sachen.
Dan Bradley: [unverständlich].
LEXI ROSS: Dort gehen wir.
Dan Bradley: Ja?
>> PUBLIKUM: Ist klar, Arbeit, wenn Sie haben -
wie, sagen Sie ein Programm ausführen [unverständlich], und es fragt
Sie für etwas, und Sie wollen nicht.
How do you -
Dan Bradley: Strg + C?
LEXI ROSS: Yeah.
Also, wenn Sie ein Programm ausführen und etwas wird nicht die
wie Sie es haben wollen und Sie wollen einfach nur die ganze beenden
Programm, Strg + C. Selbst wenn Sie auf einem Mac, nicht von Apple + C,
Strg + C.
PUBLIKUM: Haben Sie die richtige Version in der
Revision in Ihrem Profil?
Dan Bradley: Ich denke, es gespeichert ist, ist es nicht?
Yeah.
LEXI ROSS: Das ist der Raum.
Yeah.
Ich denke, es ist Revision 11.
>> Dan Bradley: Ja?
PUBLIKUM: Hat C keine Annahmen darüber, was eine
Variable ist, wenn Sie eine Variable definieren, aber nicht zuordnen
nichts, um es sofort?
Dan Bradley: Also, es wird nur akzeptieren ints in diesem Punkt.
Also, wenn Sie erklären -
PUBLIKUM: Wenn ich gerade getan int Nenner Semikolon, tut es
annehmen, dass es gleich Null oder eine beliebige Anzahl ist -?
Dan Bradley: Nope.
Also, wenn Sie nicht zuweisen, sagen wir, int Nenner auf einen beliebigen Wert,
es könnte alles sein.
Es ist das alte Speicher, der an dieser Stelle war.
Es könnte also sein negatives 2 Mrd könnte es sein, positive
2 Milliarden, und es könnte irgendwo dazwischen sein.
Also, wenn Sie tatsächlich ausgeführt sind Dinge, stellen Sie sicher, dass Sie
einen Wert zuweisen der Variablen.
Dabei spielt es keine Rolle, weil wir sofort sind
Zuweisung des Wertes, aber im Allgemeinen, yeah.
Noch Fragen?
>> LEXI ROSS: Wir können auch nur nehmen allgemeine Fragen an dieser
Punkt auf Vorlesungsstoff, S. set Material, alles, was Sie habe
worden zu fragen, ist dies ein guter Zeitpunkt, um die zu bitten.
PUBLIKUM: So in den Komplettlösungen, Zamyla
erwähnte die Funktion round.
Würden Sie bitte die Ausarbeitung, wie man das umsetzen?
LEXI ROSS: Klar, wie die Umsetzung das?
PUBLIKUM: Sie sagte, es war rund.
LEXI ROSS: Oh yeah.
Also nur so haben wir alle die gleichen vocab und Sachen,
implementieren bedeutet in der Regel tatsächlich schriftlich von Grund auf.
Und so habe ich glaube nicht, dass sie über Art des Schreibens sprechen
die runde Funktion.
Wahrscheinlich hat sie nur gemeint, wie es zu benutzen.
Implementieren bedeutet, ein bisschen wie zu schaffen.
So allgemein ist eine Zeit, wenn wir die Runde Funktion verwenden möchten I
meine, irgendwie, zum Beispiel,
wenn Sie runden möchten.
Können Sie mir ein bisschen mehr Kontext, was die
Problem war?
PUBLIKUM: Um die Ungenauigkeiten der Dezimalstellen zu vermeiden
indem sie ein Schwimmer.
LEXI ROSS: Yeah.
Also die Frage mit Schwimmern, dass wir solche angedeutet ist
dass wegen der Art, wie sie in der Maschine gespeichert sind,
sie sind nicht 100% genau in der Weise, dass Sie vielleicht denken
Ihrem Rechner speichern würden ihnen.
Es ist schwer für mich ein Beispiel, ohne zu wissen zu zeigen, was
der Kontext aus.
Ich weiß nicht, denken Sie, kann von etwas, Dan?
>> Dan Bradley: Also, wenn Sie für, sagen wir, Zahlen gefragt
mehr als 10 und Sie sind mit Schwimmern, und du bist das Hinzufügen eines
mit einem Schwimmer jedes Mal, wird es manchmal warten, bis Sie
bekommen bis 12, bevor er sagen werde ist dies tatsächlich eine Reihe
größer als 10 ist.
Floats haben einige ernsthafte Probleme nur zwischen dem 32.
und 33. Dezimalstelle, die werde gehen, so könnte es 9,9999999 oder
es könnte 10.0000001 sein, richtig?
Es ist nicht wirklich zwischen den beiden zu unterscheiden, so dass, wenn Sie
Warten auf Dinge größer oder gleich 10 ist, könnten Sie
nicht dort, was Sie denken, ist die 10. Wiederholung.
Man könnte es sich in der 11..
LEXI ROSS: Im Grunde ja.
Wenn Sie über eine Menge von Schwimmern Looping, das ist, wenn die
Ungenauigkeiten passieren.
PUBLIKUM: Ich denke, also im Grunde ist es wie auf der p
gesetzt, es will Sie die Float-Wert runden, und wenn Sie setzen in
4,24 für die Höhe der Änderung, die Sie zurück, wenn Sie gerade tun
mal 100, wird es tatsächlich in 423 ändern -
Dan Bradley: Manchmal, ja.
PUBLIKUM: Also ich denke, es ist wie, wie Sie die Runde
Funktion im eigentlichen Code zu machen, damit es nicht tun?
Dan Bradley: Also, wenn Sie Rundung 424 durch Multiplikation
mit 100 und damit in eine ganze Zahl, wird es manchmal
machen es 423 wegen dieser Ungenauigkeit.
Und so Dinge, die Sie tun können, ist fügen Sie einfach 0,0000003.
PUBLIKUM: Aber ich glaube, eigentlich wollen sie
uns zu nutzen die Runde.
Dan Bradley: Die round-Funktion?
Es ist wahrscheinlich eine mathematische Funktion, etwas in der
Mathematik-Bibliothek.
PUBLIKUM: # include math.
Dan Bradley: # include , und es gibt
wahrscheinlich ein round-Funktion.
PUBLIKUM: Genau wie round () -?
LEXI ROSS: Im Grunde, weil man zu runden möchten
den nächsten Cent.
Dan Bradley: Lasst uns ziehen Sie die man-Seiten.
So ein handliches Werkzeug, wenn Sie nicht wissen -
Sie ziehen das Terminal -
ist, wenn man den Menschen math.
LEXI ROSS: Cool.
>> So können Sie sehen, so ist der Mensch kurz für manual, nicht der Mensch, und
ermöglicht es Ihnen, schauen mehr Informationen über ein bestimmtes
Funktion oder Bibliothek, die Sie mit zu tun haben.
Also habe ich nur im Menschen math getippt.
Lassen Sie mich zu vergrößern in.
Dan Bradley: Wir können Menschen rund versuchen, auch.
LEXI ROSS: Sicher.
Dan Bradley: Und das wird eine Liste out -
mann mathematik listet alles, was in der Mathematik-Bibliothek ist,
die wir sind.
Yeah, wir haben auch rund.
LEXI ROSS: So ich habe gerade Mann um.
Sie sehen hier in der Synopse, sagt # include
, das ist also ein bisschen wie cs50.h, stdio.h.
Und es sieht aus wie es tatsächlich ist überlastet, was bedeutet,
dauert es verschiedene Arten von Argumenten, so können Sie rund um
Doppel-oder schwimmt.
Dan Bradley: Round gegenüber roundf.
LEXI ROSS: Roundf.
Haben Zamyla erwähnen roundf gegenüber rund?
PUBLIKUM: In der exemplarischen Vorgehensweise, es war einfach round ().
Dan Bradley: Okay, so dass sie vermutlich mit dem doppelten,
dann, wie mit einem Schwimmer entgegengesetzt.
Okay, so würden Sie mit 100 multiplizieren und dann um ihn herum, und
Sie würden die Zahl am nächsten um es zu bekommen, denke ich.
>> LEXI ROSS: So die Runde Funktion liefert das Integral
Wert am nächsten x Rundung auf halbem Weg Fällen von 0,
unabhängig von der aktuellen Rundungsrichtung.
Also im Wesentlichen, würden Sie wollen, nur rund, wenn Sie an sind
ein Integer-Wert, so dass Sie multiplizieren
100 und dann rund.
Heißt das mehr Sinn machen?
PUBLIKUM: Um diese Funktion in einer C-Datei zu verwenden, benötigen Sie, um
legte runde Schwimmer, wie wenn Ihre Variable heißt q, müssen Sie
legte round (float) q, und dann ein Klammern, oder kann
setzt man um, und dann in Klammern Q?
Dan Bradley: Also, wenn Sie versuchen, um diese Funktion nutzen
Eigentlich würden Sie nehmen, dass q, ein Schwimmer Q,
oder wie wird es erklärt?
PUBLIKUM: Q ist ein Schwimmer.
Dan Bradley: Also, wenn q als float deklariert ist, würden Sie
nur nehmen rund, und dann geben sie q.
Vielleicht haben Sie es als ein Doppelzimmer in diesem Fall zu erklären.
LEXI ROSS: Yeah, es sei denn, Sie roundf verwenden möchten.
PUBLIKUM: Ich konnte einfach roundf und dann q in Anführungszeichen?
Dan Bradley: Nein, nicht in Anführungszeichen, nur q.
PUBLIKUM: Leider nicht in Anführungszeichen in den Klammern.
Dan Bradley: In den Klammern, yeah.
LEXI ROSS: Sorry, das ein wenig verwirrend war.
Noch Fragen?
>> Dan Bradley: Ja?
PUBLIKUM: So Runde nur Runden auf ganze Zahlen?
LEXI ROSS: Ja.
Dan Bradley: Ja, Runde nur Runden auf ganze Zahlen.
PUBLIKUM: Also, wenn Sie wollte etwas genau, dass haben
benötigt, um sein [unverständlich] multipliziert mit 100 und dann
geteilt durch 100 wieder, wenn man wollte -?
LEXI ROSS: Also, wenn Sie es in ein dezimaler Form kommen wollte?
PUBLIKUM: Nun, die beispielsweise zum Beispiel, [unverständlich] Sie
haben 1,25, und dann [unverständlich]
1,24, wenn man wollte zu halten, dass als 1,25, würden Sie
multiplizieren Sie diese mit 100, um ihn herum, und dann teilen sie durch 100
erneut, um 1,25?
LEXI ROSS: Yeah.
Die Frage ist also, da Rundung, wie der Manpage
sagt, rundet auf den nächsten ganzzahligen Wert, bedeutet das
dass man möchte mit 100 multiplizieren, gehen Sie
Rundungen und dividieren durch 100 wieder auf, sagen wir, zu den richtigen
Dollar und Cent Wert?
Und die Antwort ist -?
Dan Bradley: Nein
Ich meine, wenn Sie gerade erst gerade eine Float-Wert, wenn Sie beginnen
mit einem Float-Wert von 1,25, das ist, wie es sein wird
interpretiert.
Also, wenn Sie es mit 100 multiplizieren und dann teilen sie durch 100,
es ist immer noch als 1,25 interpretiert werden, oder
ggf. 1,249 ...
.. 999.
LEXI ROSS: Ich denke, die Frage war wie, würden Sie
multiplizieren, dann rund, dann teilen, so ist es wie -
Dan Bradley: Ja.
Ich weiß immer noch nicht, dass es ändert nichts, though.
Ich denke, es ist still.
LEXI ROSS: Weil Runde tut - sie nutzt Zahlen.
Also, wenn Sie auf 1,25 runden versuchen, bekommst du nur 1.
Also ich denke, um wie die zusätzliche Präzision zu erhalten,
wenn es das ist, was du redest.
>> PUBLIKUM: Also in welchen Fällen verwenden Sie runde, dann?
Dan Bradley: Also in diesem Fall, wenn Sie wollen, sagen wir, die Zahl
Cent von 1,25 $, würde man mit 100 multiplizieren, runde, erhalten
125, und lassen Sie es wie die, als Cent, nicht zu versuchen, im Gegensatz
wandeln es wieder in Dollar und Cent.
LEXI ROSS: Oh yeah, yeah, das ist sicher.
PUBLIKUM: Warum brauchen Sie, um in dieser Runde [unverständlich]?
Dan Bradley: Also, wenn Sie multipliziere es mit 100 und dann
sofort wandeln es in eine ganze Zahl ist, die die weitere
nützliche Form, die, wenn man damit umzugehen ist
Ungenauigkeit, nicht wahr?
So könnte es 124.999999, und so, wenn Sie dann konvertieren, um
eine ganze Zahl, es ist einfach fällt alles aus, die unterhalb ist
das Dezimalsystem.
PUBLIKUM: So gebe Ihnen [unverständlich].
Dan Bradley: Genau, anstelle von 125, das ist
warum Sie runden möchten.
>> PUBLIKUM: Sorry, könnten Sie das wiederholen, was Sie sagten, Sie
sollten, was Sie nicht tun sollten Gegensatz tun?
Dan Bradley: Okay.
Also, was Sie tun sollten, ist, wenn Sie mit 1,25 zu starten, multiplizieren
es durch 100 und dann um diese ganze Zahl, daß 125 oder
124.9999, und erhalten, daß auf die nächste Ganzzahl.
PUBLIKUM: Also, wenn Sie rund um, legt das ist es
zur nächsten ganzen Zahl?
Dan Bradley: Ja.
PUBLIKUM: Gibt es eine Möglichkeit zu begrenzen, wenn Sie nach einem Schwimmer fragen
zu eingegeben werden, gibt es eine Möglichkeit zu begrenzen, wie viele Nachkommastellen
Orte, die Sie Eingang ein Schwimmer kann?
LEXI ROSS: Nicht mit der CS50-Implementierung.
Ich meine, können Sie zählen, wie groß die Eingabe gegeben ist durch
der Benutzer, aber das würde erfordern eine neue Implementierung
der GetFloat, und so brauchen Sie nicht zu bekümmern.
Dan Bradley: Also, wenn sie sagen,, Eingang 1,256, könnten Sie einfach
Verwenden 1,25, oder Sie können 1,26 zu tun.
So oder so, ich glaube, die Umsetzung sagt, dass man -
PUBLIKUM: Sie können einfach haben es rund -
Dan Bradley: Was auch immer es will, ja, so lange wie Sie
irgendeine Art von Rundung.
Sonst noch was?
Hat sich nicht um Rundung sein.
LEXI ROSS: Yeah?
>> PUBLIKUM: Wenn wir wollen, um zu sehen, ob der Stil unserer
Code angemessen ist oder die beste Art
dass es sein kann, ist, dass die Art der Sache, wir würden bringen in
Bereich oder im Büro Stunden, oder ist das die Art von Dingen
Wir können privat posten auf die Sache, auf die Diskussion, und dann
fragen um Rat?
LEXI ROSS: Also tun wir nicht, zu Bürozeiten oder am CS50
Diskutieren, werden wir nicht wirklich verbessere dein p Satz im Voraus
für Stil, aber ich denke, das wohl hilfreich
was Sie tun könnten, wäre, um Beispiele zu sehen, und Sie
sollte in der Lage sein, dass im Abschnitt zu finden, die sein sollte
online vertrieben, sowie die Vorlesungsfolien gibt
Beispiele sollten Code sein.
Aber wenn Sie haben individuelle Fragen zu einem bestimmten
Stil Thema, auf jeden Fall fühlen Sie sich frei, um, dass am CS50 fragen
Diskutieren und Bürozeiten oder auf Ihrer eigenen Zeit.
Aber wenn es mehr ist eine allgemeine Blick auf mein Code, ist es am besten
Art der Nutzung Beispiele und versuchen, Ihren Code zu dem passen.
Und ich glaube, es ist ein Stil Führung auf -
Dan Bradley: Es ist der Style Guide.
Der Styleguide ist genial.
Es lehrt Sie alles, was Sie brauchen, und es deckt ziemlich
viel jedes Beispiel auf den Menschen bekannt, oder zumindest mir nicht bekannt.
>> Sonst noch was?
Gut.
Cool, Jungs.
LEXI ROSS: Have a great day.
Dan Bradley: Danke fürs Kommen.