[Musik zu spielen] ALLISON BUCHHOLTZ-AU: Hey everyone. Willkommen bei Ihrem ersten offizielle CS50 Abschnitt. Wie Sie sehen, sehen, das ist Abschnitt CS50-like, nur nach oben zu ziehen unsere Agenda für heute. Also, wer bin ich, wie ich bin sicher, Sie sind alles fragen. Ich bin dein TF. Ich bin nicht nur eine zufällige Studenten wer die Identität Ihrer TF. Und ich werde zu durchlaufen Art haben Abschnitte fließen, Erwartungen, die wir haben, Ressourcen so weiter und so fort. Wir werden über Arrays reden, ASCII Funktionen, Befehlszeilenargumente, und es ist nicht hier, aber Ich werde auch helfen Sie Art von durchdenken Ihren nächsten pset für diese Woche. Was ich bin sicher, Sie werden alle zu schätzen wissen. Also, zuerst question-- wer ich bin, neben Ihrem überschwänglichen TF hier. Ich bin Alison Buchholtz-Au. Dies ist mein zweites Jahr TFing CS50. Ich habe auch TF CS51 im Frühjahr. Sie könnten wieder dort zu sehen wenn Sie sich entscheiden, es zu nehmen. Ich bin auch ein PAF, so dass jede Freshmen-- und wenn Sie nicht gerade ein Neuling, dies ist mein drittes Jahr als Beratung Kerl. Ich bin sehr in sehr versiert beraten Sie über das Leben und Kurse innerhalb der CS und nicht innerhalb der CS. Ich bin ein Informatik-Konzentrator. Ich bin ein Senior in Adams Haus, beste Haus. Und bevor ich wechselte zu CS meinem zweiten Frühling, Ich war eigentlich ein biomedizinischer Ingenieur. Ich wollte zu Med Schule gehen. Ich wollte ein Unfallchirurg sein. Und das komplett hat verändert, seit ich nahm CS50. Ich nahm das natürlich meine Sophomore Fall. Es war meine erste Einführung in CS je. Ich einer der 78% von Ihnen war, die hatte null Erfahrung kommen in, und es ist völlig mein Leben verändert. Und jetzt bin ich auf Arbeits Microsoft und Ihre schönen TF. Und CS50 ist wahrscheinlich eine der besten Erfahrungen dass ich hier bei hatte Harvard-- sowohl unter die Klasse und in der Lage zu helfen, vermitteln den Studenten wie Sie. Also ich bin wirklich aufgeregt, Sie sind alle hier. Falls Sie in kam spät, es gibt Süßigkeiten, was Sie sich fühlen sollte frei, grab kommen, oder schicken jemanden, der es für Sie zu greifen. Es ist in Ordnung. Ich möchte nicht, dass zu essen. Mein Zimmer hat genug Schokolade, so y'all sollten versuchen, und beenden das. Ich weiß, es gibt 100 Stück, aber wie, 4 Uhr an einem Montag, Ich denke, jeder konnte etwas Zucker verwenden. Also alle, die sind offiziell in meiner Abteilung sollte eine E-Mail bekommen haben von mir mit meiner Telefonnummer, E-Mail-address-- sich bitte an mich auf hinzufügen Gchat, zögern Sie nicht mich auf Facebook, und auch für den Rest von euch, du mich gleich hier per E-Mail können. Es gibt zwei H ist. Jeder tut immer wie zwei L's oder zwei C ist. Zwei H im Nachnamen. Ansonsten, es wird wieder auf die Beine, und Ich werde nicht Ihre E-Mail zu erhalten. So fühlen sich frei, mich zu mailen, , mich jederzeit kontaktieren. Ich möglicherweise nicht zurückerhalten zu Sie innerhalb von 24 Minuten aber ich verspreche, um wieder Ihnen innerhalb von 24 Stunden. Wenn Sie mir eine halbe Stunde vor nennen Ihre pset fällig ist, Sie zu sein wie, Ich habe keine Ahnung, was ich tue Allison. Hilf mir. Ich werde dich zu beruhigen, aber am Ende des Tages, wenn Sie ruft mich eine halbe Stunde vor Ihre pset ist fällig mit nichts geschrieben, Ich werde wie gut sein, vielleicht es ist Zeit, dass ein später Tag benutzen. Also werde ich auf alle reagieren Ihre Anforderungen in einer sehr zeitnah. Mein Handy ist in der Regel meine Hände gebunden. Ich antworte in der Regel viel schneller als 24 Stunden, aber ich kann nur Garantie eine 24 Stunden Antwort. In Ordnung. Also, warum sind wir hier? Auch, wenn Sie Fragen zu haben zu jeder Zeit, lass es mich wissen. Ich rede viel. Ich rede schnell, aber bitte fühlen Sie sich frei, mich zu unterbrechen. Es gibt mir die Atmung Zimmer auch. So Abschnitte sind ein Zeit für uns, wirklich nur Tauchgang in, bekommen einige praktische Erfahrungen, um gehen Sie durch Themen, die wir bereits erwähnt in der Klasse oder in Studienmaterialien, empfehlen wir online, um euch. Und wir werden tatsächlich durchlaufen einige dieser Ressourcen in einem Bit. So einige Notizen auf Abschnitt Unterstützung. CS50-- eine der Sachen, die macht es eine meiner Lieblingsklassen ist das Gefühl, dass du allein bist nie. Wir haben einen Stab von über 100 Leute, die hier sind, um Ihnen zu helfen. Wir haben Bürozeiten Montag bis Donnerstag. Also es gibt so viele Menschen, die liebe die Klasse genauso viel wie ich, und wer wirklich hier sind weil sie hier sein wollen. Die meisten von uns sind Studenten, und dies ist wie eine fünfte Klasse zusätzlich an den Rest der Arbeit. Und es ist eine Menge Arbeit, aber Wir tun es, weil wir es lieben, und wir wirklich lieben zu lehren und helfen Sie teilen unsere Begeisterung für dieses Thema und dieser Klasse. Also bitte nutzen. Kommen Sie mit uns sprechen. Ich einsam, wenn meine Schüler nicht mit mir reden, wenn Sie so wollen, kommen hängen bei mir. Es wird großartig sein. So Schnitt ist offensichtlich eines Ihrer größten Dinge. Wir werden durch die Dinge gehen dass Sie in der Vorlesung gelernt, machen Sie einige kurze Beispiele wenn wir Zeit haben, und in der Regel Art eine Vorstellung über die Dinge Sie denken sollten etwa für Ihr Problem eingestellt. Shorts-- wie viele Menschen tatsächlich sah das Video von Ihrem Kratz kurz? Wer erkennt mich? Das sind also sehr groß. Sie sollten auf jeden Fall beobachten diese. Eine Menge Arbeit wurde in sie hineingelegt worden. Und sie meinte nur, sein wirst mundgerechte Stücke, die Du nur zuschauen für drei oder vier Minuten und ein besseres Verständnis des Konzepts. Gehen throughs-- how viele Leute haben beobachtet Die Wanderung Durchführungen für vorherigen? Zamyla ist erstaunlich, nicht wahr? Wie, ich wünschte, ich wäre Zamyla manchmal. Also auf jeden Fall mit Ihrem Spaziergang Durch. Sie wird es nach unten in die Pause kleine, mundgerechte Stücke. Und wenn man diese riesigen haben Spezifikationen von Ihrem Problem-Sets, es wird wirklich wichtig zu sein der Lage sein, einfach irgendwo zu finden sein zu beginnen und sich langsam durch. Alles klar, wir haben auch Studie50, die ist study50.harvard.edu, glaube ich. Sie können nur Google zu studieren, und es wird kommen. Dies ist einer der besten Ressourcen, die wir haben. Es ist Powerpoints mit Noten und Praxis Probleme für Sie mit Lösungen, die Sie kann tatsächlich durch zu gehen. Also, wenn Sie immer mehr Praxis möchten, mehr, als wir in den Abschnitten oder mehr zu tun als Ihr Problem-Sets, ist dies wirklich ein Ort, den ich empfehlen Ihnen, zu gehen. Es wurde im letzten Sommer gebaut durch einige meiner wirklich guten Freunde. Und es ist erstaunlich. In der Tat, eine Menge der Schieber dass ich mit werden für den Einzelplan wird ab Studie50 kommen. So viel von der TFs verwenden. Und schließlich, wie ich erwähnt, der Bürozeiten. Wenn Sie Probleme haben bei den Hausaufgaben, du bist Probleme mit ein Konzept, komm zu Bürozeiten. Gehen Sie früh in der Woche, wenn Sie können. Raus auf den Quad, denn es ist ziemlich weit. Niemand mag es, draußen zu gehen. Aber es ist zu Ihrem Vorteil, denn dann bist du gehen, um all diese TFs haben, [Unverständlich] umgeben Sie. Und vor allem jetzt, Nur ein Tipp, donnerstags sind sehr Chill jetzt in Mather, weil Ihr psets sind am Donnerstag fällig. Und zu wissen, will verwenden noch Ihren späten Tagen. Also, wenn die Sie haben Probleme mit Konzepten, es gibt viele, die TFs sind da, um Ihnen zu helfen. So kommen, um Mather am Donnerstag. Wenn Sie mich sehen wollen, Ich werde da sein. Ich bin in der Regel tun, meine eigenen Hausaufgaben, denn niemand will meine Hilfe. Also besuchen Sie uns. Treffen Sie uns auf halbem Weg. So wie viele Menschen besucht Vortrag oder sah es online? Wie viele Menschen gingen zu Superschnitt der letzten Woche? Cool. Das ist eigentlich eine ganze Reihe. Wie viele von euch haben lesen Sie Ihre spec für diese Woche, für Ihre pset? Ooh, ich bin stolz auf euch! Mehr Süßigkeiten für y'all. Gut, so was wir meinen, "Treffen Sie uns auf halbem Weg", ist dieser Abschnitt ist wirklich nur geht super nützlich, um Sie zu sein wenn Sie in der Lektüre kommen Sie Ihren Spezifikation für Ihr pset. Weil, wenn ich durch einen Überblick zu gehen Dinge, die Sie sollten Ausschau nach, es wird nicht zu machen so viel Sinn, wenn Sie weiß nicht, was Ihr Problem eingestellt wird sich fragen, was Sie tun. Wenn Sie nicht in Abschnitt kommen, offensichtlich Ich kann es nicht, dass Sie nützlich sein. Ich werde es nicht persönlich, wenn nehmen Sie nicht zu meinem Abschnitt Augenblick gekommen, aber auf jeden Fall sollten Sie. Wenn Sie nicht können, beobachten sie online. Sie sind da für einen Grund. Mine wird gleich da. Wie Sie feststellen, sind wir gerade aufgenommen, so dass es dann genau dort für euch sein. Wie gut, werde lectures-- das ist offensichtlich wo Sie bekommen die Starten Ihres Materials hier. Also ich werde auf jeden Fall versuchen, Ihnen helfen, so viel wie ich kann, aber ich kann nur treffen Sie so weit. Sie müssen Art von Treffen Sie uns auf halbem Wege. Grading-- so, euch alle wer eine E-Mail von mir bekommen, Sie sind meine offizielle Seite. Ich werde mit einem Gehalt von Ihrem psets. Und ich will nur sagen, eine Sache, die Sie sollten wirklich darauf achten, sind die Kommentare. Die Kommentare sind oft nützlich, als die tatsächliche Punktzahl geben wir Ihnen. Und die Kommentare sind eigentlich wo ich viel von meiner Zeit wenn ich Grading. Also ich würde schätzen es, wenn Sie sie lesen. Und sie sind tatsächlich, wie du gehst um mehr über Design und Stil lernen und Dinge, die sind ein etwas weniger geschnitten und trocken. Also wirklich achten auf diese Äußerungen. Wenn Sie Fragen über sie haben, oder Fragen über Ihre Gäste, kommen Sie bitte mit mir reden entweder vor Schnitt, Ich werde wahrscheinlich werden hanging out in der Lobby, oder danach. Wenn Sie planen möchten One-on-One-Meetings, wie Sie kann helfen, später zu verbessern Problem-Sets, lass es mich wissen. Und dann nur ein paar Tipps für euch. Damit wird eines der größten Dinge, Ich betone immer, mein Schnitt wenn Sie lernen, wie man Code ist die Dinge auf Papier zuerst schreiben. Wenn Sie einen Spielplan für haben wo Ihr Code muss gehen und was er braucht, um tun und es ist zusammengebrochen in kleine Stücke von Pseudocode Code, den Sie ausgeschrieben haben, Sie gehen zu weniger sind wahrscheinlich Syntaxfehler machen oder erstellen Sie eine if-Schleife, nicht über ein anderes. Wenn Sie wissen, wo du bist gehen insgesamt, du bist weniger wahrscheinlich diese kleinen zu machen Fehler, die manchmal werden Sie Stunden zu beheben, weil Sie wie sie sind, wo bin ich dabei diese Halterung? In diesem Sinne, nutzen Sie bitte Style50. Vor allem, wenn Sie werde der Bürozeiten, Wenn Ihr Code ist alles umgeschaltet auf eine Seite, es ist natürlich Politik dass wir sagen können, zu beheben so dass es aussieht wie Style50 sagt es sollte, und dann werden wir Ihnen helfen. Also, es wird Ihr Leben leichter machen. Sie macht unser Leben leichter. Jeder ist glücklicher. Jeder bekommt bessere Noten. Ist das nicht das, was wir alle wollen? So schreiben Dinge auf Papier vor Sie jemals berühren Ihrem Computer. Sprechen Sie Dinge auf einem hohen Niveau, und stellen Sie sicher wissen, wohin du gehst. Und wenn Sie sich nicht sicher sind, setzen Sie sich mit jemandem und gehen sie durch schrittweise was Ihr Code tun soll. Und neun von zehn, wirst du sein wie, Oh, ich vergaß, ein, wenn die Bedingung oder ich vergaß ein Semikolon hier oder Ich aktualisiere diese Variable falsch. Also das sind meine Tipps für den Erfolg. So, da etwa die Hälfte von euch freuen wie Sie besuchte Superschnitt, Ich werde einfach bis sehr kurz durch Schleifen zu gehen, die nicht auf unserer ursprünglichen Tagesordnung waren. Aber sie sind wirklich wichtig. Und so bin ich zu Art gehen der Geschwindigkeit durch solche bevor wir in unsere aktuellen Abschnitt. Bevor ich das tue, gibt es jede questions-- logistisch, persönlich ist es alles, was Sie wollen über mich oder über weiß Abschnitt oder Klasse im Allgemeinen? Alles gut? OK, cool. Lovely. So loops-- Ihr solltet alle erkennen diese Stücke aus dem Nichts. Also Schleifen sind im Grunde nur eine Möglichkeit für uns etwas zu tun Einige mehrfach, einige wiederholte Aktion basierend auf einem gewissen bedingten. So haben wir drei verschiedene Typen. Wir haben für Schleife, while und do-while. Also für loops-- wir haben nur ein sehr allgemeine Layout hier einer for-Schleife. Und das ist groß, wenn Sie wissen, wie oft muss etwas auszuführen. Wenn wir über das reden anderen Schleifen, werden Sie sehen, warum das ist ein wichtiger Unterschied. Aber für Schleifen sind für etwas Set. Sie wissen, können Sie entweder Berechnung der Anzahl oder Sie die Anzahl der weiß, dass Sie wollen zu Beginn dieses wiederholt. Also, wenn Sie hier zu sehen, die wir habe nur eine allgemeine Art Skelettrahmen für eine for-Schleife hier. Also für-Initialisierung, das ist, wo Ihre Variablen werden initialisiert. Mit Mario, ich bin sicher, dass Sie Jungs haben so etwas wie int i gleich 0. Das ist, wo das wäre in blau passieren. Sie haben Ihre Bedingung, die ist das, was jedes Mal überprüft. Wenn diese Bedingung wahr ist, dann der Rest des Codes ausgeführt wird. Dann werde es again-- laufen und fragen. Und dann haben wir Update, wo Sie aktualisieren Ihre Variable sind. Also, noch einmal, mit wie Mario, ich bin sicher Sie Jungs haben so etwas wie i plus plus. Also jedes Mal die Schleife lief, bekam ich so aktualisiert dass, wenn wir es gegen die Überprüfung eine Bedingung, wurde es zu ändern. Denn wenn man nur eine statische Variable, wenn es das erste Mal ausgeführt wird, ist es gerade dabei, stufenlos auszuführen. Sie müssen also sicherstellen, dass Sie aktualisieren richtig Ihre Variable. Und wir haben auch nur eine visuelle Darstellung gibt. Jeder gut? For-Schleifen. Sollten diese in Ihrem pset gesehen haben. Cool. Also hier ist nur ein einfaches Beispiel. Drucken Dies ist CS50! 10 mal. Und so haben wir unsere Initialisierung wie wir sehen dort, mit int i gleich 0 ist, für i kleiner ist als 10, und ich plus plus. Und es wird, dass 10-mal drucken. So, während loops-- while-Schleifen sind toll, wenn man nicht unbedingt zu tun müssen wissen, wie oft es würde zu Beginn aktualisieren. Sie müssen nur einige Bedingung, die überprüft hat. Und das könnte so etwas wie while-- sein nehmen wir ein Beispiel aus Ihrer pset. Wenn Mario, Sie versuchen, Eingang eine negative Zahl. Richtig? Sie wurden angeblich Erneute Aufforderung Ihren Benutzer. Man kann also sagen, na ja, wenn die Benutzereingaben etwas kleiner als Null, Wiederaufforderung ihnen. Und ich bin sicher, dass haben könnte etwas gewesen, dass einige von euch in Ihrem Code verwendet. Also ist es eine einfache Sache. Sie haben Zeit, einige bedingte, dass überprüft wird jedes Mal, wenn der Code geht an auszuführen. Wenn es den Wert true, führen wir es. Sonst werden wir nicht tun. Und was ist wirklich important-- etwas, was ich denken, dass David sprach über in lecture-- sind die Hosenträger. Was auch immer im Mittelpunkt der Zahnspange ist, was ausgeführt. Wenn Sie vergessen diejenigen, Hosenträger, ist es nur geht um die Linie direkt sein nachdem der während wurde hingerichtet. Also, wenn Sie drei haben Dinge, die angeblich wann dies geschehen Bedingung true, und Sie nicht über diese Hosenträger, nur das erste, was passieren wird. So sehr bewusst wo ihr eure Hosenträger. Wenn du mit Style50 kleben, Dies wird definitiv helfen Sie. Cool. Das ist also ein Countdown von 10 auf Null. Und wie Sie hier sehen, initialisieren wir einige Zähler außerhalb. Eine Sache, die anders ist, ist wir werden nicht initialisiert unsere variablen innerhalb unserer while-Schleife. Es ist außerhalb davon initialisiert. Wir sind einfach nur darum, die Bedingung für unsere Zeit. Also in diesem Fall, ist es während Zähler größer als Null ist. Und wir drucken, was unserer Zählung ist, und dann verringern wir unsere Variable. Und das ist auch eine andere Sache zu bemerken. Unser Update nicht innerhalb passieren dass erste Teil der while-Schleife. Es wird tatsächlich innerhalb passieren die Hosenträger, der Körper Ihres Textes. So do-while loops-- do-while-Schleifen sind ideal für Benutzer-Validierung. Also einige von euch vielleicht haben auch verwendet werden, dies in Ihrem pset. Man kann sagen, tun, wie, bitten Sie den Benutzer für die Eingabe. Und dann, während, wie, die Eingang ist kleiner als eine bestimmte Anzahl. Also für eine explizite Fall mit Mario, es wäre zu tun printf, geben Sie eine ganze Zahl ist, und dann gleich einige Integer getint. Und dann werden sie tatsächlich dass Code auszuführen ersten. Sie werden tatsächlich eine Art von Ganzzahl. Und dann könnte man sagen, während die ganze Zahl kleiner als null ist. Also, was es zu tun ist, es ist gehen mindestens einmal auszuführen. Es wird, um den Zustand zu überprüfen. Wenn die Bedingung wahr, es wird erneut ausführen. So do-while-Schleifen sind ideal für Benutzer-Validierung, weil Sie den Code kennen wird mindestens auszuführen einmal, während mit While-Schleifen, du bist nicht gewährleistet, dass es werde einmal ausführen. Es wird, um den Zustand zu überprüfen und dann entscheiden, sie auszuführen, während eine do-while wird den Code zuerst ausführen und dann prüfen, ob zu sehen Sie brauchen, um sie zu wiederholen. Ist diese Unterscheidung sinnvoll, alle? Ok. Cool. So dass in diesem Fall ist diese Art von dem, was ich rede, Diese Re-Anweisungen, bis Sie bekommen Sie eine positive Zahl. So wissen wir, dass printf "Geben Sie eine positive Zahl" und tatsächlich fordern, dass Eingang wird mindestens einmal passieren. Wenn der Benutzer ist das Böse und hält Eingabe einer negativen Zahl, die weiß, wie oft es dann auszuführen. Aber dieser Code ist garantiert mindestens einmal auszuführen. Und deshalb ist es großartig für die Überprüfung von Eingabe. Und Sie werden, dass ziemlich viel verwenden. Alle Rechte, Fragen so weit? Wir sind alle gut? Spreche ich zu schnell? Wir sind gut? Ok. Ehrfürchtig So werden wir weitermachen und sprechen über Arrays. Cool. So Arrays sind grundsätzlich nur Datenstrukturen dass es uns ermöglichen, zu speichern Sachen der gleichen Art. Also, wenn Sie jemals ein Array haben, ist es entweder gerade dabei, ints haben oder es ist gerade dabei, Schwimmer haben oder ist es nur geht, um Zeichen zu haben. Du wirst doch nicht um einen int mit haben ein char mit einem Schwimmer mit einem Doppel. Eine Sache. Arrays sind nur eine Größe, oder sie sind nur einen Typ. Hier haben wir also ein Array von Größe drei mit drei ganze Zahlen drin. Sie konnten schwimmt, aber wir sind werde sie ints sagen. So eine Sache zu wissen ist, dass Arrays sind eine feste Größe, wenn Sie initialisieren sie, und sie nicht easily-- werden da Sie alle weniger bequem sind, Sie sollten nur von ihnen denken, wie nicht in der Lage, in der Größe zu erweitern. Allerdings großen Sie sich vorgenommen Ihr Array am Anfang, das ist die Größe, es wird zu bleiben, da Arrays kontinuierlich sind Speicherblöcke. Und wenn du Jungs in etwas mehr wie Speicher tatsächlich aufgelegt Festplatten und im Heap und Stack, es wird ein wenig mehr Sinn machen. Aber man konnte denken Sie nur an, wie, es ist nur eine Reihe von Räumen auf Ihrer Festplatte. Und Sie können nicht garantieren, dass es werde freien Speicherplatz, nachdem es sein. Sie könnten ein Array zu initialisieren drei und dann vielleicht initialisieren weiteres Array von fünf später und es ist direkt danach. Also, wenn Sie in der Vergangenheit vor Ort gehen sollten drei in dieser ersten Anordnung, Sie werden schriftlich über etwas anderes. So Arrays sind-- für euch, nur denken an sie als eine feste Größe. Also die Schaffung eines array-- du gehst zu müssen, um dies zu tun eine ganze Menge. Also in der gleichen Weise, dass wir eine allgemeine Struktur für unsere for-Schleifen, wir haben einen schönen allgemeinen Struktur für unser Angebot. Weil sie von einer Art sind, die ganze Elemente in einem Array sind von einer Art, Sie initialisieren müssen Was diese Art ist. So, wie Sie hier sehen, haben wir eine nette kleine Halterung Datentyp. Also, wenn wir die Schaffung eines int Array wird, dass int. Wenn wir die Schaffung eines char Array, wird es char sein. Wenn wir die Schaffung eines String Array, wird es String sein. Und dann der Name des Array, was auch immer Sie möchten, es zu sein. Also vielleicht ist es die Testergebnisse oder vielleicht es Studenten oder vielleicht ist es Süßigkeiten. Was auch immer Sie sich entscheiden, nennen Sie Ihre Array, das ist, was es sein wird. Und dann in Klammern, werden Sie die Größe, die Sie wollen. Also, wir sind das Speichern 10 Studenten oder Wir speichern 15 Arten von Süßigkeiten? Was nicht. Also in unserem Beispiel hier, schaffen wir ein Array der Größe drei, was ihr Jungs siehe hier auf der rechten Seite. Und wenn wir zuerst initialisieren es, alles auf Null gesetzt. So ist es nur gedacht der wie ein unbeschriebenes Blatt. Wir haben all diese Bereiche sind, haben wir alle Diese Boxen konnten wir unsere Texte einfügen kannst, aber sie sind nur leere vorerst. Also, wenn wir wollen, um tatsächlich ordnen sie diese Werte, wir so tun, wie rechts unter hier zeigt. So können Sie unabhängig von den Namen der Ihre Array ist und dann, was Index Sie wollen. Also der Index bezieht sich nur um, wie, was Schlitz wir auf der Suche. Und eine wichtige Sache zu bemerken ist, dass Arrays sind nullindiziert. Also, wenn wir wollen, dass die erste Platz im Speicher der unser Angebot, es wird null sein. Wenn wir wollen, dass die zweite, wird es sein. Wenn wir wollen, dass die dritte, werde es zwei sein. So weiter und so fort. Das ist auch der Grund, herkömmlich wenn wir für loops-- ich bin mir sicher, euch wundern, warum fangen wir bei 0 gegen 1? Und das ist, weil, wenn wir den Übergang in der Verwendung von Arrays, richtig ordnet sie. Also, wenn Sie wollen, Iteration in eine Anordnung, es macht viel mehr Sinn, do i gleich 0 ist, weil wir wissen, dass wird entsprechen mit dem ersten Platz im Speicher. Jeder gut mit, dass? Cool. Und dann auf dem Boden hier ist einfach Ein anderer Weg, ein Array initialisiert. Sie haben noch Ihre Datentyp und den Namen, aber anstatt tatsächlich Putting eine Größe drin, Sie können nur tun, leere Klammern. Und dann mit diesen geschweiften Hosenträger an der Unterseite, Sie können nur geben Sie die Daten, die Sie wollen durch Komma getrennt. Und das wird automatisch sagen, OK, ich sehe dass Sie drei haben Dinge in diesen Klammern. Also ich weiß, dass ich zu drei zuordnen Speicherblöcke und speichern diese. So ist die erste Version, die Sie nutzen könnten wenn Sie fragen Sie Ihren Benutzer zur Eingabe sind Werte, so dass Sie durchlaufen das Array und ask-- bekommen einige int Eingangs ihnen. Wenn Sie vorher wissen, die Werte, es macht viel mehr Sinn um den zweiten Weg zu benutzen. Aber in den meisten Fällen, können Sie vielleicht nicht wissen, was diese Werte sein werden. Cool. Noch Fragen? In Ordnung. Also Zugriff elements-- so ein der großen Dinge über Arrays ist, dass sie zufällig sind Zugang, was bedeutet, dass Sie nicht haben, um durch jeden Block aussehen. Dass Sie, wenn Sie wissen wollen, was in Block zwei, Sie können nur sagen, gib mir Block zwei. Und das ist, warum diese Indizes sind so wichtig, und das ist, wie wir eigentlich auf sie zugreifen. Also in diesem Fall, wie wir vor, wenn sah wir waren die Zuweisung von Werten, in der einen Vorher hatten wir den Namen und die Index wir wollten, den Zugang, nicht wahr? So in der gleichen Weise, ist das, was wir tun, um tatsächlich zu ziehen, dass die Daten aus. Wir haben den Namen und wir haben Sie den Index, die wir wollen. Also in diesem Fall, die for-Schleife hier unten am Boden, jemand wissen, was es tut, wie es wäre ausdrucken? Mmhmm? Genau. Also ja, es ist nur durch Iteration. i gleich zero-- wir gehen können, ist durch den Code einfach schnell. i gleich Null ist, ist weniger i als drei an dieser Stelle, nicht wahr? So dass auscheckt. Und wir sagen, OK, Druck f was in Temperatur i. i Null ist hier richtig, wenn wir zuerst laufen, so gehen wir in diesem ersten Spot, und wir sagen, OK, 65 ist die Anzahl ausdrucken möchten wir. So dass es dann ausdrucken 65 und dann eine neue Zeile. i wird aktualisiert, so dass es druckt 87. Es aktualisiert wieder, und es wird 30 drucken. Jeder cool? Genial. In Ordnung. So, hier ist irgendwie ein was ich sagen wollte, wie Sie verfolgen jemandes Score und warum Sie den ersten verwenden würden Weg es zu initialisieren anstelle von diesem zweiten Weg. Und das geht nur durch. Und bemerken wir eine Klassengröße von 30 haben. Und wir sind der Initialisierung dieses Array von ints, die der Größe 30 ist. Und dann sind wir Iteration durch und wir sind fragt den Benutzer zur Eingabe Werte für jede dieser und dann die Zuordnung zu eines bestimmten Ortes im Speicher irgendwo in diesem Array. Cool? Ist das sinnvoll, um alle? Mmhmm? So Hashtag definieren Klassengröße 30 ist ein Präprozessordirektive, das bedeutet nur, es gets-- es hat wie der Übersetzungsvorgang zu tun. Sie können darüber denken als globale Variable. Die Art, wie wir es tun, ist typically-- es Ihren Code ermöglicht leichter verändert werden. Also lassen Sie uns sagen, dass unsere Klassengröße plötzlich geht von 30 auf 15, wenn ich es nicht definiert diese Weise würde ich haben, um durch meine gesamte Programm gehen und ändern Sie jede Instanz 30 bis 15. Aber damit, bekomme ich zu einem ändern Ort, und alles andere ändert. Wenn Sie überhaupt tun wollen ein Hash definiert in einem Fall, wo Sie den Überblick über einige festgelegte Anzahl von Partituren für eine Klasse oder Sie verwenden eine Reihe bist die verwendet werden, wie, über einen sehr langen Programm, es ist besser, dass zu Beginn definiert so dass, wenn immer es ändert, erhalten Sie zu einem Ort statt 100 ändern. Ja? STUDENT: Zwischen tun und einfach erklärt [unverständlich] über an der Spitze. ALLISON BUCHHOLTZ-AU: So ist es hat mit efficient-- tun es irgendwie ist außerhalb des Geltungsbereichs was wir in diesem Abschnitt decken. Es hat mehr mit Effizienz zu tun und wie die Dinge wirklich arbeiten im Meldeprozess. Wenn Sie wirklich wissen wollen darüber freue ich mich zu euch senden eine E-Mail mit den Ressourcen über sie. Hash definieren neigt dazu, bevorzugt für die Dinge. Und wie Sie Code besser, Sie Art lernen die Nuancen der, wenn Sie sollten eine Verwendung global gegenüber dem Hash definieren. Aber vorerst, Sie haben nicht wirklich zu befürchten ist dass die kurze Antwort. Jeder gut mit, dass? Und auch, wenn Sie wollen sich für eine Hash zu definieren, es ist wirklich wichtig zu bemerken, dass der Name in Großbuchstaben sein. Wir sind nicht nur dabei Klassengröße dramatisch. Es sollte eigentlich in Großbuchstaben sein. Cool. Alles andere gibt? Wir sind gut? Lovely. Willkommen. OK, so will ich euch mal einen Blick riskieren in diesem und sehen, ob Sie den Fehler zu finden. Ich gebe Ihnen einen Tipp geben. Es ist irgendwo in dieser for-Schleife. Mmhmm? STUDENT: weniger als gleich 2 werden soll. ALLISON: So ist es weniger sein könnte als oder gleich 2 ist, oder weniger als 3 sein könnte. Und was ist die Begründung dafür? STUDENT: Die [unverständlich], 0, 1, 2. ALLISON: Genau. So in einem Array der Größe n wir nur Indizes n minus 1. Cool. Und dann können wir wirklich verrückt bekommen und erhalten Sie mehrdimensionale Arrays. Eines der Probleme, als ich es in meinem Jahr erforderlich mehrdimensionalen Arrays, und ich denke, einer von ihnen erfordern könnten es in diesem Jahr, so bequem sein. Wickeln Sie Ihren Kopf um es jetzt. Es wird wieder zu spuken Sie, aber auf eine coole Art. So dass Sie wirklich nur denken kann von mehrdimensionalen Arrays als Array von Arrays. So können Sie Art denke dieses Spitzen rudern weil der erste Block des Speichers. Und dieses ist das zweiten Teil des Speichers, und die letzte Zeile ist die dritten Teil des Speichers. Und innerhalb dieser gibt es ein Array. Aber natürlich ist es einfacher, , so zu schildern. So ist es Ihnen zu initialisieren die gleiche Weise. Dies ist ein Zeichen, Vorstand der drei mal drei. So können Sie sich drei Reihen haben und drei Spalten. Wir vertreten sie auf diese Weise. Und Sie können es den Zugriff würde Ebenso Spalte für Zeile. Und so 1,1, wie wir hier sehen. Wir vergeben eine Null, Null dort oben. 2,0 und 0,2. Also würden Sie nur zugreifen, wenn them-- jemand jemals linearen Algebra getan, auf die gleiche Weise ein Element zugreifen a matrice, es ist die gleiche Idee hier. So können Sie es zurück zu Mathematik beziehen. Sie müssen nicht zu kümmern viel über dieses Recht jetzt. Es ist gut, um die Exposition zu haben, zu wissen, dass Sie es tun können. Sie können einige erstellen verrückt number-- möglich erstellen verrückt Arrays alles, was ich sagen werde. [Unverständlich] Es wird ein wenig verrückt, aber es ist wirklich cool. Genial. Und dann, so haben wir hier ein Beispiel. Es berechnet eine String-Länge. So wie viele Menschen wussten, dass die Saiten, die Sie verwenden sind nur Arrays von Zeichen? OK, ja. So kann euch denken, dass Sie nicht gebrauchte Arrays vor, aber jederzeit Sie getstring in der Verwendung CSView Bibliothek, du bist eigentlich nur fordern ein Array von Zeichen. Und wir kümmert sich um alle dass in der Back-End für Sie. Aber Sie haben mit Arrays seit Sie begonnen haben. Sie wusste einfach nicht, es noch nicht. Und wenn Sie ein Zeichen-Array haben oder ein Array, das ist die Speicherung einen String, das letzte, was ist immer was genannt Nullabschluss, die dies ist hier richtig. Und das ist am Ende jedes Wort, das Sie speichern sind. Also, wenn wir herausfinden, die wollen Länge einer Zeichenkette, können wir sagen, Nun, wissen Sie, der Inhalt der Block nicht gleich unsere Nullabschluss. Das bedeutet, dass es einige Zeichen gibt, dass wir tatsächlich kümmern, das ist Teil des Wortes. Sie erhöhen Ihre Länge. Und dann, wenn wir eigentlich zu bekommen das Ende des Wortes, es wird enden und es wird unsere Länge für uns zurück. Mmhmm? STUDENT: Ist der Raum zählen als der Nullabschluss? ALLISON: So ein Raum ist kein Nullabschluss. Also, wenn Sie einen Raum haben multiple-- ist eigentlich eine bestimmte ASCII-Wert. STUDENT: Was ist der Ausrufe wieder gleich? ALLISON: Also, das ist, was Sie sich beziehen. Wenn du mich jemals hören in der Bürozeiten, Ich nenne es immer, wie, gleich Knall. So Knall nicht. Das ist also nicht gleich. Also, wenn Sie versuchen, sehen, wenn etwas falsch ist, Sie wissen immer, was auch immer Knall die Variable, und wenn es falsch ist, es wahr ausgewertet und Sie kann coole Sachen zu tun. Mehr dazu später. Cool. Alles gut da? Genial. So, jetzt ist es Ihre Jungs "Zeit zu arbeiten, seit ich sprechen. Deshalb möchte ich Sie nur ein Array zu erstellen die Zahlen eins, zwei, drei, und dann haben sie ausgedruckt. Sie haben nicht zu tun, wie, Haupt, blah, blah, blah, was auch immer. Ich möchte nur, dass du zu initialisieren das Array und erstellen eine for-Schleife, um sie zu drucken out-- oder eine while-Schleife, bis zu Ihnen. Ich werde Ihnen nur ein paar Minuten, daran zu arbeiten. Ich werde meine Stimme ausruhen. Wenn Sie Fragen haben, bin ich glücklich zu kommen um und sprechen Sie mit euch. Fühlen Sie sich frei, um miteinander zu reden. Holen Sie sich mehr Süßigkeiten. In der Tat, ich werde einfach Spaziergang mit Süßigkeiten. Wie ist das? Wollen Sie überhaupt? Wer sonst in diesem Raum wollen Süßigkeiten? Sie können auch mehr als eine, Jungs. Nehmen Sie eine Handvoll, wenn Sie wollen. Mai sowie. Jeder sonst gut? Ok. Auch ich werde erstellen eine anonyme Google-Formular, und habt ihr einfach einreichen können Feedback nach jedem Abschnitt wenn es etwas, was Sie wollen Verbesserung bei oder etwas, das Sie erreichen wollen. Wenn ich mich ein wenig zu schwungvoll für Sie, kann ich es abzuschwächen. Ich werde das Erstellen und Senden, dass aus, um euch alle danach. In Ordnung. Deshalb fangen wir klein. Wie würden wir initialisieren unser Angebot? Was ist der Typ der unser Angebot? Ein int, nicht wahr? OK, also was willst du zu Ihrem Array nennen? Int-Array, cool. Na gut, so haben wir int int array entspricht, und was machen wir danach haben? STUDENT: [unverständlich] Klammern. ALLISON: Hosenträger. Und dann in den geschweiften Klammern? Ein Komma zwei Komma drei. Cool. Also das ist alles in Ordnung. So, jetzt haben wir unsere for-Schleife. So im ersten Teil unserer for-Schleife, was haben wir? Student: Ich gleich 0? ALLISON: Also int i gleich 0 ist, und was ist dann unser Zustand? Was ich jetzt weniger als sein? Weniger als drei, und wie wir wissen wir aktualisieren i? i plus plus, aktualisieren sie um eins. Und dann werden wir haben printf einige der Integer, und was ist das letzte Teil, tatsächlich ist gehen zu sagen, was wir sollten den Druck? Es wäre der Name des zu sein Array, das int-Array ist, richtig? Und was ist in den Klammern der int-Array? i. [? Also ich?] Rief meine Beispiel, aber dort gehen Sie. Nicht so schlimm. Jeder gut? Cool. Daher freuen wir uns mit den Arrays getan. Congrats. Sie schaffte es, iterieren durch alle the-- ja? STUDENT: [unverständlich] ALLISON: Ja. Student: Ich habe eine Frage. Soll man die Klammern eingerückt? ALLISON: Also die Klammern sollten antreten mit der for-Schleife, und dann alles in den geschweiften Klammern eingerückt werden soll. STUDENT: OK, sollte der for-Schleife eingerückt werden? ALLISON: Die for-Schleife nicht müssen an dieser Stelle eingerückt werden. Wenn Sie in Haupt waren, wenn wir Eigentlich hatte hier eine Hauptfunktion, es wäre von der Haupteingerückt werden. Aber in diesem Fall, es ist in Ordnung. Ja, Frage. STUDENT: Müssen Sie haben die Klammern nach Beispiel? ALLISON: Ja, wenn Sie Initialisieren es so. Also denken Sie daran, dies ist die zweite Weg zur Initialisierung eines Arrays, wo wir haben die Hosenträger und könnten die tatsächlichen Daten, die durch Kommas innerhalb getrennt. Student: Ich dachte, es gäbe Halterungen für das Beispiel. ALLISON: Nein, sie sind Zahnspangen. Sie sind Zahnspangen. Wenn Sie es zu initialisieren dass die zweite Weise, ist es Zahnspangen. Wenn wir sagen würden, int example-- wenn wir wollten nur eine leere Array für int, es wäre int B. Schellen drei. Die Klammern geben die Größe. Wenn Sie Streben haben, es ist die tatsächliche Daten Sie hinein setzen sind auf diese Weise. Wir können wirklich schnell zurück zu blättern. Also in diesem einen, das ist nur unsere Anfangs Array-Initialisierung. Und hier, einzeln sind wir Zuweisen Stellen, um sie, so stellt dies den Index der Array, das ist, warum wir Klammern. Aber hier, wenn Sie bemerken, haben wir ließen unsere Klammern ohne Größe, und wir es zu initialisieren mit der Ist-Daten alle-in-One mit Zahnspange. STUDENT: Also, warum nicht wir Klammern in diesem Beispiel? ALLISON: Also, in der ein Teil? STUDENT: Würden wir nicht sagen wir, int B. Schellen gleich Klammern [unverständlich] Klammern zum Beispiel. ALLISON: Oh, sorry. Sie haben Recht. Wir Klammern haben dort. Sorry, Jungs, mein schlechtes. Ja, Sie haben sollten Klammern nach Beispiel. Sie haben völlig Recht. STUDENT: [unverständlich] es nicht zu tun. ALLISON: Nein, müssen Sie haben Klammern, denn sonst ist es nicht, um ein Array zu deklarieren. STUDENT: [unverständlich]. Bitten um Entschuldigung. ALLISON: Sorry, Sie müssen Klammern nach Beispiel. Typo. Guter Fang, Goldstern für Sie. Auch, wenn Sie gefragt werden eine Frage, wenn euch würde sagen Sie mir Ihren Namen, Ich würde gerne, dass. Ich würde gerne in der Lage zu sein, kennen alle eure Namen. Ich bin nicht gegen Kälte gehen rufen Sie, habe ich eigentlich Sie wollen einfach nur Ihren Namen kennen. Also bitte wirklich sagen Sie mir Ihre Namen. LEAH: Leah. ALLISON: Leah. OK, so functions-- Ich weiß in Kürze sie darüber gesprochen in der Vorlesungs. Also Funktionen sind so eine Art gerade wie diese kleine mundgerechte Dinge wo Sie in Eingänge passieren, etwas magische passiert, und Sie Ausgänge zu erhalten. Cool. So können Sie tatsächlich verwendet ein Menge von diesen bereits. Holen int, bekommen String, Print f. Dies sind alles Funktionen wo Sie nennen sie nur, es gibt viele magische Dinge los im Hintergrund dass man nicht unbedingt sehen, und Sie bekommen, was Sie wollen. Oder zumindest erhalten was Sie hoffen, Sie wollen. Und im Grunde der Punkt von Funktionen, und eines der Hauptthemen der CS, ist es, Ihren Code zu brechen in handliche Stücke. Wenn Sie anfangen zu schreiben diese wirklich lange Programme, oder in Scratch, wenn Sie hatte diese große Idee für ein Spiel, Sie müssen in der Lage, es zu brechen sein auf, wie, OK, wie soll ich anfangen? Was sind die kleinen Stücke, die ich brauche? Oh, ich muss das fragen Benutzer für etwas. Jetzt brauche ich, um etwas zu drucken. Oh, ich brauche, um diesen Wert zu berechnen. Und lernen, wie man brechen Ihre Code und die großen Probleme, die Sie haben in diesen kleinen Stücken und Erstellen von Funktionen ist tatsächlich eine der großen Eckpfeiler CS. So können Sie einer Funktion genauso denken können wie eine Black Box, ein magischer Black Box, dass Sie die Dinge in die und Sie erhalten eine Ausgabe. Und der Rest des Programms muss nicht unbedingt wissen, was los ist in diesem schwarzen Kasten. Alles was es kümmert sich um ist, was geht und was dabei herauskommt. Cool. Warum also Funktionen? Organization-- wie gesagt, wenn man Umgang mit sehr großen Codebasen, wie Sie organisieren Ihr Code sein viel einfacher, wenn Sie Funktionen verwenden. Da Sie in der Lage sein, zu sein, wie, OK dies, ist das, was diese Funktion tut und hier ist, was ein anderer tut. Und Sie leicht erkennen können wie sie alle zusammenpassen. So bricht es in alle Diese überschaubare Teilabschnitte. So simplification-- Ich bin sicher, ihr Jungs all dies sah, wie gesagt, mit Scratch. Sie haben diese großartige Idee, und Sie wie sie sind, wie funktioniert diese Arbeit? Aber wenn man sich ihr nähert Stückwerk, Sie sagen, OK, Wie kann ich einer Sprite machen schweben über den Bildschirm? Das ist ein bisschen leichter. So gut gebrauchen Funktion ermöglicht Ihr Code viel einfacher zu lesen. Es macht es einfacher zu Debuggen, wie Sie in Ihrem späteren Problem Sets zu bekommen, Sie wirklich zu wollen in der Lage sein zu tun. Und sie sind auch leichter zu entwerfen und umzusetzen. Sie können bis zu codieren eine kleine relativ schnell funktionieren und sicherstellen, dass es im Vergleich zu versuchen diese ganze lange Programm zu erstellen und dann Art durchlaufen und sehen, was funktioniert und was nicht. Und dann die Wiederverwendbarkeit. Also Funktionen benötigen nur einmal geschrieben werden, und dann können Sie sie verwenden so oft wie möglich. So ist es, wie, umweltfreundlich in einem gewissen Sinn. Wenn Sie Dinge wie gehabt Druck f, wo Sie hatte zu schreiben, die Magie, die geht hinter ausdrucken f jeden einzelnen Zeit Sie etwas drucken wollte, Sie würde ziemlich krank und müde davon sein Ende. Eines der Dinge, die Sie lernen in späteren CS-Klassen, oder eine der besten Ratschläge bekomme ich ist, wenn Sie das Kopieren und Einfügen Code, sollte es wohl eine Funktion sein. Wenn Sie das exakt gleiche haben Linien alle im gesamten Code, wenn Sie berücksichtigt sie aus, Ihr Code würde wahrscheinlich sein, wie, fünfmal kürzer und viel leichter zu lesen. Und anstatt zu versuchen, zu beheben all diese verschiedenen Orte, wo Dinge schief gehen könnte, eine Funktion haben Sie dass Sie zu beheben. Und ich verspreche, eine Menge von dieser könnte Art abstrakter jetzt scheinen, aber wie man in später bekommen und später Problems setzt, es wird viel mehr Sinn machen und wirklich nach Hause gefahren werden. Gibt es irgendwelche Fragen über Funktionen so weit? Deshalb sind wir mit ihnen? Ich weiß, wir haben nicht bekommen in die Nitty Gritty noch. Also, die eine function-- wie Arrays, brauchen wir eine Art von-- diese ist nur der allgemeinen Ausgabe. Das ist also eine Funktion, die es gerade dabei, eine Eingabe Würfel. Und auf der nächsten Seite, eigentlich haben wir alle diese wunderbare kleine Dinge hier. So kann jeder lesen dass aus Neugier? Ich kenne den lila und schwarz vielleicht ein wenig hart. Aber große Dinge, dies die erste wissen-- ein Recht ist hier unsere Rückgabetyp. Also hier geht es um den Ausgang zu sprechen dieser Funktion, wenn in diesem Fall wir in irgendeiner Zahl setzen, was wir sind immer ist diese Zahl gewürfelt. So sollte es ein int in diesem Fall sein. Vielleicht wäre es eine doppelte oder etwas später, aber in diesem Fall, es ist ein int. Mit c, müssen Sie immer einen Rückgabetyp. Es wird ein int sein. Es wird ein Schwimmer sein. Es wird ein doppelt sein. Aber man muss was geben Diese Funktion wird zur Rückkehr. Andernfalls werden sie auf zu schreien Sie, und es wird nicht kompilieren. Sie werden traurig sein, und ich werde traurig sein. Und es ist einfach nicht gut. Ok. Und dann haben wir unsere Funktionsnamen. Und wie Sie hier sehen können, mit c gibt es diese sehr konsequent Paradigma. Was ist Ihre Art, was ist der Name, und dann einige andere Sache am Ende. Also wir haben unsere Rückgabetyp, unsere Funktionsnamen, und dann wir haben unsere Header mit unsere Parameterliste. Also die Parameterliste ist, was ist Diese Funktion werde in nehmen? Eine Parameterliste ist einfach eine Synonym für, was sind unsere Eingänge? Und in der gleichen Weise, wie wir müssen unsere Funktion definieren und geben Sie ihm eine Rückkehr geben, jedem unserer Eingänge muss eine Art zugeordnet sein. So wissen wir, was unsere Funktion kann tatsächlich mit zu arbeiten. Also in diesem Fall haben wir einige int-Eingang. Also noch einmal, werde es der Typ sein und was Sie nennen es. Und dann, wie Sie sehen Hier haben wir unsere Körper. So haben wir einige int-Ausgang, dass ist gerade unsere Eingabezeiten selbst mal selbst, die nur Würfel es. Und dann haben wir diese Ausgabe zurück. So wie Sie hier sehen, haben wir eine int mal ein int mal ein int, so ist es ein int, kehrt die wurde dort erklärt. Also alles ist zusammenhängend. Alles ist glücklich. Ihre Funktion wird ausgeführt. Und das ist nur die allgemeine Sache. Also immer Rückgabetyp, Namen und Ihre Parameterliste. Jedes Ding in Ihrem Parameterliste, bzw. Eingang, muss eine Art zugeordnet sein. Und dann haben Sie Ihren Körper hier, was auch immer Sie mit Ihrer Eingabe machen wollen. Und dann natürlich Sie will etwas zurückgeben. Manchmal Funktionen werden nur zurückgeben. Sie eigentlich nicht zurück etwas für Sie zu nutzen. Aber man muss in gewisser Weise zurück. Und wenn du machst Ihre eigenen Funktionen, können wir in diese ein wenig tiefer zu bekommen. Persönlich, wenn Sie wollen, es gibt eine Menge verschiedener Dinge, die Sie dort tun könnte. Jeder gut? Alles auf dieser Liste, die Sie mich wollen hinüberzugehen, dass Sie nicht verstehen? Jeder ist gut da? Cool. Genial. OK, so dass wir setzen alles zusammen jetzt. Also haben wir etwas int cube-Eingang, so Dies ist eine vollständige Programm finden Sie hier. Bisher habe ich Art wurde Ihnen Jungs-Schnipsel, die vielleicht werden innerhalb eines Programms gehen. Wir haben gerade bei Funktionen gesucht. Aber hier ist ein ganzes Programm. Also, wie viele von euch erinnern sich die Wort Prototyp aus Vorlesung? Cool. Wir haben einen. Wie heißen Sie? STEPH: Steph. ALLISON: Steph? OK, fantastisch. Also, weißt du noch, was ein Prototyp ist? STUDENT: Sie sagen, [unverständlich] bevor Sie tatsächlich damit umzugehen. ALLISON: Erinnerst du dich, warum? STUDENT: No. ALLISON: OK. Gold-Star. Also ja, ein Prototyp haben wir voraus, da sonst, unsere Compiler wird sich bei uns schreien. Es wird gesagt, OK, was ist das Cube-Funktion? Wie, haben Sie buchstäblich sagte mir nichts. Es ist wie wenn man zu Fuß in ein Klassenzimmer, und jemand ist wie, Es gibt ein Quiz heute. Und du, du bist nie erzählte mir über diese. Ich bin nicht glücklich mit uns. Der Prototyp ist im Grunde wie Ihr Lehrplan sagen, schauen. Kopf hoch. Es geht um ein Quiz an diesem Tag sein. Nicht ausflippen, wenn Sie es erhalten. Du wirst in Ordnung zu sein. Also alles, der Prototyp hat ist zu sagen Haupt, werde ich diese Funktion zu nutzen. Ich verspreche, ich werde später zu definieren. Nicht ausflippen mich an. Nur kompilieren und zu tun, was ich dir sage. So haben wir den Prototypen gibt nur um unsere Compiler glücklich. Und es ist im Grunde ein Versprechen, Sie diese Funktion später definiert haben und dass Sie nicht nur telefonieren Diese zufällige Sache, dass es weiß nicht, was du bist gehen zu tun. Also in diesem Fall, wir haben hier Haupt. Wir initialisieren eine ganze Zahl x. Das sind zwei. Wir werden auszudrucken, was x ist. Wir werden x Würfel. Wie Sie sehen, haben wir unsere Funktionsdeklaration hier unten, dass wir sprachen über früher. Es wird cube x, und dann, wenn wir denken Sie daran, den Würfel Funktion tatsächlich eine ganze Zahl, um zurück uns, die gespeichert wird in x wieder, damit wir drucken können aus acht oder cube x jetzt. Ist das sinnvoll, um alle? Wir sind gut? In Ordnung. Genial. In Ordnung. Wie viele von euch Jungs Merken Sie sich diese so dass diese ist im Grunde nur Ihre Stack und Ihre Haufen, nur eine Visualisierung von wie Speicher abgelegt. Also wir wollen nur sicherstellen, Sie sicher, dass Sie verstehen, wie diese im Speicher dargestellt. Wenn Sie Klassen wie nehmen CS61 und so später Sie gelangen in diesen weit mehr erfahren in der Tiefe, und es ist wirklich cool. Ich empfehle es. Aber jetzt werde ich geben Sie der breiten Überblick so dass Sie nicht zu haben, kennen die Nitty Gritty. So Anfang nur ein Textsegment, enthält die eigentlichen Nullen und Einsen, die binäre dafür. Und dies wird zum Speichern verwendet globale Variablen, wenn Sie irgendwelche. Wie Sie nach unten zu verschieben, wir haben, wie Sie hier sehen, initialisierten Daten, nicht initialisierten Daten, und dann Heap. So dass wir nicht wirklich reden über den Haufen jetzt. Wir werden zu einem späteren Zeitpunkt erhalten. Denn jetzt, ich bin gerade dabei, winken meine Hände und werden wie, Sie brauchen nicht, um dies jetzt wissen. Aber wir werden ein wenig sprechen wenig über den Stack. Also der Stapel where-- wir vergrößern. Das ist eigentlich, wie das Programm wir gerade sah im Speicher auftritt. Also, was passiert ist, jeder Zeit, dass wir eine Funktion aufrufen, wir bekommen eine so genannte Stack Rahmen, die eine von diesen ist. So Main Parameter. Das sind also die Dinge, dass wir gehen in main. So sind sie hier an der Unterseite, denn das ist das erste, was wir nennen. Und dann haben wir zur Haupt Sie uns Einheimische, und wenn wir sagen, dass, meinen wir die lokalen Variablen dass innerhalb Haupt gespeichert sind. So Einheimischen hier wäre, wie, x ist gleich in diesem Fall zwei. Denn das ist, zur Haupt lokalisiert. Hat jeder erinnern Umfang, gehen über die in der Vorlesung? Ok. Also, nur die Variablen, die innerhalb Haupt initialisiert. Also das ist, warum wir haben Haupt [? Vocals. ?] Und dann im Haupt, nennen wir Würfel. Richtig? Also ein anderes Bild erhalten wir mit Parametern Würfels. Also in diesem Fall, Würfels Parameter sind jetzt die x, die wir übergeben, die beiden, die wir eingeleitet. Und dann Würfels Einheimischen, die ist wenn der tatsächliche cubing passiert. Und dann gibt es zurück. Also, was passiert ist, als Würfel tatsächlich tut was es tun soll, gibt es zurück. Wenn er zurückkehrt, verlässt dieser Rahmen, und seine Hauptzurück nach unten. Und dann im Haupt wir kann tatsächlich ausdrucken. Also, wenn Sie etwas zurückkehren, wenn Ihr Funktion gibt, es ist wie die Weitergabe dieser Werte zu der Rahmen unten und dann verlassen. Und die Dinge müssen, um auszuführen. Und wenn Sie größeren Programmen zu bekommen, können wir Kühler und komplizierter machen Diagramme. Aber jetzt, ist dies nur eine allgemeine Übersicht so haben Sie eine Art von Verständnis dessen, was passiert, wenn Sie eine Funktion aufrufen und wie das tatsächlich aussieht im Speicher. Cool? Jeder gut? Genial. Das ist also eine, die ist nur versuchen, die Dinge zu tauschen. Wie wir hier sehen, haben wir unsere Funktionsprototyp so dass unsere Compiler nicht bei uns schreien. Wir haben einige Haupt, und wir möchte x und y zu wechseln. Sie haben nicht diese Demo getan in der Vorlesung noch haben sie? Sie haben nicht? Ok. So werden wir zu gehen über diese sehr kurz. Sie werden in diesem Beispiel mehr zu bekommen in der Tiefe, wie ich glaube, in dieser Woche. Und dann nächste Woche können wir wirklich tauchen, warum dies nicht funktioniert. So haben wir diese Lücke Funktion hier-- Swap. So nichtig bedeutet nur, dass nichts zurückgegeben. Und wir haben Swap int a und int b. Und wir haben einige temporäre Variable, die eine ist. Kommt zugeordnet zu b, und dann b wird an die Temp zugeordnet so dass A und B ist Werte werden nun ausgeschaltet. Aber, Plot Twist, das nicht funktioniert. Und ein Teil davon tatsächlich mit der Tatsache zu tun, daß eine und b hier, diejenigen, die in übergeben bekommen Hier gibt tatsächlich Kopien von x und y. Also, wenn die Funktion tatsächlich zurückkehrt, es die Kopien schaltet aber nicht die tatsächliche x und y ist. Also eine Möglichkeit, darüber nachzudenken ist dass-- vorgeben diese Swap. OK? So in Haupt, haben wir x und y initialisiert. Aber wenn wir tatsächlich steigen auf diese Frames mit Swap, wir vorbei an den Werten über zu ihm, und sie initialisiert. Und sie immer nur leben hier richtig. Also a und b leben hier. Und sie bekommen getauscht. Aber wenn wir zurückkommen, wissen wir nicht nichts mit a und b. ein und b Urlaub mit unserer Funktion. Und so x und y gleich bleiben. Du wirst mehr in, wie man das beheben zu bekommen und wie wir eigentlich mit, dass später beschäftigen. Aber es ist nur eine Sache, zu Art im Kopf behalten. Verwenden Sie es für die Zukunft. Keine Sorge, wenn das nicht zu machen ganze Sinn der Welt. Sie sind Kopien ist die größte Sache. Wenn Sie vorhaben, etwas zu nehmen sind weg von diesem, in Kopien übergeben Sie. Also die Originale gleich bleiben. Jeder gut? Cool. So Befehlszeilenargumente. Ich bin am Anfang sicher, dass euch alle hatten diese großen, wie, int main Hohlräume. Und du bist wie, OK cool. Ich interessiere mich nicht wirklich. Dies ist genau das, was ich zu schreiben. Aber in Ihrem neuen Programmen vor allem in dieser pset, und warum gibt es Kreide auf dem Boden? Mit Ihren pset, du bist gehen zu sehen dies. Int main, int arg c, String Bogen v, Klammern. Also, von dem, was wir gerade heute gelernt, was denken wir, dass der zweite Parameter oder dass zweite Element ist hier? Es ist ein Array. Welche Art von Array? String-Array, ja. Cool. Also das ist, wie du gehst Bislang werden diese erklärt. Erinnert sich noch jemand was diese stehen? Nein? Hmm? STUDENT: arg c. ALLISON: So arg c hält einen Zähler. Es ist ein int. Es ist eine Zahl, oder? Also, was denken Sie, diese Zahl von? Ja. So arg c ist die Anzahl von Zeichen aus denen sich die Befehlszeile. Wenn wir also tatsächlich do-- waren, es gibt Beispiele danach damit ich nicht vor mir selbst bekommen. Es ist eine Reihe von Zeichenfolgen, so stellen Sie Ihre Befehlszeile. Also, wenn Sie tun, wie, dot slash Mario, das ist eine Zeichenfolge, die es macht. In diesem Stück werden Sie tatsächlich sein Fütterung Dinge in der Befehlszeile wie ich bin sicher, Sie Jungs, die haben die spec Säge lesen. Also in jenen Fällen, vielleicht wirst du zwei oder drei Argumente. Es geht um eine nützliche Sache zu bedienen sein. Und dann arg v, wie wir sagten, ist nur ein String-Array. So dass tatsächlich speichert, was Sie Eingabe in der Befehlszeile. Also haben wir diese. Sie haben einige dot slash Kopieren infile outfile. Also, das ist, wenn arg c die Anzahl der Saiten dass wir in der Befehlsweitergabe Linie, was ist unsere arg c in diesem Fall? Drei. Genau. Also, was ist arg v von Null? Also, was ist das erste, was wir gespeichert haben? Dot Slash Kopie, genau. Und dann die zweite wäre INFILE. Die dritte wäre outfile sein. Und was ist arg v drei? Es wäre null, weil das ist, das Ende unserer Array, oder? Cool. Und was ist dann mit dem sechsten ein? Es ist irgendwie eine Fangfrage. Ish. Wissen wir, was es ist? Es ist nicht definiert. Wir haben keine Ahnung, was das sein könnte. Es ist was recht ist Nach der Anordnung im Speicher, und wir haben keine Ahnung, was das ist. Und es ist gefährlich für diejenigen berühren Dinge, denn für alles, was Sie wissen, es ist ein Teil des Speichers, die Sie sollten nicht dem Zugriff oder null sein. Und es kann verrückte Dinge zu tun. Es ist über-Indizierung genannt Ihr Ihr Array gebunden. Nicht außerhalb der Grenzen gehen Ihre Array oder schlechte Dinge passieren können. Sie kommen zurück und, wie, den Gesetzen der Physik wurden zerstört oder so etwas. Cool. Ist das sinnvoll, um alle? Nicht schlecht. So, jetzt ist jeder Lieblingsteil, pset Bewertung. Yay! Ok. Also für diejenigen unter Ihnen, die haben nicht die pset spec lesen, Sie wirklich tun einige coole Sachen mit Kryptographie. Du wirst einen Ceasar erstellen Cipher und eine Vigenère-Chiffre. Sie sollten auf jeden Fall lesen Sie die spec zu sehen, wie solche Arbeit. Und wenn Sie irgendwelche Probleme über bist was es eigentlich tun, kommen Sie bitte mit mir reden, mailen Sie mir oder Text mich. Ich bin um. So gibt es drei Haupt Dinge hier, dass wir möchte nur irgendwie reden about-- einer Verlängerung der Vorlesung. Dinge, die Sie vielleicht nicht wissen etwa, hilfreiche Tipps und Tools. So werden wir eine do schnelle Überprüfung der ASCII, denn das wird Super zu sein wichtig für Vigenere Cipher. Wir fahren nach Umwandlung gehen Befehlszeileneingänge, die wird sehr hilfreich für Caesar-Ziffer. Und dann Modulo. Cool. So ordnet ASCII-Zeichen um Zahlen. Dies ist eine große Karte. Sie sollten dies irgendwo vorgemerkt. Sie werden es für wollen Ihre erste Halbzeit. Ich bin mir ziemlich sicher, jeder hat diese Chart auf ihren Halbzeitblatt. So lernen. Liebe es. Halten Sie es handlich. Es wird nützlich sein. Und das alles ist es ist eine Codierung dass die Karten alphabetisch, numerisch und andere Zeichen, die Zahlen für unsere Computer. Denn natürlich, in der Ende, alles, was wir speichern wird sich konvertierten bekommen bis auf Nullen und Einsen, also müssen wir einen Weg, um das zu vertreten Text und Zeichen, die wir alle zu sehen, als eine Art Nummer verwendet. So wie wir hier sehen, haben wir Groß A, die genau dort ist. Es ist 65. Und Klein A 97. Damit Sie heraus out-- können wie ich bereits sagte, Wenn Sie Array von mehreren musste Strings, was jeder von ihnen haben eine Null-Terminator. Es wäre ein Raum sein. Raum hat seine eigene special-- Ich vergesse, wo es hier ist. Ah. 32 ist der Raum. Also alles ordnet, um es. So haben wir ASCII math. Pro tip-- in Vigenere ist, Sie versucht sein könnten um Ihre Zahlen auf ganze Zahlen zu konvertieren, aber es ist tatsächlich besser Praxis Um das zu nutzen Zeichen wie diese wenn Sie tatsächlich manipulieren. Also, wenn Sie Zahlen verwenden möchten, können Sie. Aber einen besseren Weg, oder eine Möglichkeit, dass neigen wir dazu, wie euch, es zu tun, ist auf diese Weise, wo du bist tatsächlich Subtrahieren Zeichen. Deshalb möchte ich euch zu Art heraus diese heraus. Warum gehst du nicht jedes andere ausprobieren? So kommen die ersten, die dritte und das fünfte. Weil ich will, um sicherzustellen, dass wir miteinander reden alles, was wir brauchen, um darüber zu sprechen. Ich werde einfach sagen, einer der wichtige Dinge zu-- oh warte, Sie Jungs haben nicht dieses gesehen. OK, so tun die ersten drei. Lassen Sie uns das tun. Da müssen wir über Modulo sprechen. Ich weiß. Mathe ist hart. Sie können einen Taschenrechner verwenden. Es ist in Ordnung. Oder ziehen Sie eine ASCII-Tabelle, weil du bist wahrscheinlich zu wollen. Cool. Also werde ich schnell zu Fuß euch durch diese. So können die Leute haben ASCII-Tabellen zog? Was ist unser Zahlen Nummer für Klein A? STUDENT: Sieben. ALLISON: Also Klein A 97 und Großbuchstaben A ist 65. Also 97 minus 65? PUBLIKUM: 32? ALLISON: 62, ja. Also in diesem Fall, was würde es ausdrucken? Das erste? Wenn wir Prozent d, was würde das zeigen? STUDENT: Eine Zahl. ALLISON: Wir Drucken aus einer tatsächlichen Zahl. Also sind wir eigentlich los hier ausdrucken 32. Und wenn dies Prozent c, 32 würde uns einen Raum. Also das Verständnis, dass Zeichen gedruckt werden können sowohl als Zahlen als auch die tatsächlichen Zeichen wirklich wichtig ist, und die Zahlung Aufmerksamkeit auf die tatsächlichen Typen dass wir hier tun. Cool. So wird für jeden anderen von diesen, Was werden wir werden den Druck? STUDENT: Ein Charakter. ALLISON: Ein Charakter. Cool. Also, wenn Sie Jungs wollen, Sie wissen, können diese auf eigene Faust herauszufinden. Wenn Sie Probleme haben, mailen Sie mir. Aber der zweite wird drucken Sie eine Klein b. Der dritte wird ausdrucken ein Groß B. Die vierte wird gedruckt aus einem Groß C und die letzte wird ein Klein A. sein Und das letzte one-- wir eigentlich los in das, was diesem verrückten Prozent bekommen Zeichen bedeutet, auch in ein paar Dias. Also versuchen Sie, die auf eigene Faust. Wenn Sie Schwierigkeiten haben, kommen Sie bitte mit mir reden. Wenn Sie in Adams D Halle sind in der Regel, Sie werden wahrscheinlich feststellen, mich um. Also, Atoi. Wie viele von Ihnen haben gesehen Funktion oder davon gehört überhaupt? Anyone? Cool. Also, was es eigentlich steht für ASCII nach integer. Also, was Sie tun können, ist, mit Caesar, für diejenigen, die Spezifikation zu lesen, Sie gehen zu dot slash Caesar erleben Nachdem Sie Ihr Programm schreiben, und dann bist du zu gehen Eingangs irgendeine Zahl, die Sie möchten Ihre geheime Nachricht mit codieren. Aber, wenn wir uns daran erinnern, alle unsere Eingänge werden als Strings gespeichert. Richtig? Wir haben eine arg v Array das ist alles, Typ string. Also, wenn Sie nur versuchen, ziehen, dass man, wäre es denken, dass, dass eine oder was auch immer Nummer Sie verwendet ist eigentlich ein Charakter. So wirst du bekommen einige verrückte Ergebnisse. Also, wenn Sie wirklich wollen, schalten Sie diese in eine Ganzzahl die Sie verwenden können, um zu manipulieren Ihr Wort oder Ihre Nachricht, Du wirst zu Atoi verwenden möchten. Atoi gerade wandelt Ihren String in einen int. Wenn wir also eine Reihe von 12, wenn wir rufen Atoi auf 12 oder was auch immer das eingespeist wird, es wird tatsächlich zurückkehren um Ihnen die ganze Zahl. Nicht den Charakter oder die Zeichenfolge 12. Welche, wenn Sie beginnen zu den Zahlen zu addieren, sehr unterschiedlich sein können, da die Zeichenfolge 12 einige verrückte Zahl in ASCII, sondern die ganze Zahl 12 ist eigentlich 12, das ist, was Sie wollen. So können Sie sicherstellen, dass auf Atoi verwenden möchten. Du wirst diese wollen Cäsar, weil Sie müssen die durch die mitgelieferte int Benutzer in der Befehlszeile. Aber wenn sie es in der Befehls Linie, ist es als String gespeichert zu beginnen. Ist das sinnvoll? Sie müssen nicht unbedingt müssen diese für Vigenere. Mit Vigenere, wie gesagt vor, sollten Sie versuchen, mit ASCII Mathematik, die mehr wie sieht dies, wo man tatsächlich sind mit den Zeichen, die wir euch gegeben. Cool. Jeder gute da? Genial. So Modulo. So was, wenn Sie gegeben sind Diese riesige Zahl für Caesar? Sie haben die Idee, dass wenn Sie bei Z und du bist gegeben eine Nummer zwei, das bedeutet, Sie need-- Z wird die zweite Brief nach sich, nicht wahr? Sie müssen also irgendwie umschlingen, und Modulo ist der Weg, das zu tun. Also alles was man tut, ist es gibt Ihnen den Rest der Teilung der erste Zahl durch die zweite. Und wir haben ein paar Beispiele zu machen, dass ein wenig konkreter. Aber im Grunde, Modulo, wenn Sie Sie wollen etwas Wrap-around zu machen. Also, wenn Sie nur wollen, dass die Zahlen eins bis acht, Sie können Modulo auf jedem anderen verwenden Nummer, und es wird immer geben eine Zahl von Null bis acht. So einige examples-- wenn Wir haben 55 Modulo 10, es gibt dir nur den Rest 55 geteilt durch 10, die 5 wäre. Und dann drei Modulo fünf, jemand erraten, was das wäre? Drei. Also, wenn Sie eine kleinere Zahl vor haben Modulo, kann es nicht weitergehen in gleichmäßig. Es ist null. So ist es nur gibt die Zahl selbst. Also acht Modulo acht wäre? STUDENT: Zero. ALLISON: Zero. Weil es in gleichmäßig geht. 16 modulo 15? PUBLIKUM: One. ALLISON: Kühle. Und dann dieses letzte, nur um es zeigen Sie-- werden Sie vielleicht fragen, OK, was ist die Reihenfolge der Operationen hier? Wollen wir teilen zuerst? Wollen wir Modulo zuerst? So Modulo hält die gleiche Priorität als Division oder Multiplikation, und seine linke assoziativ. So ist es in der gleichen Weise. Sie würden immer tun Klammern, dann Multiplikation, Division, und Modulo in der Reihenfolge von links nach rechts. So Standardregeln. Nur ihn in der gleichen Kategorie als Division und Multiplikation. Also in diesem Fall, würden wir haben 1 plus 2 gibt uns 3. Wir multiplizieren Sie diese mit 2, so erhalten wir 6. Wir Modulo, dass durch 2, die uns? STUDENT: 0. ALLISON: 0. Und dann fügen wir zwei, so dass wir erhalten 2 in diesem letzten Fall. So modulo-- Sie definitiv zu werden über die Möglichkeiten, übernehmen das Denken dass, wenn Sie Verpackung sind um das Alphabet. Wenn Sie sich auf Z und Sie verschieben müssen auf drei Bereiche, um C zu erhalten, es ist das ganze Konzept von Umwickeln. Also werde ich es verlassen euch, um herauszufinden, wie genau wirst du es zu benutzen. Aber auf jeden Fall ein nützliches Werkzeug für Ihre pset dieser Woche. Ich mag das. Dies ist einer meiner Lieblings-psets. Dann, nachdem Sie es zu tun, Wenn Sie Freunde haben, Sie können, wie, senden einander Geheimnis Meldungen und sicherzustellen, dass es funktioniert. Weil es werde es oder was auch immer zu entschlüsseln. Viel Spaß. Und das ist das Ende des Abschnitts. Ich beendete früh. Ich habe noch 15 Minuten lang mit euch, also, wenn es etwas gibt, dass Sie möchten, gehen Sie über weiter, würde ich gerne, das zu tun. Alle anderen Fragen auf Ihre pset für die von Ihnen die begonnen haben oder lesen Sie die spec. Alles, was wir gesprochen haben etwa in der letzten Stunde und 15 Minuten, dass Sie mich mögen würde zu Art Neuauflage, würde ich glücklich sein. Oder wir können nennen es beendet, und Sie können alle verlassen und mehr Süßigkeiten mit Ihnen wie Sie gehen. Aber wenn es irgendwelche verweilenden Fragen, lass es mich wissen. Sie können auch kommen und sprechen Sie mit mir danach. Ich verspreche, ich beiße nicht. Noch etwas? Jeder ist gut? Gefühl Jeder wie sie können diesen pset umgehen? Du wirst feine Jungs. Öffnungszeiten gibt es für einen Grund. Cool. In Ordnung. Nun, in diesem Fall, ich danke Sie alle so viel für Ihr Kommen. Ich hoffe, Sie nächste Woche sehen. Es wird mehr Süßigkeiten sein. Es könnte andere coole Dinge. Und ich freue mich darauf, Ihnen allen in diesem Jahr wissen.