>> JASON HIRSCHHORN: Willkommen CS50 Abschnitt, jeder.
Mein Name ist Jason Hirschhorn.
Ich bin eine Menge von Ihnen TFs, aber eine Menge von Menschen werden hoffentlich bei uns sein
Online-Erweiterung Studierende oder Studierende versuchen, durch den Bereich aussehen, wenn sie
verfehlten ihr Abschnitt, Woche oder nur aufholen, wenn sie wollten
um etwas Material zu überprüfen.
>> So nach dem Lehrplan, die alle von Ihnen gelesen haben, richtig?
Ich sehe eine Menge von Kopf nickt.
Sections bieten Ihnen Chancen den Kurs erkunden
Material in einer intimeren Umgebung sowie tauchen Sie ein in
Mitmach-Aktionen.
>> Also das ist im Grunde, was wir sind tun werden jede Woche.
Wir gehen durch das, was wir haben, gehen entschlossen, das wichtigste sein
Themen in der Vorlesung abgedeckt, und die, die wahrscheinlich auch sehr nützlich und
am ehesten kommen auf Problem-Sets und in Tests, und in Ihrem Codierung
Leben außerhalb der CS50.
So werden wir in diese Themen gehen, diskutieren sie über sie gehen,
Fragen beantworten Jungs haben, und dann werden wir eine Menge zu tun
Praxis Probleme bei der Codierung.
>> Sie alle brachten Laptops, Das ist fantastisch.
Dies ist ein Informatik-Klasse.
Doch viele der Übungen, die wir tun, Sie müssen nicht Ihre Laptops.
Sie können sie auf ein Blatt Papier zu tun.
Das ist, wie Sie zu gehen tun sie auf dem Quiz.
Und in der Tat, das ist ein guter Weg, um wirklich wissen, dass Sie, wie zu tun
etwas, wenn Sie nicht haben, prüfen 50 bis vertrauen auf oder Stellen zu vertrauen, sagen
Sie machte keine Fehler.
>> Sie sind also, um Code auf der Seite Willkommen Gerät oder run.cs50.net, das ist
ein weiteres Tool, mit dem Sie Code ermöglicht Online, aber ich würde auch empfehlen, wenn
Sie haben es nicht versucht, mit einem Blatt Papier und versucht diese Praxis
Probleme auf ein Blatt Papier.
Da wieder, das ist letztlich was du zu sein
gebeten, sich auf Tests zu tun.
>> So beginnen wir mit unserer Tagesordnung für heute.
Wir werden über einige Normen für gehen unserer Sektion, dann werden wir zu tauchen
in Arrays, Funktionen und Kommandozeile Argumente, ist das, was euch
bedeckt in der vergangenen Woche in der Vorlesung haben und dann Montag, und was Sie decken
mehr von morgen.
Und dann endlich, wir gehen über pset2 sprechen.
Wenn ich könnte ein Handzeichen, wenn Sie nicht auf das Problem Satz zwei sah
Spezifikation.
Wir sagen alle.
Fantastic.
>> Wir erfahren Problem Sätze ein bisschen zu reden, aber wenn Sie lesen das Problem Set
Spezifikation, das ist alles, was Sie tun müssen.
Wenn Sie lesen, bevor Sie zu kommen Klasse und Abschnitt am Dienstag, werden Sie
sein eine große Position.
Wir können durch das Problem Set zu gehen, Das ist, was wir
am Ende tun.
Wir gehen zu durchlaufen die Logik, stellen Sie sicher,
jeder ist auf der gleichen Seite.
>> Ich will, dass du in der Lage sein, bis Dienstag verlassen Gefühl sehr komfortabel mit dem, was Sie
müssen für diese Woche Problem Set zu tun, und wenn Sie dies nicht tun, werde ich glücklich
bleiben nach und arbeiten mit Ihnen.
Aber das ist eine Sache, die Sie haben, um tun, aber ich denke, wäre wirklich smart,
nur zu lesen, das Problem Set Spezifikation nach Klasse am Dienstag,
was es klingt wie ein Viele von euch haben.
>> Ich werde mit einer Tagesordnung beginnen jede Klasse so dass Sie wissen, wohin wir gehen.
Dies ist auch hilfreich, um Leute zu beobachten online, weil jeder Abschnitt
wird farblich codiert, so dass, wenn Sie kommen wollen zurück und beobachten 10 Minuten eher
als die gesamte 90-minütigen Abschnitt, Sie kann nur auf die Farbe codierten Abschnitt gehen
und in diesem Teil zu suchen.
Also habe ich versucht, sie lösen sich in schöner Module, die Ihnen erlauben wird -
wenn Sie wollen, kommen Sie zurück und überprüfen, oder anderen Studenten, die nur
gerade ein Abschnitt zu überprüfen -
um die spezifische Sache finden sie wollen, zu beachten
und mehr darüber zu erfahren.
Sweet.
>> Normen.
Ich bin ein FOP führend auf dem Campus.
Ich weiß nicht, ob jemand tat FOP.
Hat jemand tun FOP?
Eine Person hat FOP.
Zwei Menschen haben FOP.
Awesome.
So FOP ist das erste Jahr im Freien Orientation Program.
Wir nehmen Neulinge in den Wald und machen die meisten magischen Erfahrungen
ihr Leben, nicht wahr?
Ja.
Klingt ungefähr richtig.
>> Also ich wollte nur starten unsere erste Abschnitt mit der Diskussion einige Normen
für die Klasse und unsere Beziehung weil ich denke,
sie sind sehr wichtig.
In erster Linie, wie diejenigen von Ihnen, sind meine Abschnitt erhalten haben und
hat, dass diskutiert E-Mail, I love this.
Das ist mein Lieblings-Teil des Jahres.
Ich war so aufgeregt.
Ich habe hier schon seit Stunden heute.
Ich habe nicht das Gebäude, sofern sie nicht nach links essen gehen, weil ich CS50 Abschnitt liebe, ich
liebe Lehre, liebe ich die Arbeit mit euch.
>> Eine meiner höchsten Prioritäten, wenn nicht meine Priorität Nummer eins, nicht nur für
diese Klasse, aber auch meine anderen Klassen und extracurriculars, ist es,
unterstützt euch und euch helfen, und mein Bestes tun, um sicherzustellen, dass Sie
Jungs haben eine wunderbare, Spaß, produktiv, ansprechende, spannende
erleben in dieser Klasse.
Das ist, was ich bin verpflichtet.
Das ist, warum ich dies tun lieben.
Das ist meine Nummer eins, unterstützen euch.
Wenn Sie Fragen zu Vortrag das Problem Satz, Abschnitt,
Leben, auch wenn Sie wollen, darüber zu sprechen Leben, zögern Sie nicht zu erreichen.
>> Sie haben meine Handy-Nummer, Sie haben per E-Mail
Adresse, haben Sie meine GChat.
Sie erreichen mich unter einem oder allen kontaktieren diejenigen, wann immer, aber wahrscheinlich nicht erhalten
eine Antwort, wenn.
Ich versuche und wieder innerhalb von 24 Stunden.
Oft wird es in sein 20 Minuten oder 24 Minuten.
Ich hätte sagen sollen, dass um es parallel.
Aber Sie werden eine Antwort bekommen ziemlich schnell.
>> Wenn du einen Text mir eine Stunde vor dem Problem ist wegen Satz, werde ich Sie beruhigen
nach unten und machen Atemübungen mit Ihnen, aber wenn Sie haben noch nicht begonnen,
Sie wahrscheinlich nicht bis zum Ende, und Ich kann nicht wirklich helfen, da draußen
obwohl ich werde mein Bestes versuchen.
Also werde ich alles tun, Ich kann Sie dabei unterstützen.
Bitte zögern Sie nicht zu erreichen, ob es ist in Abschnitt wieder in Sprechstunden
wenn Sie mich sehen, oder auch außerhalb.
Ich bin froh, eine Zeit zu treffen und Arbeit durch Probleme
mit oder gehen Sie über Material.
Also das ist die Nummer eins, Unterstützung.
Ich werde alles tun, können Sie unterstützen.
>> Nummer zwei, in der Mitte treffen.
So viel wie ich sein möchte, bin ich nicht allmächtig oder allmächtig oder
allwissend, so weiß ich nicht, die ganze Zeit, wenn das, was ich tue, wird immer
über, wenn die Art, wie ich die Lehre bin Thema hilft Ihnen zu lernen, oder wenn Sie
werden zu einem Thema verwirrt, aber nicht heben Sie Ihre Hand oder fragen Sie mich
oder senden Sie mir eine E-Mail.
Oder auch wenn Sie wieder verwechselt über etwas auf dem Problem-Set.
Wenn Sie nicht erreichen, um mich, Ich kann nicht wissen, dass ist sicher.
Ich werde mein Bestes tun, um zu überprüfen, in auf euch, sicherzustellen, dass alles
gut geht, versuchen, die Dinge in einer Weise zu unterrichten das wird als förderlich für die meisten
Ihre Lernstile, aber wenn es Kann ich irgendetwas tun, lassen Sie es mich wissen.
>> Entlang dieser Linien, wenn Sie wollen etwas Hilfe mit dem Problem Satz, ich bin mehr
als glücklich, Ihnen zu helfen mit der gestellten Aufgabe.
Wir werden eine Menge tun dass in Richtung des zweiten
Hälfte dieses Abschnitts.
Aber wenn Sie noch nicht gelesen haben, das Problem stellt Sichern und noch nicht beobachtete den Fuß
durch und wurden nicht beobachtet der Hose und erwartet mich, Ihnen beizubringen,
alles wurde auf Video aufgezeichnet hat online oder dass man bei CS50 finden
Studie, das ist nicht wirklich fair, mir oder zu Ihren anderen Kollegen.
>> Also bitte, ich bin mehr als glücklich zu helfen Sie, aber Sie Jungs haben mir in treffen
die Mitte.
Wir haben jede Menge Ressourcen für Sie auf CS50.
Ich erwähnte, einige von ihnen.
Bitte nutzen sie.
Wenn Sie verwirrt sind, bin ich mehr als glücklich zu helfen, erklären Sie ihnen in
einen anderen Weg, aber es ist nicht fair, wenn Studenten zeigen sich bei der Bürozeiten
habe nichts angefangen, und es ist Donnerstag Abend und sie erwarten
die TF, um sie durch jeden einzelnen Fuß Sache für das Problem gesetzt durch
mittags am nächsten Tag.
Sinn?
Auch hier bitte treffen uns in der Mitte.
>> Und schließlich, hohe Erwartungen.
Ich werde alle, die Einstufung ist sein in meiner Abteilung, oder Bewertung Ihrer
Problem-Sets.
Sie haben kein Problem zurück gegangen gesetzt Null oder Eins noch.
Leider darüber.
Es dauerte eine Weile, bis uns endlich begleichen Abschnitte, und jetzt
können wir anfangen Einstufung.
>> Ich hole sie zurück zu Ihnen so schnell wie möglich.
Das sind einige meiner advisees draußen.
Ich hole sie zurück zu Ihnen so schnell wie möglich.
Und für zwei Problem-Set, werden wir auf planen und wir anfangen, sie
Sie ziemlich schnell nach Sie machen sie in.
>> Wenn Sie Ihr Problem zurückversetzt, Sie wird Punktzahlen zu bekommen, wie man es von wissen
Lesen Sie den Lehrplan - Korrektheit, Design, Umfang und Stil Partituren.
Sie erhalten auch Kommentare.
Die Kommentare sind wichtiger als die Partituren.
Ich denke, es ist sicher zu sagen.
>> Noten sind nur eine Nummer von eins bis fünf.
Es ist schwer, in denen zu lesen.
Es ist schwer, sich von denen zu verbessern.
Aber die Kommentare darauf hin, spezifische Dinge, die Sie tat gut oder Bereiche
Sie verbessern sich und geben Ihnen einige Ideen für die Zukunft oder alternative
Möglichkeiten, Dinge zu tun.
>> Also bitte, bitte, bitte lesen durch die Kommentare.
Ich habe viel Zeit in diese Kommentare.
Bitte lesen Sie sie und nicht nur Bildlauf nach unten zum Boden des
PDF, für Ihre Gäste suchen, oder gehen Sie online und finden Sie Ihre Gäste, und dann ignorieren
die Kommentare.
Das ist nicht, wie du bist wird immer besser.
Das ist nicht, wie du gehst zu erhöhen Ihre Ergebnisse letztlich nur
Dazu suchen Sie in den Noten.
Bitte schauen Sie sich diese Kommentare.
>> Und entlang der Linie der hohen Erwartungen, wieder, wie ich sagte, Sie
kann von eins bis fünf gewertet.
Zweien, Dreien, Vieren und sind die überwiegende Mehrheit der Werte
du gehst zu bekommen.
Ones und Fünfer sind beide wirklich selten.
Es gibt immer Dinge wir besser machen können.
Immer wenn ich ein Programm-Code, es gibt immer etwas, was ich
hätte besser machen können.
>> Also anstatt zu sagen, erhalten Sie eine fünf die ganze Zeit über alles und tat
alles perfekt, ich glaube nicht, dass irgendein von uns wirklich glauben, dass wir - oder
hoffentlich haben wir nicht alles tun, perfektionieren die ganze Zeit.
Also nicht besorgt sein, wenn Sie nicht bekommen eine fünf.
Ein fünf nicht auf eine Karte, eine vier nicht auf eine B zuordnen, ein Drei tut
nicht auf eine Karte C. Das ist nicht wie die Partituren zu arbeiten.
>> Wie David hat viele Male gesagt, bei Semester Ende alle Ihre Ergebnisse und
Input von mir, Ihre TF, kommen zusammen und bestimmen eine Gesamtnote für Sie.
Aber noch einmal, es ist nicht fünf, A, vier, B, et cetera.
So werde ich hohe Erwartungen haben für euch.
Ich werde gut Problem erwarten Sätze und ich werde Ihnen
Sie Feedback als solche.
Und es ist nicht zu verstehen, du bist gehen, um eine schlechtere Note zu bekommen.
Sie werden in Form von benotet Ihre Fortschritte von Woche
Null, um natürlich am Ende.
>> Und schließlich, im Hinblick auf die hohen Erwartungen in der Klasse, ich liebe, wenn
Menschen beteiligen.
Ich verstehe manche Menschen fühlen sich mehr oder weniger komfortabel teil.
Andere Personen beteiligt sind nicht indem sie ihre Hand und
reden die ganze Zeit.
Aber wir in dieser Klasse sein werden dabei eine Menge kleine Probleme, eine Menge
von Mini-Fragen, und dann einigen größere Probleme Codierung.
Also auf jeden Fall funktionieren diese Übungen wenn wir das tun sie auf Ihrem Computer oder auf
ein Blatt Papier.
>> Aber ich werde Ihnen auch einige Zeit dauern, jemals jemand hat einige beantworten
der Fragen, die ich fragen.
So, da gebe ich Ihnen einige Zeit, um darüber nachdenken, weil wir gehen
die Dinge in Partner manchmal tun, Ich erwarte von jedem
etwas in Eingriff gebracht werden.
Und in Ermangelung eines besseren Begriffs gibt wahrscheinlich cold calling, der sein
ist, wo jeder eine Chance haben über die Antwort nachzudenken, und dann
Ich werde Sie anrufen, und dann Sie sagen, die Antwort.
>> Mach dir keine Sorgen oder über die Angst.
Ich habe es in der Vergangenheit getan und wir haben festgestellt, dass es viel erfolgreicher,
Mehr zum Thema lesen Bildungsforschung darauf zu festzustellen, ob es sich um eine von
gute Taktik.
Es ist sehr hilfreich, vor allem wenn Sie den Studierenden Zeit, um über das denken
Antworten und lassen Sie sie nicht einfach kommen und sagen, es auf Anhieb.
Aber wenn Sie sich nicht wohl fühlen beantworten, ich bin auch ziemlich gut an
spürte, dass aus, und wir gehen nicht setzen Sie auf der Stelle, vor allem auf
die Kamera, auch wenn keiner der Sie sind auf der Kamera zeigen.
>> Das sind also die Normen die ich habe.
Eine weitere Sache, entlang der Linien der in der Mitte treffen.
Ich werde Ihnen Jungs eine Menge Feedback.
Bitte geben Sie mir Feedback.
Es gibt eine Website, sayat.me/cs50.
Also es ist ein ehrliches Feedback.
Wenn Sie wollen, um es während der Sektion geben, Bekomme ich eine E-Mail, wenn es passiert.
Wir nehmen eine Pause in einem Bit, also werde ich Blick durch das Feedback dann.
Wenn Sie jemals eine Rückmeldung, bitte geben sie mir gibt.
>> Wenn Sie mir Feedback über die Q, das ist wunderbar, aber das ist die Führung
dass Sie am Ende zu tun.
Aber das wird am Ende Semester so sein Ich werde nicht in der Lage, alle nehmen, dass
Feedback und schalten Sie ihn in die Lehre euch besser.
Also bitte, wenn Sie welche haben Feedback, gib es mir.
Ich liebe Feedback.
Sichern auf FOP, bekommen wir Feedback die ganze Zeit.
>> Sie können mir Pluspunkte, gute Dinge, Deltas, Dinge, die ich noch verbessern kann.
Sie können sich auf meine Outfits zu kommentieren.
Das wird nicht so hilfreich sein, aber du bist willkommen auf jeden Kommentar und
alles.
Bitte, geben Sie mir Feedback.
Ich schätze es sehr, und es bedeutet mir sehr viel.
>> Eine weitere Norm, Spaß.
Wir werden eine Menge Spaß haben.
Hoffentlich in diesem Kurs erfahren Sie, haben eine Menge Spaß.
Wir Süßigkeiten bei Abschnitt haben.
Wir haben Musik.
Wir werden hoffentlich immer um ein zu kennen andere etwas gut, so will ich
dies ein Spaß, einprägsames Erlebnis sein.
>> Ich weiß, einige von euch haben eingeschlafen gefallen die Vorträge hatten Sie heute früh,
so hoffentlich wird das nicht der Fall sein, jetzt.
Und wenn es jetzt der Fall ist, nur nicht schnarchen, weil das könnte
vor der Kamera erfasst werden.
Sweet.
Haben Sie Fragen, Anmerkungen oder Bedenken bevor ich über etwas bewegen wir haben
darüber gesprochen?
Große.
>> So werden wir zu gehen in Arrays zuerst.
Dies ist, wie Sie ein Array zu machen.
Wir haben dies gesehen.
Sie haben einen Datentyp, müssen Sie ein Namen, und dann haben Sie eine Größe aus.
Genau hier, erstelle ich zwei Arrays.
Die erste ist eine Reihe von Zeichen, und es verfügt über 26 Räume.
Das zweite ist ein Array von Partituren, und es hat drei
Räume für drei ganze Zahlen.
Ja?
>> STUDENT: Sind alle diese Folien irgendwo verfügbar für uns?
>> JASON HIRSCHHORN: Gute Frage.
Die Frage war, sind alle Diese Folien zur Verfügung?
Ja.
Alle diese Folien zur Verfügung stehen wird, und in der Zukunft, werde ich per Email an
Sie vor Abschnitt.
Aber heute, denn dies ist das erste Woche hatten wir einen späten Start.
Also in der Regel erhalten Sie diese Folien, aber sie werden online verfügbar sein und
Ich werde sie Ihnen per E-Mail rechts nach dem Unterricht.
Noch Fragen?
>> Also noch einmal, sind Arrays Boxen, aus Mangel an ein besseres Wort, die mehrere halten
Elemente von einem Datentyp, und sie sind nebeneinander im Speicher.
Und so wieder, das ist, wie Sie machen zwei Arten von Arrays.
>> So, nachdem Sie haben Ihr Array mit gemacht dass erste Zeile - int Partituren, Halterung
drei, Klammer zu - Sie möchte es zu initialisieren.
Sie wollen einige Werte in es gesetzt.
Und dies ist, wie Sie einige Werte setzen in da, nur die Wahl der indice und
Schreiben Sie die Nummer.
Ziehen wir diese auf dem Brett.
Kann jeder sehen?
Jeder kann sehen.
Sweet.
>> Also das wird mein sein Array namens Scores.
Wie Sie sehen können, ist es Größe drei.
Es gibt drei Boxen drin.
Jeder kann passen, was Art der Daten-Typ?
>> STUDENT: Integer.
>> JASON HIRSCHHORN: Eine ganze Zahl in diesem Fall.
Wir schrieben int Partituren, und das erste Wort ist der Datentyp, der los ist
gehen in den Feldern in diesem Array.
So kann ich passen drei.
Warum habe ich Null bis dort auf dem Brett?
Warum heißt es Punktzahl Null gleich 1?
Erinnern mich an Ihren Namen ein.
>> STUDENT: Kurt.
>> JASON HIRSCHHORN: Kurt.
>> STUDENT: Ja.
>> JASON HIRSCHHORN: Warum?
>> STUDENT: Weil der erste Index Null, beginnen wir bei Null zu zählen.
>> JASON HIRSCHHORN: So beginnen wir Zählen auf Null.
Das ist genau richtig.
Dies ist der verwirrende Teil und Willen Reise Sie, vor allem wenn Sie
versuchen, durch Arrays durchlaufen, die wir in ein bisschen zu tun.
Wir beginnen bei Null zu zählen.
Also, wenn ich will, um zum ersten beziehen Box, es ist nicht eine Box.
Leider ist es box Null.
Das zweite ist ein Feld, und in dieser Dabei ist das dritte Feld zwei.
>> Was box drei?
Wo liegt box drei?
Oder wenn ich will Partituren, Halter tun drei, Klammer zu, was ist das?
So sagte der Null-Zeichen.
Jede andere Meinung?
Was ist Punktzahl Halterung drei Halterung?
>> STUDENT: Es ist nicht wirklich existieren, weil Sie nur als Partituren definiert,
Halterung drei.
>> JASON HIRSCHHORN: Also Sie sagen, es existiert nicht wirklich.
In einigen Fällen, wenn wir es zu tun Strings, in der Regel stellen wir eine Null
Zeichen am Ende.
Darauf werden wir in einem zweiten zu bekommen.
Aber in diesem Fall ist keine dritte Box hier.
Also das letzte Feld in einem Array ist Größe minus 1.
Also, wenn wir ein Array der Größe n haben, die erste Feld auf Null, ist die letzte
bei n minus 1.
Und in diesem Fall ist es nicht existieren.
Hier gibt es etwas in Speicher, aber es ist nicht unsere.
Wir besitzen es nicht.
Wir haben nicht darum gebeten.
Also, wenn wir versuchen, darauf zuzugreifen, auf das wir später tun etwas, wir sind wahrscheinlich zu
in Schwierigkeiten geraten.
>> In diesem Fall werde ich meine Initialisierung Array mit drei Variablen.
Wir setzen einen in einem Feld Null, zwei in einer Box, und ein Drei-Box in zwei.
Hat jemand irgendwelche Fragen über die Initialisierung eines Arrays?
>> Also gingen wir über diese gerade jetzt.
Spielstände, Halter drei, Klammer zu, , die nicht existiert.
Wir Null in der Informatik indiziert, so beginnen wir bei Null zu zählen.
Das letzte Feld zur Verfügung zu stellen, ist es die dritte Box, aber es heißt box
Nummer zwei.
>> Unten, das ist eine Alternative Weg zur Initialisierung Arrays.
Also anstatt die Anordnung auf einer Linie, Füllen der ersten Box, dann
die zweite Box, dann das dritte Feld Sie können alles in eine Zeile zu tun.
So in dieser Zeile, beide Arrays.
Dies schafft exakt das gleiche Array als was haben wir hier, aber es
tut es einfach in einer Linie.
>> Jetzt haben wir unser Angebot erstellt.
Normalerweise, wenn Sie ein Array erstellen Sie will etwas mit ihm zu tun, ob
das ist füllen oder Dinge aus ihm heraus und drucken Sie diese auf dem Bildschirm.
In diesem Fall, wir durchleben unsere Partituren Array, das wir auf initialisiert
die erste Zeile hier in grau.
Und dann in der zweiten Zeile beginnen wir Durchlaufen des Arrays.
Hat jemand irgendwelche Fragen über die Struktur einer for-Schleife?
>> Das ist also die for-Schleife.
Wir haben unsere erste Bedingung, und dann unsere Endzustand, und dann werden wir
durchlaufen, i, jede Schleife.
Und in den geschweiften Klammern in dieser für Schleife, was passiert, wenn ich zu laufen waren
dieses Programm?
Kann mir jemand sagen, was wir bekommen?
[? Matu? ?]
>> MATU: Drucken Sie alle Noten in jeder Zeile.
Es wäre drucken jede Partitur in einer separaten Zeile.
>> JASON HIRSCHHORN: Was genau wäre es drucken?
>> STUDENT: Es wäre eine drucken, dann zwei, dann drei.
>> JASON HIRSCHHORN: Genau.
Es wäre ausdrucken eins, dann zwei, dann drei, die jeweils in separaten Zeilen, weil
wir durch das Feld gehen und du wirst sehen, dass die zweite, die printf
Aussage, Partituren i.
Also auf der ersten Runde durch unsere für Schleife, i gleich Null ist, was bedeutet, dass wir
Erhalten Sie den Wert auf Null Punkte -
, die, wenn wir wieder zu gehen unserem Diagramm, ist eine -
und Auffüllen -
oh, es sagt c.
Das sollte% d sein.
Ich will, dass ein bisschen zu beheben, wenn I Hand, die sich um euch.
Aber wir präsentieren eine ganze Zahl, so ist es sollte% d Recht hier zu sein, nicht% c.
Was ist% c für?
>> STUDENT: Charakter.
>> JASON HIRSCHHORN: Persönlichkeit, genau.
Was ist der andere?
Wenn Sie nicht wollen, um% d für eine tun integer, was können Sie tun?
>> Student: Ich.
>> JASON HIRSCHHORN:% i, genau.
Also Fragen über Iteration durch die Anordnung?
So was passiert, wenn wir dies tun?
Statt dessen i kleiner als drei, haben wir i kleiner
als oder gleich drei ist.
Was passiert, wenn wir diesen Code ausführen?
Ja, Annie?
>> STUDENT: Sie gehen zum Ausdrucken weird stuff in der vierten Zeile.
>> JASON HIRSCHHORN: Sie sagte, ist es Drucklegung weird stuff out auf die
vierte Zeile?
Hat jemand eine Antwort auf ihre Frage?
So sind die Chancen, dass, wenn bekommen wir die -
so auf der vierten Runde durch unsere für Schleife, so wie du gedacht, Annie,
es wird Partituren Halterung drei, was sein haben wir bereits nicht gedacht
existieren, und wir werden versuchen, und auf dass, ausdrucken
aus, verwenden Sie es irgendwie.
So wird der Computer wahrscheinlich wütend auf uns.
Du bist genau richtig.
>> Es könnte das Programm ganz zu verlassen.
Es könnte etwas ausdrucken wirklich seltsam.
Sie können nicht sicher sagen.
Quoten sind es wahrscheinlich wütend auf Sie und nur sofort beenden.
>> Aber dies ist ein häufiger Fehler, du musst wo bist du nur durch eine an
das Ende, und das ist ein Fehler, der wird plagen Sie während Ihres Codierung.
Ein Weg, Ich mag zu tun ist, nur auf eine Whiteboard, durch jede Iteration gehen
der Schleife auf der Hand oder auf dem Papier zu sehen was passiert, und dann
Regel machen, oh warte, ich sollte nicht weniger als oder gegangen
gleich drei ist.
Ich sollte an zwei aufgehört haben, das ist was passiert, wenn Ihr Zustand ist weniger
als drei.
Haben Sie Fragen so weit?
Sweet.
>> Also Sie haben alle Ihre Computer geöffnet.
Wir werden Ihnen zwei vor drei Minuten, um ein Programm zu schreiben, dass
erstellt ein Array mit den Zahlen ein durch fünf und dann druckt jede
integer auf einer neuen Zeile.
Und wenn Sie irgendwelche Fragen haben, heben Sie Ihre Hand.
Ich bin froh, vorbei zu kommen.
Wie ich schon sagte, wir nehmen drei Minuten, um dies schreibe.
Ist jeder OK, wenn ich ein zu gehen neue Fenster und schließen Sie das?
>> Es tut mir leid, wenn Sie nicht die Chance hatten zu beenden, aber wir werden es tun
zusammen zeigen.
So auf dem Bildschirm habe ich # include cs50.h, # include stdio.h.
Kann jemand mir sagen, was diese beiden Linien zu tun?
Michael?
>> STUDENT: Dazu gehören die Bibliotheken dass CS50 gemacht und dass Steve hat
gespeichert, damit Sie zu verwenden Ihr Leben leichter machen.
>> JASON HIRSCHHORN: Sie sagten, dass sie die Bibliotheken, eine, die CS50
hergestellt, cs50.h, und eine, die nur Standard, kommt mit
die C-Paket, stdio.h.
Was meinst du zählen die Bibliotheken, obwohl?
Kannst du ein bisschen genauer erklären?
>> STUDENT: Das macht es so, dass man verwenden bestimmte Codewörter a haben
funktionieren, ohne zu gehen geschehen und stellen Sie die Funktion selbst c.
>> JASON HIRSCHHORN: Können Sie mir ein Beispiel geben?
>> STUDENT: Wie printf ist eine Sie verwenden können.
>> JASON HIRSCHHORN: Printf.
So sagte printf ist einer von denen Funktionen, bei denen anstatt
schreiben printf auf eigene Faust, ist printf tatsächlich in stdio.h enthalten, so dass Sie
kann es einfach verwenden, und davon ausgehen, dass es funktionieren wird.
In stdio.h, wenn Sie öffnete die Datei, würde es gehören, wie printf
Werke, die alle den Code für printf?
Warum sind Sie schütteln den Kopf?
>> STUDENT: Weil nur die Header-Datei beinhaltet die Funktion Erklärung.
>> JASON HIRSCHHORN: Genau richtig.
Die Header-Datei enthält nur die Funktion Erklärung.
Also im Grunde, wenn Sie diese kompilieren, Hit Count, die wir in eine tun werde
zweiten, weiß der Compiler, dass, wenn Sie printf printf existiert.
Es wird irgendwo definiert werden.
Es ist nicht ein Problem für Sie verwenden.
Und dann später, wird es gehören die Einsen und Nullen, die tatsächlich enthalten
printf die Umsetzung und verschmelzen sie mit Ihrem Code.
Wie stellen Sie sicher machen es umfasst die Einsen und Nullen für, sagen wir, den String?
>> STUDENT: Holen String ist in cs50.h.
>> JASON HIRSCHHORN: Richtig.
Also, das sagt den String vorhanden ist, die Funktion Erklärung.
Aber dann die Einsen und Nullen, die binäre Datei enthält tatsächlich die
Umsetzung der get-String?
Wie stellen Sie sicher, dass geht mit Ihrem Programm?
>> STUDENT: Führen Sie den Linker in das Kommandozeilen-Argument.
>> JASON HIRSCHHORN: Führen Sie den Linker in der Befehlszeile Argument.
Wie machst du das?
>> STUDENT: Es ist die l-Linie im Klang
>> JASON HIRSCHHORN: Genau richtig.
Sie sagen-l CS50, nicht wahr?
Das schließt die Einsen und Nullen.
>> Student: Aber macht keinen , die für Sie, nicht wahr?
>> JASON HIRSCHHORN: Genau.
Machen Sie macht das für Sie, aber schließlich, Sie werden es nicht haben kann, oder
Sie haben eine eine zu auf eigene Faust, so ist das ein
gute Sache zu erinnern.
Wenn Sie im Begriff waren, eine davon verwenden anderen Bibliotheken, nicht nur Sie haben
zu # schreiben und zählen dann die Bibliothek.
Sie müssen auch darauf verlinken in.
Und diese zwei Dinge sind anders. L-CS50 ist anders
als # include cs50.h.
>> Dann haben wir int main nichtig geschweiften Klammern, und jetzt sind wir, um Code gehen
im Hauptfach.
Die erste Zeile die ich hier habe, ist ein Kommentar das sagt, ein Array
ints mit eins bis fünf.
Was ist ein gutes Wort, um zu beschreiben, was ich haben jetzt auf dem Bildschirm nur
Kommentare im Hauptfach?
Wie nennen wir das?
>> STUDENT: Pseudocode.
>> JASON HIRSCHHORN: Pseudocode.
Danke, Jeffrey.
Das ist genau richtig.
Pseudocode.
Habt ihr Pseudocode gesehen?
Heben Sie Ihre Hand, wenn Sie verwendet haben Pseudocode vor ein Problem stellen.
Über die Hälfte von euch.
>> Ich würde empfehlen, mit Pseudocode zu brechen Probleme in
kleinere, leicht zu abbeißen Stücke.
Auch, wenn Sie den Pseudocode, Sie Ihre Kommentare bereits weitgehend
integriert, so dass Sie nicht haben, um gehen Sie zurück und versuchen Sie herauszufinden,
was Sie taten.
So kann jemand mir diese erste Zeile um ein Array mit ints zu erstellen
durch fünf?
You?
>> STUDENT: Int und dann kann man nennen unabhängig von Anzahl und dann Quadrat
Halterung fünf.
>> JASON HIRSCHHORN: So int Zahlen, eckige Klammer fünf.
>> STUDENT: Gleich und dann geschweiften Klammern.
>> JASON HIRSCHHORN: Gleich, geschweiften Klammern.
>> STUDENT: Eins, zwei, drei, vier.
>> JASON HIRSCHHORN: Eins, zwei, drei, vier, fünf.
>> STUDENT: Und dann geschweiften Klammern und dann Semikolon.
>> JASON HIRSCHHORN: Und lockig Klammern und Semikolon.
Excellent.
Drucken Sie jedes int auf einer neuen Zeile.
Kann jemand anderem geben mir, dass Code, bitte?
[? Matu? ?]
Gehen Sie voran.
>> STUDENT: For (
>> JASON HIRSCHHORN: For (
>> STUDENT: Int i = 0
>> JASON HIRSCHHORN: Int i = 0
>> STUDENT: Semikolon i weniger als fünf.
>> JASON HIRSCHHORN: Semikolon, i weniger als 5.
>> STUDENT: Semikolon, i + +.
>> JASON HIRSCHHORN: Semikolon, i + +.
>> STUDENT: Geschlossen Klammern dann offene Klammer.
>> JASON HIRSCHHORN: Geschlossen Klammern und zwei Klammern.
Innerhalb der Zahnspangen?
>> STUDENT: Und dann printf "% d / n"
>> JASON HIRSCHHORN: Sorry, auf zu halten.
Printf "% d / n, geschlossenen zitieren.
>> STUDENT: Und dann geschlossenen Zitat Komma, count, Halter i.
>> JASON HIRSCHHORN: Comma, Graf, Halterung i.
>> STUDENT: Sorry, Zahlen Halterung i.
>> JASON HIRSCHHORN: Numbers, Halter i.
>> STUDENT: Es tut uns leid.
Und dann Klammern geschlossen, Semikolon.
>> JASON HIRSCHHORN: Geschlossen Klammern, Semikolon.
Ich werde, dass zu speichern.
Wir werden zählt.
Und wie führe ich zählen?
>> STUDENT: Backslash.
>> STUDENT: Dot Schrägstrich -
>> JASON HIRSCHHORN:. / Zählen, genau.
Vielen Dank. . / Zählen.
Eine, zwei, drei, vier, fünf auf neuen Linien.
Sieht aus wie es funktionierte.
Ja, Noah?
>> STUDENT: Man könnte auch kleiner oder tun gleich vier ist, wie i kleiner als
oder gleich vier?
Gibt es irgendeinen Vorteil zu tun, weniger als fünf, oder einfach nur eine andere Art der
Schreiben sie?
>> JASON HIRSCHHORN: Also die Frage ist, dass Sie getan haben könnte i kleiner oder
gleich vier statt i kleiner ist als fünf.
Hätte das die gleiche funktioniert?
>> STUDENT: Es sollte.
>> JASON HIRSCHHORN: Ja.
Es hätte völlig die gleiche Arbeit.
Stilistisch ist es in der Regel weniger als, und Sie werden in einem zweiten, wenn sie sehen
wir Strings, können Sie etwas strlen genannt, was Sie gesehen haben
vor, um die Länge der Zeichenfolge.
Und Sie können nicht weniger als oder gleich strlen.
Sie könnten kleiner oder tun gleich strlen minus eins.
So ist es nur schöner, weniger tun, als strlen.
Ja?
>> STUDENT: Und in der eigentlichen Tests, tun müssen wir Kommentare zu unseren liefern
Code als auch?
>> JASON HIRSCHHORN: Die Frage wurde in Tests, tun Sie
haben, um Kommentare zu bieten?
Also werden wir mehr darüber reden, wenn Quizzes sie kommen, aber im Allgemeinen eine gute
Faustregel ist, wann immer du bist Schreiben von Code, mit Kommentaren versehen.
Wenn Sie den Code falsch, aber die Kommentar rechts, erhalten Sie möglicherweise einige
Kredit sowohl von mir, wenn ich mit einem Gehalt von Sie auf ein Problem am Set oder einem Quiz.
So Kommentare sind immer gut zu stellen.
Sweet.
Zählen.
Hervorragende Arbeit.
Lasst uns weitermachen.
>> Streicher.
Streicher.
Wir haben dies vor dem in der Vorlesung gesehen.
Das hat mich sehr beeindruckt, wenn ich erste fand dies heraus.
Es ist wahrscheinlich nicht jedermanns blasen Sinn hier, aber das ist OK.
>> Strings sind Arrays von Zeichen und sie am Ende mit, wie Sie vorhin gesagt,
das Nullabschlusszeichen, die ist dies / 0 Charakter.
Wenn wir gehen, um eine Zeichenfolge auf die Auslosung Bord, wir ziehen es hier.
Also, wie lange ist diese Schnur?
Entschuldigung.
Wie lange ist diese Schnur?
>> STUDENT: [unverständlich].
>> JASON HIRSCHHORN: Vier?
Warum ist es vier?
>> STUDENT: Weil die fünfte Stelle ist für die Null-Zeichen.
>> JASON HIRSCHHORN: Also die fünfte Stelle ist für die Null-Zeichen.
Also wenn ich zu strlen am laufen dies, wäre es mir vier.
Korrigieren.
Und das Array, obwohl, wenn ich zu Zur Initialisierung des Array, wie viele Plätze
würde ich verlangen?
>> STUDENT: Fünf.
>> JASON HIRSCHHORN: Fünf.
Ich müsste für fünf Fragen, aber ich kann nur vier Zeichen setzen hier
weil ich brauchen, um die null setzen Terminator am Ende.
So werden wir in "ohai" schreiben und legte die Nullabschlusszeichen in am Ende.
Wir werden sagen, dies ist String s entspricht dies.
Was ist s Bracket Null?
s Klammer Null, Annie?
>> STUDENT: O.
>> JASON HIRSCHHORN: O, genau. s eine Halterung?
s fünf Halterung?
>> STUDENT: Existiert nicht.
>> JASON HIRSCHHORN: Existiert nicht.
Genau richtig.
Kühle.
Haben Sie Fragen zu Verständnis Strings als Zeichen-Arrays?
OK, dann.
Eine weitere Programm für euch.
Schreiben Sie ein Programm, das den Benutzer fragt für einen String dann druckt jede
Zeichen auf einer neuen Zeile.
Werfen wir also drei Minuten, um zu schreiben dieses Programm, und dann werden wir es codieren
als Gruppe.
>> Entschuldigung.
Wussten Sie, das zu sehen?
>> STUDENT: Nein
>> JASON HIRSCHHORN: OK.
Lassen Sie uns eine Minute, um diesen Code, oder zumindest darauf loszulegen.
>> So kann man weiter arbeiten, aber ich werde Zum Anfang durchläuft es.
So wie früher, habe ich auf dem Bildschirm # Include cs50.h, # include stdio.h.
int main nichtig.
In geschweiften Klammern die wichtigsten, habe ich zwei Kommentare, Pseudocode.
Eines ist fragen Sie nach einem String vom Benutzer.
Die zweite ist Ausdruck jeder Zeichen auf einer neuen Zeile.
So Anna, kannst du mich fragen für eine Zeichenfolge vom Benutzer?
>> STUDENT: Printf.
>> JASON HIRSCHHORN: Printf?
>> STUDENT: Ja.
(
>> JASON HIRSCHHORN: (
>> STUDENT: "Gib mir einen String.
>> JASON HIRSCHHORN: "geben mir ein str - oops -
String.
>> STUDENT: / n ") Semikolon.
>> JASON HIRSCHHORN: Beenden Sie die Zeichenfolge, geschlossenen Klammern, Semikolon.
>> STUDENT: Ja.
Und dann nächste Zeile, string s = get-String.
>> JASON HIRSCHHORN: String s = get-String.
>> STUDENT: Ja.
Und dann ()
>> JASON HIRSCHHORN: ()
>> STUDENT: Semikolon.
>> JASON HIRSCHHORN: Semikolon.
Fantastic.
Also werde ich einen String zu erhalten und Ich werde um sie zu speichern, was?
Was ist die Variable namens die Sie erstellt haben?
>> STUDENT: String s.
>> JASON HIRSCHHORN: Die Variable ist als S.
Es ist Typ String.
Genau.
Das nächste, was wir wollen, ist ausdrucken jedes Zeichen in einer neuen Zeile.
Wer kann mir diesen Code?
[Unverständlich]?
Kannst du es mir?
>> STUDENT: Sicher.
>> JASON HIRSCHHORN: Lassen Sie uns es tun.
Und sorry.
Ich mag es nicht zu wiederholen, was Sie sagen, weil Sie es richtig, aber ich
haben, um es so zu wiederholen, dass, wenn sie transkribieren diese, können sie alle
der Text auf der Transkriptionen.
So können Sie einfach weiter reden.
Leider habe ich um es über Sie sagen.
Es tut mir leid, aber -
>> STUDENT: Das ist in Ordnung.
Für int i = 0
>> JASON HIRSCHHORN: Für int i = 0
>> Student: Ich weniger als -
>> JASON HIRSCHHORN: Semikolon.
>> STUDENT: Davor können wir setzen ein Variable so erhalten Sie int Länge des Namens?
>> JASON HIRSCHHORN: Oh, tun Sie nicht wollen das Semikolon zu setzen?
OK.
Also, was wollen Sie nach Null zu tun?
>> STUDENT: Ich möchte das erhalten String-Länge von s und
gesetzt, dass auf eine Variable?
>> JASON HIRSCHHORN: OK, so wie ich das tun?
>> STUDENT: Sie brauchen also int length =
>> JASON HIRSCHHORN: Innenlänge =
>> STUDENT: S-T-R-L-E-N.
>> JASON HIRSCHHORN: S-T-R-L-E-N -
>> STUDENT: von S.
Brackets.
>> JASON HIRSCHHORN: (s).
>> STUDENT: Und dann denke ich, muss man setzen Sie ein Semikolon zwischen den beiden ints.
>> JASON HIRSCHHORN: Ein Semikolon nach Null?
>> STUDENT: Yeah.
Dann setzen Sie ein Semikolon danach, und Sie sagen, ich weniger als die Länge.
i weniger als die Länge, die ist die Variable.
>> STUDENT: Und dann Semikolon.
>> JASON HIRSCHHORN: Semikolon.
>> STUDENT: i + +.
>> JASON HIRSCHHORN: i + +.
Es ist unser for-Schleife.
OK, in der for-Schleife.
>> STUDENT: Und dann printf tun.
>> JASON HIRSCHHORN: Printf.
>> STUDENT: Brackets.
>> JASON HIRSCHHORN: Klammern, Anführungszeichen.
>> STUDENT: Klammern, Anführungszeichen,% c / n.
>> JASON HIRSCHHORN:% c, OK.
>> STUDENT: / n.
>> JASON HIRSCHHORN: / n.
>> STUDENT: Geschlossen Anführungszeichen.
>> JASON HIRSCHHORN: Geschlossen Anführungszeichen.
>> STUDENT: Comma.
>> JASON HIRSCHHORN: Comma.
>> STUDENT: S.
>> JASON HIRSCHHORN: S.
>> STUDENT: i Bracket.
>> JASON HIRSCHHORN: i Bracket.
>> STUDENT: Und dann geschlossen Klammern.
>> JASON HIRSCHHORN: Geschlossen Klammern.
>> STUDENT: Und dann Semikolon.
>> JASON HIRSCHHORN: Semikolon.
Fantastic.
Also lasst uns diese speichern.
Machen Sie buchstabieren.
Oh boy.
Ich habe ein paar Fehler.
Erste Fehler in Zeile 11, heißt es: Ausdruck erwartet, und es gibt
mir ein Fehler, dass die zweite int, da ist der Fehler.
Es gibt einige Fehler dort herum.
Weiß jemand, was das ist Fehler?
Kurt?
>> STUDENT: Ich denke, es soll werden ein Komma und kein Semikolon.
>> JASON HIRSCHHORN: OK, ein Komma anstelle von einem Semikolon.
So ist, dass alles, was wir beheben müssen?
>> STUDENT: Nein
>> JASON HIRSCHHORN: Was müssen wir beheben?
>> STUDENT: Wir müssen string.h gehören.
>> JASON HIRSCHHORN: Include string.h.
Wo muss ich gehört, dass?
>> STUDENT: Gleicher Ort Sie auch das andere Zeug, richtig
nach gehören stdio.h.
>> JASON HIRSCHHORN: Mal sehen, ob diese läuft erstens, weil in der Regel, wie ich
eine Sache zuerst zu beheben, und führen Sie dann , und dann sehen die Fehler, die wir bekommen.
So werden wir, um das Terminal zu löschen mit Kontroll-n, lassen Sie Zauber machen.
Also ein weiterer Fehler in Zeile 11.
Erwartete Semikolon.
Und ich bin noch immer Fehler auf dieser Linie.
So hat es nicht gegeben mir eine Fehlermeldung, dass es versteht nicht, was strlen ist,
aber es gibt mir Fehler auf diese Linie, so was ist falsch?
Markieren Sie?
Marcus.
>> STUDENT: Haben Sie zu entfernen das zweite int Erklärung?
>> JASON HIRSCHHORN: entfernen die zweite Int.
Lassen Sie uns dieses zu versuchen.
Jetzt deaktivieren Sie das Terminal.
Machen Sie buchstabieren.
Fehler.
Implizit erklärt Bibliothek Funktion strlen.
So, jetzt wir sehen, dass Fehler.
Was brauchen wir, um mit einbeziehen?
>> STUDENT: String.h.
>> JASON HIRSCHHORN: Include string.h, wir # verstehen sich inkl. string.h an der Spitze
auf dem Bildschirm.
Lassen Sie uns zu retten, machen buchstabieren.
Jetzt zusammengestellt.
Also noch einmal, die Dinge, die wir brauchten, um erinnern Linie 12 in unserer for-Schleife, wenn
wir sie eingerichtet, int i = 0, length = strlen (s).
>> Dies ist eine fantastische Strategie.
Der Stil ist toll, das Design ist toll.
Wir können in diesen Gründen gehen später, aber auf diese Weise müssen Sie nur aufrufen
strlen einmal statt jedes einzelne Mal, wenn Sie durch die Schlaufe.
Allerdings müssen Sie ein Komma dort zu verwenden, und Sie brauchen nicht erneut int.
Wenn Sie erklären sowohl die Variablen zusammen, Sie
brauchen nicht erneut int.
Und dann, wenn du gehst, um strlen verwenden, Das ist eine andere Bibliothek
Funktion nicht enthalten in stdio.h oder cs50.h machen
sicher, dass Sie string.h.
Kurt?
>> STUDENT: Also dann, wenn Sie nicht brauchen, um sagen, welche Art Länge ist, bedeutet das
, es muss ein int sein?
Sie könnten nicht zwei verschiedene Typen gibt?
>> JASON HIRSCHHORN: So könnte man haben zwei verschiedene Arten.
Länge ist ein int hier, though.
Länge ist ein int, weil es ist Komma und dann die gleiche Sache.
>> STUDENT: So ist es davon ausgegangen, dass es geht das gleiche wie das erste sein?
>> JASON HIRSCHHORN: Genau.
Wir gehen nicht, dies jetzt zu tun, aber Sie können zwei Variablen auf die zählen
gleichen Linie mit einem Datentyp.
So int x, y schaffen würde zwei Variablen.
So int x, y, wenn wir zu machen, gibt es mir eine unbenutzte Variablen x und y, weil
wir nutzen sie nicht.
So setzen vor Leere ist nur ein Phantasie Trick, wenn Sie nicht verwenden
etwas, um es zu benutzen.
Aber wie Sie sehen, erstelle ich x und y auf der gleichen Linie mit einem Komma.
Es ist die Schaffung von zwei ganzen Zahlen recht.
Also ja, durchaus möglich, zu schaffen zwei Dinge auf der gleichen Linie
getrennt durch ein Komma.
Lasst diejenigen loswerden, though.
>> Also gibt es Bann.
Danke Jungs für die Codierung ist es für uns.
Machen wir es noch einmal, führen Sie es.
Gib mir einen String.
[Unverständlich], hast du das meiste davon.
Was ist der String?
>> STUDENT: Hallo.
>> JASON HIRSCHHORN: Hallo.
H-E-L-L-O, jedes Zeichen in einer Zeile.
Sieht gut aus.
Lassen Sie sie erneut ab.
Immer wollen prüfen für Eck-Fällen.
Was ist eine gute Ecke Fall ist zu prüfen?
>> STUDENT: Eine Zahl?
>> JASON HIRSCHHORN: Eine Reihe.
Also werde ich in 1 gesetzt, und es druckt 1.
Es ist nicht zu fragen für Briefe, so es scheint, wie Nummern arbeiten.
Gute Ecke Fall zu prüfen.
Was ist ein weiteres gutes Ecke Fall ist zu prüfen?
>> STUDENT: Eine leere Zeichenkette.
>> JASON HIRSCHHORN: Hm?
>> STUDENT: Wie eine leere Zeichenfolge.
>> JASON HIRSCHHORN: Leere Zeichenfolge.
Also lasst uns nicht in etwas setzen.
Und was wird ausgedruckt?
>> STUDENT: Nichts.
>> JASON HIRSCHHORN: Nichts.
Scheint, wie es funktioniert.
Sie könnten versuchen, mehr Grenzfälle, aber Regel Zahlen, ist eine andere Daten
groß, um zu versuchen, ebenso ist nichts.
Nichts, null, sind immer Negative große Dinge zu versuchen und Dinge, die Sie
sollte Test, Dinge sicherlich testen wir für Anreise und 50 wird zu testen.
Haben Sie Fragen zu spell.c?
>> OK, lasst den Kopf zurück.
Ich habe noch eine Programm für euch zu schreiben.
Es heißt students.c.
Dies ist ein Programm, das den Benutzer fragt, fünf Namen, wählt dann zufällig
und druckt einen der Namen.
Dieses Programm ist ein wenig beteiligt als die letzten beiden schrieben wir,
also warum nehmen wir nicht fünf Minuten kodieren sie einzeln, und dann werden wir
kodieren sie als Gruppe.
>> Dieses Programm auch um einige Dinge Sie dürfen nicht vor gesehen haben, also wenn
Sie haben eine Frage zu, wie zu tun Ich das tun, heben Sie Ihre Hand.
Ich werde kommen und zeigen Sie in die richtige Richtung.
Aber wir tun es auch, weil diese wird ein guter Weg, um einige einzuführen
Themen, die schwierig sind.
>> So funktioniert es, nicht wahr?
>> STUDENT: Yeah.
>> JASON HIRSCHHORN: Wenn Sie in einer Kurve Problem-Set, gibt es viele Möglichkeiten, um zu tun
, aber einige sind elegant als andere.
Lassen Sie uns tauchen in.
# Include cs50.h.
# Include stdio.h.
int main Leere, geschweiften Klammern.
Innerhalb der geschweiften Klammern, Ich habe zwei Anmerkungen.
Die erste ist, fragen Sie die Benutzer für fünf Namen.
Das zweite ist, nach dem Zufallsprinzip wählen und ausdrucken einer der Namen.
So machen wir den ersten, fragen der Benutzer für fünf Namen.
Wer hat den Benutzer für fünf Namen gefragt und kann mir sagen, wie man das macht?
Nur zwei Menschen haben den ersten Teil.
Drei Leute haben den ersten Teil.
Vier, fünf.
Tom, wie Sie es tun?
>> STUDENT: Sie würden einen String deklarieren und dann Name, Halterung fünf.
>> JASON HIRSCHHORN: String nennen Halterung fünf.
Also, was ist diese Linie zu tun, string name Halterung fünf?
>> STUDENT: Sie würde erklären ein Array von Strings.
>> JASON HIRSCHHORN: Dies ist ein Array von Strings.
Wie viele Saiten gehen um hier passen?
>> STUDENT: Fünf.
>> JASON HIRSCHHORN: Fünf.
Excellent.
Wir werden es nennen Namen, weil werden wir mehrere diejenigen bekommen.
OK, nächstes?
>> STUDENT: Und dann haben Sie haben eine for-Schleife -
>> JASON HIRSCHHORN: For-Schleife.
>> STUDENT: - für i = 0 ist.
>> JASON HIRSCHHORN: for (int i = 0.
>> STUDENT: Semikolon.
>> JASON HIRSCHHORN: Semikolon.
>> Student: Ich weniger als fünf.
>> JASON HIRSCHHORN: ich weniger als fünf.
>> STUDENT: Semikolon.
>> JASON HIRSCHHORN: Semikolon.
>> STUDENT: i + +.
>> JASON HIRSCHHORN: i + +.
>> STUDENT: Und dann geschlossen Klammern.
>> JASON HIRSCHHORN: Geschlossen Klammern und dann einige geschweiften Klammern.
Innerhalb der geschweiften Klammern?
>> STUDENT: Und dann printf.
>> JASON HIRSCHHORN: Printf.
>> STUDENT: Offene Klammern name% d.
>> JASON HIRSCHHORN: Wie bitte?
>> STUDENT: Name.
>> JASON HIRSCHHORN: Name.
>> STUDENT: Und dann Leerzeichen und dann% d.
>> JASON HIRSCHHORN: Name, Raum,% d.
>> STUDENT: Und dann / n, und dann geschlossen.
>> JASON HIRSCHHORN: Also Name, Raum, % D / n, geschlossenen Klammern.
>> STUDENT: Comma, i + 1.
Es tut mir leid.
Geschlossen Zitat, und dann Komma, i +1.
>> JASON HIRSCHHORN: Geschlossen Zitat, Komma, i +1.
>> STUDENT: Ja.
Und dann die nächste Zeile -
>> JASON HIRSCHHORN: i + 1.
>> STUDENT: Ja.
Und dann die nächste Folie ist i Halterung Namen.
>> JASON HIRSCHHORN: Nächste Zeile ist i Halterung Namen.
>> STUDENT: = get-String.
>> JASON HIRSCHHORN: = Get -
Hauptstadt G-E-T -
String.
Oops, sorry.
>> STUDENT: Open, geschlossenen Klammern und dann -
>> JASON HIRSCHHORN: Offen, geschlossen paren.
>> STUDENT: Semikolon.
>> JASON HIRSCHHORN: Semikolon.
OK, so dass Sie initialisieren die Anordnung der Strings, Namen, und dann durch ein zu gehen
for-Schleife, und fünfmal ausdrucken einige Eingabeaufforderung für den Benutzer und dann speichern
fünf Saiten.
Hat jemand irgendwelche Anpassungen an das?
Tom, ich glaube, jeder stimmt mit Ihnen.
Sieht ziemlich gut.
OK.
Warum hast du das i +1, obwohl?
>> STUDENT: Ich meine, nicht zu sein, aber i +1, so dass es
Namen zu nennen, eine fünf.
Andernfalls wäre es Name sein null bis vier nennen.
>> JASON HIRSCHHORN: Also hast du i +1 denn sonst wäre es
ausgedruckt null bis vier, weil das ist, wie Computer zu denken, aber Menschen
nicht wirklich so lesen.
Das ist eine andere Sache Ihnen begegnen.
Manchmal, wenn Sie etwas ausdrucken für den Benutzer, werden Sie wollen, dass es ein
bisschen hübscher, und dabei i +1 in diesem Fall ein
Weg, um es hübscher.
>> Ich sehe auch fünf zweimal, string name fünf ist, ist i weniger als fünf.
Ich weiß, wo Sie die fünf einsehen.
Du hast es mir erzählt Sie fünf Namen.
Aber wenn wir wollten, um den Code zu machen ein bisschen mehr robust, eine Sache, die wir
tun konnte, ist hier draußen, außerhalb von int, könnten wir so etwas wie dies zu tun,
# Define, und wir tun könnten NAMEN 5.
>> Also im Grunde, wo ich schreibe Hauptstadt N-, Kapital-A-, Kapital-M-, Kapital-E,
Hauptstadt S, dass die String-, ersetzt dass mit 5 im Code.
Oder lassen Sie nennen es einfach - wir nennen es einfach NUMBER.
Also ich bin die Definition aller Kappen NUMBER bis 5 sein.
>> So, jetzt, wo ich die Nummer 5, I kann es mit allen caps NUMBER ersetzen.
Und nun, wenn ich will, um die Nummer zu ändern von Namen, ist alles, was ich tun müssen,
diese eine Zeile, Zeile vier, wo ich # Define Nummer 5, das zu ändern, 10,
oder dass zu 4 ändern.
Wenn Ihr Code länger wird, bist du nicht gehen, um an all die Orte, die Sie
gestellt, wie viele Namen man wollte, und in Damit Sie nicht auf eine verpassen, ist dies
ein guter Weg, es zu tun, um etwas zu finden bis oben und dann benutzen Sie einfach diesen Satz
überall in Ihrem Code.
Marcus?
>> STUDENT: Ist das stilistisch bevorzugten als global definiert ein
Konstante n?
>> JASON HIRSCHHORN: So ist, dass stilistisch als global bevorzugt
Definieren einer Konstante n?
Sie sagen also, Sie könnten tun, int number = 5?
>> SCHÜLER: Haben sie Konsonanten in C oder nein?
>> JASON HIRSCHHORN: Oder const - in gleich.
Sie sind also nur sagen, eine globale Variable?
>> STUDENT: Yeah.
>> JASON HIRSCHHORN: So stilistisch es gibt keine unbedingt eine richtige
zu beantworten, aber diese beiden sind besser als nur werfen diese zufällige
Zahlen im gesamten Code.
Wir nennen sie magischen Zahlen.
Wenn ich mir den Code oder wenn irgend jemand durch sie zu lesen, sie
wollen nicht nur diese Zufallszahlen , die keinen Sinn machen.
Auch die Zahl 26, die im Allgemeinen die Anzahl der Buchstaben im Alphabet,
es ist besser, ALPHABET definieren up top und speichern Sie die Nummer 26 in dieser Zeichenfolge,
wenn das Sinn macht.
>> Oder auf ein Problem eingestellt, anstatt - wieder, wir haben nicht darüber reden zu
die Zeit, sondern nur zu werfen in einer 25 oder einer 10 überall, können Sie
speichern Sie die Nummer 25 als Viertel oder 10 als DIME, und das macht es einfacher für
wer auch immer durch den Code zu lesen, um verstehen, warum Sie diese Nummer wählte.
Und auch für Sie, wenn Sie schon immer einmal Aktualisieren Sie den Code, macht es ein bisschen
robuster.
Ja?
>> STUDENT: Ist dieser Code auch gehen zur Verfügung stehen, für uns nach?
>> JASON HIRSCHHORN: Alle diese Codes dass wir zusammen sind geschrieben
gehen, um an Sie geschickt wird Jungs und verfügbar.
Ja.
Also fragen Sie den Benutzer für fünf Namen.
Zufällig wählen und drucken einer der Namen.
Wer hat diese Linie?
Dies ist der schwierigste Linie hier.
Es tut uns leid, Tom.
Sie haben einen wirklich guten Job, aber ist dies ein bisschen verzwickter.
Marcus, go ahead.
>> STUDENT: Nun zunächst, wirst du müssen stdlib.h und time.h. gehören
>> JASON HIRSCHHORN: Also Sie sagen, bei die Besten, sind zwei weitere Bibliotheken.
Du willst mich zu S-T-D-L-I-B gehören dot H, Standard Library, und was
war der andere?
>> STUDENT: time.h.
>> JASON HIRSCHHORN: # include time.h.
Das sind also zwei weitere Bibliotheken.
Ich nehme an, jetzt sind wir vorhaben, werden mit Funktionen, die in dieser enthalten sind,
zwei, weshalb Sie brauchen, ist zu ihnen gehören?
>> STUDENT: Also, zunächst sind Sie gehen zu wollen, srand schreiben.
>> JASON HIRSCHHORN: Srand.
>> STUDENT: (Zeit (0)
>> JASON HIRSCHHORN: Es tut uns leid.
Srand (time (
>> STUDENT: 0.
>> JASON HIRSCHHORN: 0.
>> STUDENT:)), Semikolon.
>> JASON HIRSCHHORN: Another geschlossenen paren?
Semikolon.
Ich werde nur ersetzen Ihre Null mit NULL.
Es wird über die gleiche Sache zu tun, aber im Allgemeinen, werden Sie sehen, NULL, welche
wir werden darüber reden Linie in einer zweiten.
>> STUDENT: Stilistisch besser?
>> JASON HIRSCHHORN: Generell Menschen Recht NULL, aber dasselbe.
>> STUDENT: Und dann int Namen.
>> JASON HIRSCHHORN: Int Namen.
>> STUDENT: =
>> JASON HIRSCHHORN: =
>> STUDENT: Rand.
>> JASON HIRSCHHORN: Rand.
>> STUDENT: ()
>> JASON HIRSCHHORN: ()
>> STUDENT: Modulo-Nummer.
>> JASON HIRSCHHORN: Was ist Modulo?
Der Charakter?
Das Prozentzeichen?
>> STUDENT: Prozente Charakter.
Modulo NUMBER, dass Sie oben definiert.
>> JASON HIRSCHHORN: Modulo NUMBER.
>> STUDENT: Und dann Semikolon.
>> JASON HIRSCHHORN: Semikolon.
>> STUDENT: Und dann neue Zeile printf.
>> JASON HIRSCHHORN: Printf.
>> STUDENT: (
>> JASON HIRSCHHORN: (
>> STUDENT: "
>> JASON HIRSCHHORN: "
>> STUDENT:% s / n
>> JASON HIRSCHHORN:% s / n
>> STUDENT: "
>> JASON HIRSCHHORN:% s / n "
>> STUDENT: Comma, Raum-Namen.
>> JASON HIRSCHHORN: Space -
>> STUDENT: Oh, ich denke, was haben wir nennen es hier?
>> JASON HIRSCHHORN: Wir nannten es Namen.
>> STUDENT: Offene Halterung Namen.
>> JASON HIRSCHHORN: Offene Halterung Namen.
>> STUDENT: Geschlossen Halterung.
>> JASON HIRSCHHORN: Geschlossen Halterung.
>> STUDENT:)
>> JASON HIRSCHHORN:)
>> STUDENT: Semikolon.
>> JASON HIRSCHHORN: Semikolon.
OK, lasst uns zu retten.
Lassen Sie uns diesen Code.
Students.
Lassen Sie diesen Code ausführen.
Students.
Nicht. / Schüler. . / Studenten.
Nennen Sie eine.
Wir sagen, David.
Nennen Sie zwei, RJ.
Nennen Sie drei, Rob.
Nennen Sie vier, Lucas.
Nennen Sie fünf, Joseph.
Und dann druckt Joseph wieder.
>> Also lassen Sie mich dies wieder laufen.
Lass es mich tun die gleichen Namen.
David, RJ, Rob, Lucas, Joseph.
Und es gab mir David diesmal.
Also tat ich das Gleiche, aber es gab mir eine andere Sache, und das ist
weil, natürlich, wir bitten für einen zufälligen Namen.
Also ich denke, von mir wandern Basis durch den Raum, dass die meisten Menschen
Wahrscheinlich hat den ersten Teil richtig, Einrichten dieses Array und dann immer
alle Namen.
Ich freue mich über die Leitungen 10 bis 16 sprechen.
Aber Zeilen 18 bis 21 sind wahrscheinlich Einige Dinge, die Sie noch nicht gesehen haben, bevor,
also lasst uns durch diejenigen gehen.
>> Diese Linie, srand Zeit NULL ist im Wesentlichen -
sorry, lasst uns nach unten springen eine Linie, rand ().
Das gibt Ihnen einen Zufallszahlengenerator, eine Zufallszahl.
Und wenn Sie ein Mann rand getroffen, die viele von Ihnen haben -
M-A-N Raum R-A-N-D -
in dem Endgerät wie dieses M-A-N Raum R-A-N-D, drücken Sie Enter.
Sie kamen zu dem Handbuch und Lage wäre, dass die rand lesen
Befehlsausgänge num pseudo Zufallsbytes nach dem Aussäen der Zufallszahl
Generator einmal.
>> Also das ist eine Beschreibung.
Das ist, was rand gibt nicht Sie eine zufällige Zahl, wenn
Sie rufen diese Funktion.
Leider ist es nicht wirklich zufällig denn wenn man einfach anrufen zufällige
ohne es einige Samen, einige Ausgangspunkt, es wird immer wählen
die gleiche und es nutzt eine Formel um das nächste zu bestimmen.
Also, wenn Sie rand rufen, wird es nur geben Sie die gleiche Sache.
Es wird sehr vorhersehbar.
Es ist eigentlich nicht zufällig sein.
>> Also, was wir tun müssen, pro Marcus Anweisungen an mich waren Samen rand
mit etwas anderem, das ist, was die srand Funktion tut.
Es Samen rand mit etwas ein bisschen mehr zufällige als die gleiche Sache, und
er Säen es mit der Zeit NULL, welche ist, nur durch Konvention, die aktuelle
Zeit in Sekunden.
>> Sie sind also davon aus, dass nicht jeder ist gehen, um den Code an der exakt ausgeführt
gleichen Sekunde, so ist es eine sichere Wette, dass Zeit NULL ist, anders zu sein
jedes Mal, wenn dieser Code ausgeführt wird.
Sichere Wette, dass damit srand wird Saatgut rand mit jedem etwas anderes
einzelne Zeit.
So durch Konvention, wenn wir wollen, dass ein Zufallszahlen, schreiben wir diese Linie,
srand Zeit NULL, um uns eine viel mehr Zufallsgenerator, und dann laufen wir
rand, das gibt uns einen Zufallszahlengenerator.
Ja?
>> STUDENT: Können Sie sagen, was du meinst durch Samen?
>> JASON HIRSCHHORN: Samen als in -
rand so wird eine bestimmte Anzahl auswählen und es geht um einige verwenden
Formel um dorthin zu gelangen.
Also es geht um mit etwas zu beginnen und dann wieder in etwas basierend
Aus dieser Formel.
Wenn Sie schon immer geben sie die gleiche Sache, es ist immer dabei, es in die Kurve
dasselbe.
So dass die erste Sache, die Sie ihm ist die Saat.
Sie wollen also, um ihm etwas anders zu beginnen mit, und so ist es
wird es in etwas anderes verwandeln.
>> Und schließlich, Zeile 20, Dies wird als%
Modulo, und das ist verwirrend.
Das ist etwas, das ein wenig ist hier anders, dass man nicht wirklich
haben im wirklichen Leben math.
Aber im Grunde, wenn Sie einen riesigen Anzahl und teilen Sie in C, was
passiert mit dem Rest?
>> STUDENT: Es wird abgeschnitten.
>> JASON HIRSCHHORN: Es wird abgeschnitten.
Also 20 geteilt durch 3 ist was?
Was bedeutet das für Rückkehr Sie, 20 durch 3 geteilt.
Sorry, 10 durch 3 geteilt.
Was bedeutet das für Sie zurückkehren?
>> STUDENT: [unverständlich].
>> JASON HIRSCHHORN: 10 durch 3 geteilt nur Renditen 3, nicht 3 Rest 1.
Also, was 10 modulo 3 gibt ist nur der Rest, 1.
Also, wenn Sie wollte wissen, was 10 geteilt von 3 tatsächlich war, würden Sie
do 10 geteilt durch 3, würden Sie Ihr 3, und dann würden Sie tun 10 modulo 3 und
Sie würde einen 1.
So würden Sie erkennen, dass 10 geteilt von 3 ist 3, Rest 1.
>> Und in dieser Linie, könnte rand sein beliebige ganze Zahl, im Wesentlichen.
So Modulo sagt, teilen sie durch Nummer, die in diesem Fall 5 ist.
Und wenn Sie jemals trennen von einer Reihe, die integer muss immer kleiner sein als
so viele.
Also, wenn Sie von einer Reihe 5 Teilen, der Rest wird immer sein
null bis vier.
Das ist, wie die Mathematik klappt.
>> So dass eine große Anzahl von kleineren moduloed Nummer wird immer zurückkehren
Rest und liefert immer einige Zahl, die kleiner ist als die Zahl, die Sie ist
dividiert durch.
Hat jemand irgendwelche Fragen über modulo, weil es in sehr kommen,
sehr praktisch, so möchte ich sicherstellen, dass jeder versteht es?
Kühle.
Und wir sahen, dass dieses Programm funktioniert.
OK, Bewegung auf.
>> Also das nächste, wir gehen in Serie gehen Funktionen, und wir werden zu gehen
durch den Rest von diesem Zeug ziemlich schnell, weil ich lernen wollen
Befehlszeilenargumente.
So sind im wesentlichen Funktionen, Wie Sie gesehen haben, black boxes.
Sie nehmen die Dinge in die Parameter genannt werden, sie etwas tun, um sie entweder
ändern oder erstellen Sie einige Nebenwirkungen, und schließlich, sie spucken
etwas aus, das ist der Rückgabewert.
Kann jemand mir einen Grund Deshalb möchten wir nutzen Funktionen?
Anybody?
Ein Grund, warum wir Funktionen nutzen möchten?
Anyone?
Ich sah zwei Händen.
Was ist ein guter Grund?
Marcus?
>> STUDENT: Wenn Sie das gleiche rufen Stück Code mehrfach.
>> JASON HIRSCHHORN: OK, wenn Sie das gleiche Stück nennen
Code mehrfach.
Jeff, hast du einen anderen Grund?
>> STUDENT: Just so dass Sie können Code weniger.
>> JASON HIRSCHHORN: Sie können weniger Code.
Richtig.
Wenn Sie möchten, etwas zu tun, eine Menge -
im vorherigen Code, könnte ich geschrieben bekommen Zeichenfolge fünfmal, sondern ein
for-Schleife macht es schöner aussehen und Sie müssen weniger Code zu schreiben.
Funktionen sind eine ähnliche Idee.
Wenn ich will, das Gleiche zu tun, was eine Menge, verschieben Sie sie in einer Funktion und rufen, dass
jedes Mal funktionieren.
Das wird das Ding für Sie tun.
Das ist ein guter Grund um Funktionen zu nutzen.
>> So Anatomie einer Funktion.
Eine Funktion wird in der Regel sehen wie folgt aus.
Es wird mit der Rückkehr zu starten, geben, dann erhalten Sie den Namen ein.
Es dauert die Argumente, sonst bekannt als die Parameter, und im Inneren
diese geschweiften Klammern, werden Sie Ihren Code schreiben.
>> Wir haben eine Funktion eine Menge gesehen.
Das ist main.
Hier ist Haupt überlagert auf dass Anatomie hatte ich früher.
Was bedeutet int hier bedeuten?
Was bedeutet int das?
Wenn ich schreibe int main (void).
>> STUDENT: Return-Typ?
>> JASON HIRSCHHORN: Wie bitte?
>> STUDENT: Der Rückgabetyp.
>> JASON HIRSCHHORN: Int ist die Rückkehr Typ, genau richtig.
Hauptstraße gibt einen int.
Was ist Haupt?
>> STUDENT: Name der Funktion.
>> JASON HIRSCHHORN: Main ist die Name der Funktion.
Genau richtig.
Und nichtig?
Was ist nichtig in den Klammern?
>> STUDENT: Es braucht nicht einem externen Wert.
>> JASON HIRSCHHORN: So nichtig -
Recht.
Innerhalb der Klammern, setzen wir die Parameter oder die Argumente der
Funktion übernimmt, was geht Inneren der Black Box.
Wenn Sie nichtig zu schreiben, du sagst dies geschieht nichts in.
So int main Leere bedeutet Main nehmen nichts in.
>> Innerhalb der geschweiften Klammern, haben wir einige Code, und dann werden wir am Ende sehen
Null zurück.
Was bedeutet Rückkehr Null bedeuten?
Nun, wir sprachen über Rückgabetyp.
Hauptstraße muss ein int zurück.
Das ist, was diese Zeile tut.
Es gibt einen int, null.
>> Natürlich haben wir nicht gesehen, dass viele weil in der Programmierung machen wir mit
Maschinen, die wir tun, und die Compiler verwenden wir heute, Sie
brauchen nicht diese Zeile.
Main ist speziell genug, dass er weiß, wenn Sie das Ende von Haupt-, nur
Null zurück, wenn alles gut gegangen ist.
In der Tat, wenn etwas nicht gut gehen, Haupt wird oft wieder eine andere
Zahl bedeutet, dass etwas ging mit Ihrem Programm falsch.
>> So allgemein, wenn Sie Code zu sehen, Sie schreiben Sie nicht Null zurück, aber es ist gut
zu wissen, dass es hinter dem Geschehen Szenen, weil, wenn Sie schreiben,
Eine andere Art der Funktion, Sie gehen zu müssen
eine Rückleitung.
Wenn Sie sagen, zeig ich werde int zurückgeben, müssen Sie
schreiben etwas zurückgeben.
Wenn Sie sagen, Leere hier auf die Anfang void main Leere, für
Beispiel, dann ist es nicht wieder nichts - Leere bedeutet nichts -
so brauchen Sie nicht, dass Rückleitung.
Aber haben Sie schon etwas schreiben, das ist nicht erlischt für den Rückgabetyp, müssen Sie
eine Linie, die Rückkehr und dir sagt brauchen, um etwas dort zu setzen
sich auf den Typ.
Haben Sie Fragen dazu?
Sweet.
>> Scope.
Dies ist etwas, was wir haben berührt auch.
Jede Variable, wie wir wissen, hat ein gewissen Spielraum, und das ist im Grunde
reden, wo die Variable oder nicht referenziert werden.
Und Ich mag sagen, was passiert, in geschweiften Klammern bleibt
innerhalb der geschweiften Klammern.
So zum Beispiel, wenn wir uns diesem Code definieren wir eine globale Variable
außerhalb der Haupt-, int a, hier oben an der Spitze.
Wir nennen ein anderes int a im Hauptfach.
Wir haben einige mehr geschweiften Klammern, und nennen wir noch ein int.
>> Wir haben drei eine der im Code.
Dies sind nicht die gleiche Sache.
Ich habe drei verschiedene Variablen erstellt.
Dann innerhalb dieser inneren geschweiften Hosenträger, sage ich ein = 4.
Welche eine ist, dass es um die erste, die zweite,
oder die dritte?
>> STUDENT: Der dritte.
>> JASON HIRSCHHORN: Es spricht über das dritte.
Alle diese eine ist eigentlich sein kann sprach über die in diesem besonderen
etwa weil ihre Tragweite geht alles in diesen innersten geschweiften Klammern.
Allerdings, wenn Sie anrufen Dinge auf die gleiche Name, es ist etwas versteckt genannt.
So müssen Sie nur behandeln oder zu beheben oder verwenden Sie die jüngsten Variable oder die eine
Nähe zu finden.
Also hier drinnen, ist diese dritte eine Nähe zu dieser Linie, a = 4, so dass es
betrifft die dritte.
Und die letzte Zeile ist, a = 2, worin A dass das Sprechen über, der ersten, zweiten,
oder dritten ein?
>> STUDENT: Zweiter.
>> JASON HIRSCHHORN: Es spricht um die zweite ein.
Natürlich ist die dritte eine am nächsten ist es in dem Code, der dritte ein
nicht außerhalb existiert diese geschweiften Klammern.
Wenn Sie zu diesem geschlossenen geschweiften bekommen Klammer, es ist wie es ist weg,
Wesentlichen.
Also die beiden einzigen noch übrig sind diejenigen, zwei erste und nun natürlich
es ist der zweite am nächsten.
>> Also das ist eine gute Sache, erinnern über Umfang.
Zum Beispiel, ich bin sicher, Sie begegnet diese in eine do while-Schleife.
Wenn Sie initialisieren die Variable in die Do While-Schleife und dann zu versuchen,
Zugang nach draußen, werden Sie wahrscheinlich bekam eine Warnung wie diese
Variable existiert nicht.
Das ist, weil der Umfang Idee, dass die Dinge existieren nur
innerhalb dieser geschweiften Klammern.
Geschweifte Klammern sind wie eine riesige Umarmung, dass Sie Ihren Code geben, ist ein weiterer
Weg, um darüber nachzudenken.
>> Also das ist eine weitere Funktion, etwas für euch zu Code, hellofunction.c.
Wir werden, dass die jetzt übersprungen, aber Dies ist etwas, das ich Sie ermutigen,
üben auf eigene Faust.
Schreiben Sie ein Programm, in dem Haupt-Anrufe Eine weitere Funktion, die aus druckt ein
Gruß an den Benutzer.
Es ist im Wesentlichen unter Hallo Welt und abstrahiert, dass printf in
eine andere Funktion.
Aber wir gehen nicht zu, dass gerade jetzt tun weil wir nicht so viel Zeit
gelassen, wie ich es mir gewünscht hätte.
>> So Funktions-Deklaration.
Wir haben dies sowohl vor als auch gesehen.
Wenn Sie möchten, um eine andere Funktion zu schreiben, Sie müssen wissen, lassen Sie den Computer und
Haupt wissen, dass es existiert.
Also, was wir oben main, schreiben wir die Rückkehr Typ, der Name und die
Parameter, und klicken Sie dann unten main, hier unten, wir eigentlich diese Zeile kopieren
und schreiben Sie dann den eigentlichen Code.
Also auf diese Weise, wenn Sie die Funktion in Haupt an der Spitze, weiß, dass Haupt-
hello vorhanden ist, zum Beispiel, wenn ich zu nennen hallo, und dann sieht es aus, um
die Umsetzung unten.
Was passiert, wenn ich diese nicht enthalten line up top, nichtig hallo (void)?
>> Wenn ich nicht diese Zeile und die wichtigsten Anrufe hallo, ich bin
gehen, um eine Fehlermeldung erhalten.
Ich werde einen Fehler, da bekommen der Compiler nicht weiß,
dass dieses Ding existiert.
Dies ist ähnlich, warum wir Sie # include cs50.h.
Was im Wesentlichen cs50.h tut setzt den String dort oben.
Es setzen sich int dort oben.
Es ist Aufbietung all jene Funktion Prototypen bis vor den Hauptmahlzeiten, so dass bei
Sie nennen sie in Haupt-, Haupt-weiß dass diese Dinge existieren.
Das ist, was diese. H-Dateien zu tun.
Und so, wenn du gehst, um Ihren eigenen Funktion, haben Sie, um sicherzustellen,
Sie setzen, dass Prototyp dort oben.
Fragen zu diesem so weit?
>> Befehlszeilenargumente.
Dies ist, was wir bis zum Ende auf, und dann hoffe wir sehen
drücken in einigen pset.
Ich weiß nicht, ob wir in der Lage sein werde zu drücken dass in wegen der Zeit, sondern
mit euch, die hier sind, und wenn Sie Jungs wollen zu sagen, nach ein bisschen, wir
kann über sie nach draußen gehen.
Aber wir werden mit Abschluss Befehlszeilenargumente
für die letzten 15 Minuten.
Wir wach, Michael?
Du bist wach?
Gut.
Ich weiß nicht, ob Sie schlafen mit geschlossenen Augen.
Es würde schwierig sein.
>> Befehlszeilenargumente.
Das sind ein Weg, um Informationen weiterzugeben in ein Programm.
Irgendwann werden wir anderen begegnen.
Aber im Grunde, wir gehen zu stoppen Schreiben int main (void), wenn wir wollen
nehmen einige Kommandozeilen-Argumente.
Wir werden diese Sache schreiben genannt int main (int argc,
String argv, Klammern.
Das ist verwirrend.
Das ist eine Menge von Briefen, die nicht in Menschen Englisch, so dass wir zu gehen
entpacken Sie sie jetzt.
>> Argc steht für Argument count -
und wieder, werden alle diese online verfügbar sein -
und das ist die Anzahl der Argumente.
Argv steht für Argument-Vektor und das sind die Argumente sich.
Es ist ein Array von Strings.
Wir haben tatsächlich eine Reihe gesehen von Strings vor heute.
Wir haben einen in der letzten Programm, das wir codiert.
>> Also hier ist ein Beispiel.
Ich schreibe. / Ohai CS50 Abschnitt auf meinem Befehlszeile.
Argc in diesem Fall gleich 3.
Argv Klammer 0 ist ohai, argv Halterung 1 CS50 ist, ist argv Halterung 2 Abschnitt.
Wieder ist argc die Anzahl der Argumente, und Reise, die Sie ein wenig
bit, wir zählen immer den Namen des Funktion als erstes Argument.
So dass in diesem Fall gibt es drei Argumente, den Namen der Funktion
und dann die zwei, die ich eingegeben in.
>> Als nächstes werden wir diejenigen sparen Argumente selbst in argv.
Und wieder, wie wir bereits gesehen haben, haben wir dies im letzten Programm, das wir codiert.
Sie können durch die Anordnung von bewegen argv und erhalten diese Saiten.
Das ist im Wesentlichen, was wir haben bei das Ende unserer letzten Programm.
Wir wählten eine zufällige Namen und ging dann zu Namen Klammer was auch immer und gedruckt
aus der Zeichenfolge dort angesiedelt.
>> Am Anfang nur einen Array, weil Strings sind selbst Arrays, wie
gesprochen, können Sie Arrays von Arrays, das ist
im Wesentlichen, was argv ist.
Eine Möglichkeit, die Sie denken können dies Zeilen und Spalten.
Ich kann dieses Recht jetzt zu ziehen.
So argv -
das ist nicht gelöscht.
Lassen Sie uns unter ohai ziehen.
>> Also, wenn ich schrieb, ohai CS50 Abschnitt Ich werde abschneiden
Abschnitt für dieses Beispiel.
Aber im Grunde, mein mehrdimensionalen Array ohai CS50,
wir werden Sekte zu tun.
Also hier kann ich auf -
wenn ich nur eine Nummer geben argv -
das ist falsch.
Was ist los in diesem Diagramm?
>> STUDENT: Start bei Null.
>> JASON HIRSCHHORN: Es sollte beginnen bei Null.
Ich sollte wohl auch drehen, aber da ich es bereits gezeichnet haben auf, ich bin
werde es lassen dort jetzt.
Aber es beginnt bei Null.
Das ist richtig.
Es tut mir leid, wenn diese klein ist.
Könnt ihr sehen Art?
Also, wenn ich argv 0 zu tun, werde ich erhalten alle ohai.
Wenn ich argv 1 zu tun, werde ich alle CS50.
Wenn ich argv 2 zu tun, werde ich alle Sekte.
>> Aber jetzt, wie gesagt, Streicher sind Arrays sich.
Also, was ich tun kann, ist, kann ich diese behandeln als mehrdimensionales Array, und I
kann etwas entlang der Linien von tun argv 0, 0, das gibt mir genau die
Zeichen 0.
Argv 0, 1, was mich gerade h gibt.
Argv 1, 3, die mir gerade 0 diese hier unten in CS50.
>> So, da Strings selbst Arrays sind, wir setzen
dass in einem anderen Array.
Wir haben jetzt Array von Arrays, und wir indizieren können in unserer ersten Array und
dann Index in unserem zweiten Array.
Und wie man es erwarten würde, das machen wir nur darum, diese beiden -
wir tun die eckigen Klammern nur direkt miteinander.
Also in diesem Beispiel ist argv 1 CS50 und argv 1, 2, wie gesagt, ist nur 5.
Hat jemand irgendwelche Fragen über mehrdimensionale Arrays?
Sie Kerle erledigen awesome.
Sweet.
>> So haben wir ein anderes Programm genau hier, und das ist das letzte, was wir sind
werde jetzt zu tun.
Deshalb möchte ich Ihnen, ein Programm zu schreiben, dass nimmt einen vollen Namen des Benutzers, zwei und nur
zwei Kommandozeilen-Argumente, und schließlich, auszudrucken einen Gruß an die
Benutzer, schließt ihre Vornamen.
Warum nimmst du nicht drei oder vier Minuten, dies zu tun, und dann gehen wir
darüber als eine Gruppe, und dann werden wir einpacken?
>> Und wieder hier, wenn wir sagen, nehmen eine vollen Namen des Benutzers nach der Beschreibung
dieses Problems sollte Kommando Argumente, nicht mit den String.
Ja, Marcus?
>> STUDENT: Also, wenn Sie sagen, zwei Befehl Argumente ist, dass zusätzlich zu
. den / laufen oder -
>> JASON HIRSCHHORN: Gute Frage.
Do, einschließlich der. / Run, drei Befehlszeilenargumente.
Oder auch das. / Personalisiert, in In diesem Fall, denn das ist die
Namen dieser Datei.
So würde argc drei sein.
Aber ich möchte nur zwei Argumente auf das Programm.
Ich sollte angeben, dass.
Ich werde dafür sorgen, dass der Wandel bevor ich schreiben diese und senden sie an euch.
>> STUDENT: Was, wenn Sie haben einen zweiten Vornamen?
>> JASON HIRSCHHORN: Wenn Sie einen Mittelweg Namen, du bist kein Glück.
Es tut mir leid.
Oder wenn Sie nur von Shakira zu gehen, du bist auch kein Glück.
Ja?
>> STUDENT: Also wenn die Leute nicht haben cs50.h, definieren sie argv
als char argv Sterne?
Oder ist es immer noch als String argv?
>> JASON HIRSCHHORN: Ja.
So String wieder maskieren wir über das, was genau dort geschieht.
Das wird vielleicht entpackt werden am Mittwoch, aber bald.
Es ist wie Stützräder.
Denn im Wesentlichen ist es dasselbe.
>> Werfen wir also noch eine Minute zu programmieren dies, und dann werden wir gehen über
es als Gruppe, und dann wie ich schon sagte, einpacken.
Und ich denke, sie sind immer noch zusätzliche Bonbons, so sollte euch hoffentlich nehmen
Das, oder nehmen Sie bitte, dass.
>> Sorry, wenn du noch schreiben, aber ich will tauchen in und wir
kann es zu beenden zusammen.
So habe ich in schriftlicher, # include cs50.h, # include stdio.h.
int main (void), geschweiften Klammer, lockig Klammer, in drei Zeilen
Pseudocode, werfen Sie einen vollständigen Namen des Benutzers, zwei und nur zwei Befehlszeile
Argumente, ausdrucken einen Gruß an die Benutzer, schließt ihre Vornamen.
>> Also das erste, nehmen Eine vollständige Name des Benutzers.
Wer kann mir helfen eines Benutzers voller Name?
Wie mache ich das Teil?
Habt ihr tun, dass erste Teil?
Nehmen Sie eine vollständige Name des Benutzers.
Nun, für diese eine Befehlszeile Argument, was soll ich schreiben?
Was sollte ich über Änderungen meiner Funktion Erklärung?
>> STUDENT: Sie wollen nicht es für nichtig mehr sein.
>> JASON HIRSCHHORN: Genau.
Ich will es nicht für nichtig.
Was will ich es sein?
>> STUDENT: Int argc.
>> JASON HIRSCHHORN: Int argc.
>> STUDENT: String argv.
>> JASON HIRSCHHORN: String argv.
>> STUDENT: Halter, Halterung.
>> JASON HIRSCHHORN: Halter, Halterung.
Das ist genau richtig, und das ist tatsächlich, wie ich werde, um
Eine vollständige Name des Benutzers.
Sie werden es in es gesetzt.
So, dass man fertig ist.
So jetzt will ich zwei und nur zwei Befehlszeilenargumente.
So Noah, was ist eine Möglichkeit, ich kann überprüfen Sie die Nummer des Befehls
Argumente habe ich?
>> STUDENT: Sie tun eine if-Anweisung.
>> JASON HIRSCHHORN: Wenn Aussage, genau.
Was muss ich als Bedingung wollen?
>> STUDENT: Wenn argc größer als 3 ist.
>> JASON HIRSCHHORN: Wenn argc ist größer als 3 ist.
Wenn argc größer als 3, was soll ich tun?
>> STUDENT: Zurück 1.
>> JASON HIRSCHHORN: Zurück 1.
Wird sicherzustellen, dass ich zwei und nur zwei?
>> STUDENT: Nein
Wenn argc ist größer als 3 und weniger als 2 ist.
>> JASON HIRSCHHORN: Wenn argc größer als 3 und argc kleiner als 2 ist.
Was ist in einer Art, wie ich dies in nur schreiben kann eine Leitung, oder ohne dass
und Booleschen Operator?
>> STUDENT: Es ist nicht gleich 2 ist.
>> JASON HIRSCHHORN: Wenn argc nicht gleich 2 ist.
Genau.
Also, wenn argc ist nicht gleich 2 ist, dass wird mir dieses Programm,
personalisiert, wenn ich es laufen, und das wird mir, wie viele
Befehlszeilenargumente?
Wie viele werde ich prüfen?
>> Entschuldigung.
Lassen Sie mich umformulieren, dass.
Wenn argc = 2, hat, wie viele Dinge der Benutzer in die Zeile zu schreiben?
>> STUDENT: One.
>> JASON HIRSCHHORN: Nur eine.
Also, bevor, du hattest Recht, Noah.
Was brauche ich wirklich brauchen, um dort zu setzen?
>> STUDENT: Das entspricht 3.
>> JASON HIRSCHHORN: argc nicht gleich 3 ist.
Ich möchte gleich 3, weil ich will personalisierte plus die beiden anderen.
Also, wenn argc nicht gleich 3, 1 zurück.
Warum hast du gesagt zurück 1?
>> STUDENT: Denn das bedeutet, dass es falsch ist.
>> JASON HIRSCHHORN: Das bedeutet, dass es falsch ist, Und was ist das jetzt tun?
>> STUDENT: Re-den Benutzer auffordern.
>> JASON HIRSCHHORN: Es wird aufhören das Programm, so wird es laufen müssen
wieder, aber wir haben noch nichts in hier, um sie erneut zu fragen.
Ich habe nicht danach fragen.
Also das ist genau richtig.
Zurück 1 gerade beendet das Programm.
Große.
>> Und drucken Sie einen Gruß an den Benutzer das schließt ihre Vornamen.
Wie kann ich das tun?
Anna?
>> STUDENT: Printf.
>> JASON HIRSCHHORN: Printf.
>> STUDENT: ("
>> JASON HIRSCHHORN: (
>> STUDENT: "hallo
>> JASON HIRSCHHORN: "hallo
>> STUDENT:% s
>> JASON HIRSCHHORN:% s
>> STUDENT: / n
>> JASON HIRSCHHORN: / n
>> STUDENT: ",
>> JASON HIRSCHHORN: ",
>> STUDENT: Argv
>> JASON HIRSCHHORN: Wie bitte?
>> STUDENT: Argv
>> JASON HIRSCHHORN: Argv
>> STUDENT: Eckige Klammern 1.
>> JASON HIRSCHHORN: Eckige Klammern?
>> STUDENT: 1.
>> JASON HIRSCHHORN: 1.
>> STUDENT: And) Semikolon.
>> JASON HIRSCHHORN:) Semikolon.
Lassen Sie uns diese laufen.
Machen Sie personifizierte.
. / Personalisiert.
Es ist einfach zu beenden.
Warum hat es beenden?
>> STUDENT: Sie haben nicht setzen keine Argumente.
>> JASON HIRSCHHORN: Ich habe nicht Stellen Sie keine Argumente in.
Sieht gut aus.
You guys nagelte ihn.
Also noch einmal, ging man in argv und Sie überprüft zu Beginn argc.
Das sind zwei wichtige Dinge zu erinnern.
So in den letzten beiden Minuten, bevor wir verlassen, werden wir nicht zu pset zwei bekommen, aber
wie ich schon sagte, wenn Sie nach bleiben wollen für 10 Minuten, würde ich ihm gerne gehen
mit euch über die Logik für diese Problem-Sets.
Wir hatten eine Menge zu decken heute so dass ich nicht zu ihnen zu bekommen.
Generell mag ich gehören dass am Ende.
Also, wenn Sie wollen, herum zu haften, bleiben, um für 10 Minuten.
Das machen wir.
>> Dann, als ich am Anfang erwähnt, pset Null und Eins, erhalten wir, dass
Feedback zurück an Sie so bald wie möglich.
Das Ziel ist, ein Feedback zu bekommen pset, Kommentare der Teil,
vor zwei pset fällig ist.
Also, wenn Sie ein paar Fehler gemacht oder stilistisch, könnten die Dinge besser sein,
Sie müssen diese Informationen, so dass Sie nicht die gleichen Dinge tun in pset zwei.
Und dann in der Zukunft, erhalten Sie alle Ihrer pset Feedback und Kommentare
zurück, bevor die nächste fällig ist.
>> Schließlich, wenn ich in ein anderes setzen Stecker für Rückfragen.
Dies ist der erste Abschnitt.
Es war meine erste Abschnitt Unterricht in diesem Jahr.
Gehen Sie dort hin.
Schreiben Sachen, gute und schlechte, und ich werde es verwenden, um
Abschnitt beim nächsten Mal besser.
Und last, wieder, wenn Sie brauchen nichts, lassen Sie es mich wissen.
Ich bin mehr als glücklich, euch zu helfen.
Wenn Sie wollen einfach nur Süßigkeiten, ich werden zusätzliche Süßigkeiten haben.
Ich bin froh, dass es zu Ihnen zu bringen.
>> Das wird eine erstaunliche selbstverständlich sein.
Dies ist eine der, wenn nicht mein Favorit Natürlich, ich habe in meinem ganzen Leben gemacht,
und ich hoffe, es wird sein, dass wunderbar für Sie.
So will ich alles in meiner Macht stehende tun zu machen, dass es fantastisch für Sie.
Ich werde senden Sie eine E-Mail, wenn Sie in meiner Abteilung oder Noah und
werde versuchen, mit jedem planen euch eine Zeit, um über die in
nächsten Wochen so kann ich ein Sinn dessen, was Ihr CS Hintergrund ist,
und es wird mir auch helfen, maßgeschneiderte diese Abschnitte, um Ihren Bedürfnissen besser entsprechen.
Also das ist, was ich bekommen habe aufgereiht.
Wieder werde ich Sie außen sehen Wenn Sie dabei sein wollen.
Das war zwei Wochen Abschnitt.
Danke Jungs so viel.