[Musikwiedergabe] ANDI Peng: Das ist CS50 und willkommen in der Woche zwei der Sektion. Dies ist eigentlich während der Woche zwei unserer class-- tatsächlich, in der ersten Woche haben wir Schnitt hatten. Handzeichen, wie viele von euch allen kam zu Superschnitt der letzten Woche? OK, das ist OK. Das ist ok. Wie viele von Ihnen angeschaut Superschnitt der letzten Woche? OK. Und euch feinen tat Problem eingestellt ist? Also werde ich, es zu nehmen, dass wir ein Bündel von sehr intelligenten Kindern in dieser Klasse und die Dinge werden in Ordnung sein. OK. So first-- Erstens, wir sind gerade dabei, kurz gehen Sie über die Tagesordnung für heute. Das werden wir natürlich die Logistik zu sprechen. Viele von Ihnen wahrscheinlich Noch Fragen wie die Dinge in diesem Lauf. Wir werden sie zu beantworten. Wir sind kurz gehen gehen Sie über Schleifen im Falle einer von euch Jungs verpasst Super-Sektion. Wir werden über ASCII-Mapping sprechen. Wir werden über Arrays zu sprechen, Funktionen, Befehlszeilenargumente. Und schließlich, was euch wahrscheinlich alle wirklich, hier zu sein, um zu lernen, ist Ihr PSet2. Wir werden ein paar nette Tricks haben und Tipps, wie man das macht. OK. Auch Zweitens haben wir Lose der Süßigkeit hier. Jeder, der Süßigkeiten liebt, nur kommen hier. Schnappen Sie sich einige. Ich habe eine Reihe. Wir haben eine Tonne im Büro. Ich weiß nicht wirklich wollen, den ganzen Tag Süßigkeiten essen. Ihr solltet alle Süßigkeiten essen, weil ich brachte es hier für euch. Nur essen Süßigkeiten. Es wird candy jeder Abschnitt sein. So zuerst, wer ich bin? Mein Name ist Andi Peng. Ich bin der Kopf TA der CS50 hier in Yale. Und zusätzlich zu dass, werde ich auch be-- wenn jemand würde Ihre Lauf like-- Kumpel, Ihrer Schulter zum Anlehnen. Wenn in der Nacht vor Ihrer pset Grund, Sie haben keine Ahnung, was los ist, hit me up. Wir werden zusammen bemitleiden, und so weiter. Genau wissen, dass ich hier bin, wie ein Ressource für Sie, wie der Frontlinie helfen euch herausfinden, wie Probleme in CS50 und darüber hinaus zu lösen. Meine E-Mail ist andi.peng@yale.edu. Ich werde auch gerne ein individuelles per E-Mail mit meiner Telefonnummer in ihr so dass nicht jeder auf die Internet kann meine Telefonnummer zu sehen. Sie können mich jederzeit anrufen. Ernsthaft, das ist mein Handy in der Regel, um meine Hand angebracht. Ich kann nicht reagiert innerhalb von ein paar Minuten. Ich kann nicht innerhalb von ein paar Stunden zu beantworten. Aber ich kann Ihnen garantieren, wenn Sie eine E-Mail mich, wenn Sie mich anrufen, Text ich, werde ich innerhalb von 24 Stunden zu reagieren. Oft werde ich vor dem antworten dass, weil ich verstehe, , dass jeder hat einige Probleme bekommen, und Sie möchten Ihre Antworten sehr schnell zu beantworten. Allerdings, wenn Sie anrufen me 30 Minuten vor das Stück, die aufgrund Donnerstag ist night-- sein mögen, Andi, hilf mir, Ich habe nicht started-- ich geben Ihnen, dass Schulter zum Anlehnen. Aber kann es Zeit, um darüber nachzudenken sein, wie man das nicht beim nächsten Mal. OK. Oops. Wie bekomme ich zurück? Da gehen wir. Also in diesem Selbstverständlich haben wir ein Tonne Unterstützung für alle. Neben nur Abschnitte hier, die Sie jede Woche zu verbringen 90 wunderbare Minuten bei mir, wir haben auch der Bürozeiten. Wie viele von euch haben bereits gewesen, der Bürozeiten um Hilfe? Groß. Das ist wirklich gut zu sehen, denn wir haben einen Stab von mehr als 45 Reisebüros und Zertifizierungsstellen für diesen Kurs, die hier sind geschult für das Helfen Sie Jungs mit Ihren psets. Montags sind sie in der TEAL gehalten Klassenzimmer in 17 Hill House hier an der Yale. Dienstags und donnerstags, sie sind in commons statt. 8.00 bis 11.00 Uhr so ​​ziemlich jeden Tag. Komm rein, komm heraus. Jedes mögliches Problem, kein problem-- nur auf kommen, und dann werden wir Ihnen helfen, mit, dass. Zweitens, zusätzlich zu den Bürozeiten und Abschnitte, haben wir auch Shorts. Hat jemand schon einmal ein paar der gesehen Shorts oder Komplettlösungen in den Videos auf der Internetseite? OK. So sind sie wirklich sehr, sehr hilfsbereit. Unsere schöne Harvard Produktions Team dort an diesem Schul oben im Norden, sie gefilmt und produziert haben diese unglaublichen Walkthrough-Videos. Sie werden führen Sie durch Schritt für Schritt wie man über die Lösung eines Problems zu gehen. Oft, wenn Sie verwirrt sind ein einfaches Konzept, ein einzigartiges Konzept, schauen, weil wir wahrscheinlich eine kurze darauf irgendwo auf unserer Website. Und es ist in der Regel eine große Ressource zu suchen, wenn Sie zuerst sind aussehen verloren, wie man ein Problem zu behandeln. Drittens haben wir auch Studie50 und reference50. So studieren 50 auf der Website ist nur einen Link. Es ist, glaube ich, study.cs50.net oder etwas ähnliches. Gerade Google es. Wir haben viele Dias vorbereitet. Wir haben viele Shorts und walkthroughs-- Dinge all kompiliert sehr schön und ordentlich für euch alle zu durchsuchen, finden Sie alle Begriffe dass Sie verwirrt. Es würde wahrscheinlich abgedeckt werden drüben in Studie50. Reference50-- ähnlich. Wir haben eine Menge von verschiedenen Notizen zur Verfügung zur Verfügung stehen. Und schließlich haben wir, was ist genannt CS50 Diskutieren, ein Forum, in dem, wenn die Nacht vor Sie tun, Ihre Probleme, sagen, Du hast eine Frage. Melden Sie sich an, um CS50 diskutieren. Könnt Ihr eure Fragen. Und dann, eines der hundreds-- vielleicht thousands-- der Peers Einnahme dieses Klasse Online wird melden Sie sich an. Und vielleicht kann jemand bekommen Ihre Antwort vor einem TA Dose. Es ist im Wesentlichen gerade einen Online-Forum, die wir alle können nutzen, um unsere Probleme zu diskutieren. Das ist cool. OK. So Problems setzt. Wir sind zu Recht in die Dicke des Problems stellte zwei. Viele von uns haben bereits kämpfte sich durch ein Problem eingestellt. Wir wissen bereits, dass vielleicht warten für die letzte Nacht, um Ihren pset tun ist nicht das Klügste, was zu tun in CS50. Tipps und Tricks für die wesentlichen Erfolg werden die gesamte Spezifikation lesen. Wie viele von euch haben bereits lesen Sie die Spezifikation für pset 2? OK. Das ist eine Feststoffmenge. Ich weiß, ihr Jungs haben wahrscheinlich erkannt mittlerweile die Spezifikationen sind wirklich lang. Sie sind wirklich sehr, sehr lange. Es ist wirklich schwer, um jede Zeile zu lesen dieser sorgfältig Wort für Wort. Sie wollen einfach nur, um in dem Mager es sagt Ihnen, etwas zu tun. Ich kann Ihnen garantieren, tun Sie das nicht. Wenn Sie das tun, sind Sie wahrscheinlich gehen, um irgendwo vermissen wo es Ihnen sagt, wie ein Problem zu starten oder es Ihnen sagt, was zu Namen Ihr Problem oder es sagt Ihnen, Dies ist wahrscheinlich der beste Weg, zu tun beginnen Ihr Problem. Und dann wirst du verloren. Wenn Sie versuchen, lesen Sie Ihre spec auf halbem Weg durch, eine Menge der wichtigen information--, dass Sie nicht in der Lage sein, um wirklich Zugang. So lesen Sie die gesamte Spezifikation. Versuchen Sie, die gesamte Spezifikation lesen bevor Sie den Abschnitt zu kommen, weil dann, wenn wir sprechen über die pset, wir alle haben eine Idee von dem, was vor sich geht. Zweitens ist dies ein Konzept dass ich gerne Referenz eine Menge über den Verlauf Semester. Aber im Grunde, treffen Sie uns auf halbem Weg, nicht wahr? Me, als TA und Jason als Kurs Manager und Scaz als Professor und David als Professor und alle die anderen schönen TAs in diesem Kurs, Assistenten in diesem course-- Wir werden unser Bestes tun um sicherzustellen, dass Sie werden eingestellt bis zu diesen Kurs erfolgreich. Wir werden Schnitt zu halten. Wir werden der Bürozeiten zu halten. Wir werden Ihr Telefon zu beantworten Anrufe beantworten Ihre E-Mails, setzen alles daran, um sicher, dass Ihre Fragen beantwortet werden. Allerdings helfen Sie uns zu. Treffen Sie uns auf halbem Weg. Wenn Sie den Bürozeiten kommen Nicht mit dem Kapitel fort, nicht Nachdem wir die Vorträge, das keine Ahnung, was los ist, wie sein, helfen Sie mir. Ich werde wie, na ja, es tut mir leid zu sein. Es kann einige Zeit zu leihen daß Schulter zum Anlehnen, denn ich bin mir nicht sicher was ich tun kann, um Ihnen zu helfen, wenn Sie nicht versuchen, zumindest helfen sich ein wenig in der Anfang. Treffen Sie uns auf halbem Weg. Wissen Sie, kommen Sie bitte bereit, zu beantworten und erhalten bereit, in dem Material zu engagieren. Es macht die Dinge so sehr, einfacher für alle Beteiligten. Ja, das ist so ziemlich alles. Grading. So auf dem Lehrplan, es ist ziemlich vertiefte darüber, wie wir Klasse. Aber im Grunde, die Aufschlüsselung in diesem ist 50% Ihrer Klasse werden die psets, werden, ist sehr schön, denn das ist, wo Sie verbringen den Groß Mehrheit der Kurszeit auf. Quiz 40% und Ihrer Abschlussprojekt wird 10% betragen. Es werden zwei Tests in ganz sein der Verlauf des Semesters. Ich denke, die Zeiten und Daten sind auch auf dem Lehrplan aufgeführt. Die Art und Weise, dass wir werden mit einem Gehalt von Ihren psets ist, dass wir im Wesentlichen vier Werte, die wir ordnen jedem Grad. Wir haben einen Wert von Umfang, Korrektheit, Design und Stil. So wie Sie sehen, ist diese Art von unseren Formel zur Berechnung psets. Drei geben wir das Beste Gewicht auf Korrektheit, weil offensichtlich Ihr Coach sollte die Prüfung werden für die Fälle, dass wir wollen, dass es zu testen. Ihr Jungs haben alle check50 zu Ihrer Verfügung. Es ist eine sehr nützliche Funktion, dass Sie Jungs können alle laden Sie Ihren Code, um unseren Servern, wo wir es auf Ihnen überprüfen. Und Sie solche gesehen haben frowny Gesichter Smiley-Gesichter. Sie sind wirklich sehr, sehr hilfsbereit. Bitte nicht der Studenten, die Versuche mögen in all den Antworten, sie zu codieren. Ich habe auf jeden Fall ein pset wo gesehen jemand alle Werte check50 sah und sie nur schwer in-- wenn codierte diese Zahl ist, drucken Sie diese Nummer. Wenn diese Zahl, drucken Sie diese Nummer. Tun Sie das nicht. Obwohl technisch check50 ist richtig, Ihren Weg zur Lösung des Problem ist nicht korrekt. So verwenden Sie einfach check50 sparsam. Sondern auch sicherstellen, dass Sie zu verstehen, wie es funktioniert, Das Programm funktioniert neben check50, denn wir können nicht alle testen möglichen Fall der check50. Wir werden die Prüfung einige von ihnen. Design ist im Wesentlichen, wie gut gestaltet ist, Ihren Code? Wenn Sie Kopieren und Einfügen mehrerer sind Codezeilen viele, viele Male. Vielleicht haben Sie nicht ganz haben das beste Design in Ihrem Code. Vielleicht ist es Zeit, dass die Schleife hinzuzufügen. Im Wesentlichen, hier ist es nur alle zu versuchen, Ihren Code zu tun, versuchen, Ihren Code so effizient zu schreiben wie möglich, so dass Ihr Programm läuft schnellstens. Schließlich haben wir Stil. So Stil ist eine Art von beliebig, subjektiver Begriff. Ich weiß, wir haben offiziell ein Stil, 50 Leitfaden für CS50, wo es sagt Ihnen, oh, Sie sollte einen Raum hier haben. Sie sollten Art von Format Ihr Code auf diese Weise. Sie sollten die Dinge zu benennen diese Weise. Ich weiß nicht wirklich, per se, wie Sie beschließen, Ihre Code-Stil, wie lange, wie Sie konsequent bleiben. Zum Beispiel, wenn Sie mögen einen Raum zu verlassen, nachdem Sie Ihren vier vor vier Schleife, nur tun, dass jedes Mal. Keine Art von tun. Tun Sie es nicht zu anderen Zeiten. Wenn Sie eine lockige halten Zahnspangen Raum eine bestimmte Art und Weise, nur immer tun es auf diese Weise. Keine Art von tun es irgendwo hier und irgendwo nicht da. Wenn wir mit einem Gehalt, es ist wirklich schwierig, wenn ich keine Ahnung, wie Formatieren Sie den Code, Dinge sind verrückt und fehl am Platz. Wenn Sie nur halten sie im Einklang, es ist für mich viel einfacher als der größere in der Lage sein, Ihren Code zu lesen. Es ist für Sie viel leichter als Student in der Lage, durch Ihren Code zu suchen sein, und sehen, was ist los mit es Slash, warum gibt es Probleme. Stil ist eine der einfachsten Dinge, Sie Kerle tun können, um die volle Punktzahl zu bekommen. Im Wesentlichen, wenn Sie nur kümmern, wenn Sie fünf Minuten der Aufmerksamkeit um Ihren Code zu jeder Woche, sollten Sie geben wird sehr voll Style-Punkte. Schließlich haben wir eine so genannte der Multiplikator des Umfangs. Scope-- Ich weiß, es ist ein großes Wort, vor allem in dieser Klasse. Aber Umfang, all das Mittel ist, dass Sie versucht sind die psets an die besten Kräften. Wenn Sie in drei drehen Ihre vier Probleme und nicht einmal versuchen, die letzte, sind Sie wahrscheinlich werde einige Punkte auf Umfang zu verlieren. Selbst wenn Sie nur das Problem zu beginnen, Ihr Bestes tun, um durch sie zu gehen. Auch wenn es nicht funktioniert, schalten Sie ihn in, denn das zeigt, und zeigt, für uns, dass Sie versuchen, dass Sie das Problem eingestellt versucht an die besten Kräften. Und dann können wir Ihnen volle Punktzahl für die Rahmen. Scope ist auch, wenn wir sehr wichtig sprechen über die niedrigste Punktzahl pset Abfall. So im Laufe der Semester haben Sie Jungs neun psets. Und wir werden tatsächlich werden fallen die niedrigste Punktzahl von denen neun, aber nur, wenn Sie vollen Umfang Punkte. Also, wenn Sie in einem unvollständigen pset drehen, Leider können wir nicht fallen, dass man, weil Ihr Anwendungsbereich Punkte wurden nicht abgeschlossen. Selbst wenn Sie also die schreckliche Woche haben wo du stirbst und du krank bist oder Ihr Hund stirbt, Ihre Katze stirbt, und Sie sind bei den Hausaufgaben überlastet ist, nur versuchen, die pset. Tun Sie es, das Beste aus Ihrer Fähigkeit. Wenn es nicht funktioniert, ist es egal. Schalten Sie ihn einfach in. Mindestens wir geben können Sie weist für die Mühe. Ein für die Anstrengungen in dieser Klasse. Mindestens niedrigste Punktzahl Abfall für Anstrengung. Also ja. Das ist ziemlich viel es. Hat jemand Fragen haben, so weit, wie wir Grade in der Klasse? Oder irgendwelches? Jedes von diesen so far-- Abschnitte, Bürozeiten? Cool. OK. Also das ist ein Thema, das nicht einen wirklich mag, darüber zu sprechen. Ich habe nicht wirklich Lust, darüber zu sprechen. Ihr seid nicht wirklich wollen, zu hören, mich darüber zu sprechen. Aber leider, wir alle haben, darüber zu sprechen. David verbrachte 20 Minuten Vortrag darüber zu reden. Und dies ist der Gegenstand der akademischen Ehrlichkeit. So dass wir alle hier haben wahrscheinlich geschrieben ein Essay irgendwann in unserem Yale Karriere. Wir haben wahrscheinlich bekommen ein Gespräch, wo wir wurde gesagt, unsere Aufsatz nicht plagiieren, denn das Werk ist nicht unsere. In der Informatik, haben wir die gleiche Art von Konzept. Alle Arbeiten, die Sie einreichen, aller Code, den Sie schreiben sollte Code, den Sie geschrieben haben. Sollte nicht Code, den Sie haben werden von woanders kopiert. Sollte nicht sein, dass Code Sie gegoogelt und in geplumpst haben und Sie nicht wirklich wissen, ob es funktioniert. Sie Art haben ein Gefühl der was er tut, aber nicht wirklich. Wenn im Zweifel, im wesentlichen, es ist nur angemessen sein. Auf unserem Lehrplan, haben wir eine ganze Liste von Dingen, sehen wir als angemessen gegenüber nicht zumutbar. Zum Beispiel, vernünftig ist, dass Sie und Ihr Freund Diskussion, was der beste Weg zu gehen zu logisch ein Problem zu lösen. Das ist recht vernünftig. Was wäre nicht sinnvoll ist, wenn Sie Jungs kamen zusammen, tippte den gleichen Code, und in der gleichen Code gedreht. Das ist nicht in Ordnung. Das Gleiche gilt, Art von einem Essay. Wenn Sie diskutieren möchten mit Ihrem Freund, hey, das ist, was ich will, darüber zu schreiben. Dies sind die Schritte Ich möchte nehmen, darüber zu schreiben, groß. Das ist wunderbar. Sie miteinander zusammenarbeiten. Wenn euch starten Schreiben dasselbe, drehen in der gleichen Schrift, das ist weniger OK. Also, wenn Sie Zweifel haben, einfach nicht tun. Hier, in CS50, Skripte müssen wir uns dass Lauf zu automatisieren, um zu testen nicht nur die Richtigkeit des Codes, sondern auch die Einzigartigkeit Ihres Codes. Also bitte nicht setzen uns in die Lage des Habens, um Ihren Fall zu ExComm beziehen. Bitte nur für alle, lassen Sie uns einfach machen dies eine wunderbare Erfahrung. Jeder lernt besser, wir alle sind glücklicher, und wir alle sind bis zu setzen Erfolg in diesem Kurs. Etwas, das sehr ist Einzigartig an dieser Klasse dass ich denke, jeder sollte wirklich Beachten Sie, dass wir was heißt das Bedauern Klausel in unseren Lehrplan. So im Wesentlichen, innerhalb von 72 Stunden, wenn Sie glauben, dass Sie etwas getan haben du bist nicht wirklich sicher war Falls wenden Sie sich bitte zu uns kommen. Wir versprechen Ihnen, dass innerhalb von 72 Stunden Wir werden den Fall selbst zu behandeln ohne sich auf einem höheren Autorität in der Verwaltung. Also, wenn Sie zu mir kommen und sagen: Andi, hey, tut mir wirklich leid, aber ich glaube, es gibt ein paar Zeilen in meinem Code letzte Nacht, die ich Art von gegoogelt, erwischte der Stapel Überlauf, kopieren und geklebt, und ich bin wirklich, wirklich leid darüber, lass es mich wissen. Bitte nicht, lassen Sie es eitern und hoffe nur, dass ich fangen. Wir werden es zu fangen. Nur zu mir kommen. Lassen Sie mich innerhalb von 72 Stunden kennen. Wir werden herausfinden, eine Lösung. Und wir versprechen, dass wir nicht zu beziehen Universitätsbehörden im Wesentlichen. So ist es in Ihrem besten Interesse nur ehrlich mit jedermann im Verlauf beteiligt. OK. OK. So, jetzt, schnell, bevor Ich bewege mich auf, hat jemand Fragen zu Logistik wie Kurse, wir werden laufen, wie Abschnitte gehen zu laufen, von alledem? OK. Ja. ZIELGRUPPE: [unverständlich]? ANDI PENG: Ja. So quizzes-- wie viele von euch sind in der Montag / Mittwoch Schnitt? Wie viele von euch sind in Dienstag / Donnerstag? OK, also ist es eine feste Split hier. So ist die Art und Weise, die wir ausführen es an der Yale ist, dass wir gehen, um zwei getrennte haben quizzes-- eine für jede section-- dass wird während des Unterrichts berücksichtigt werden. Ich denke es ist Oktober Ende Oktober, so ähnlich, wie eine Woche des Quiz. Ja, so einfach in die Klasse zu kommen. An diesem Montag oder Mittwoch, Sie werden das Quiz zu nehmen. An diesem Dienstag oder Donnerstag, Sie werden ein anderes Quiz. Aber das gleiche Material abgedeckt werden. Ja. Gute Frage. Ja. ZIELGRUPPE: Wo stehen wir gehen Sie auf unsere Qualitäten zu überprüfen? ANDI PENG: Ja. Also werde ich aus einem werden Senden E-Mail-was auch immer jede Woche wenn Quiz sind graded-- oder, sorry, wenn psets werden benotet. Psets werden in der Regel einge in bis zum Mittag oder Freitag. Also ich verspreche, dass ich versuchen, sie zurück zu Ihnen vom Mittag des folgenden Freitag. Immer, wenn ich eine Klasse pset, werde ich senden eine Benachrichtigung über die Klasse Buch , dass erfahren Sie, Ihre Gäste kann online eingesehen werden. So richtig in dieser Woche, nachdem ich Abschluss mit einem Gehalt von letzter Woche psets, euch wird eine E-Mail zu erhalten Benachrichtigung sage Ihnen, hey das ist, wo Sie gehen, um Ihre Noten zu sehen. Und Sie jeden sehen können Aufschlüsselung Ihrer Noten. Sie können Kommentare zu sehen. Oh, schnelle Sache auch. Der Kommentarbereich in der großen Buch ist, wo ich wahrscheinlich verbringen den Großteil meiner Zeit Grading. So eine Sache, die ist wirklich wichtig, wenn Sie Kerle gerade sehen Ihre Noten auf Ihrem psets wird nicht nur auf der Suche auf der physikalischen Punktzahl sondern auch die Zeit nehmen, wirklich lesen Sie meine Kommentare. Oft, dass gibt Ihnen Feedback darüber, wie Sie das Problem lösen. Wenn Sie tun müssen, etwas ein bisschen besser, konstruktive Kritik ist in der Regel am besten in diesen Kommentaren gegeben. Also bitte, bitte, ich werde , Zeit zu verbringen das Schreiben von Kommentaren. Bitte, ich würde es wirklich schätzen wenn euch würde diese Kommentare lesen. OK. Cool. Gut. So werden wir zu sprechen beginnen und einfach nur schnell die Überprüfung ein Teil des Materials aus Woche null, nur damit wir sind auf der rechten Seite für Anfang dieser Woche die Probleme. So ist die while-Schleife ist eine der drei Arten von Schleifen wir früher diskutiert in dieser Klasse. Eine while-Schleife im wesentlichen ist in der Syntax geschrieben wobei, während einer bestimmten Bedingung, tun dies immer wieder, nicht wahr? Denken Sie daran, in dieser Grafik hier. Du wirst in ein begin bestimmten Punkt in Ihrem Code. Du wirst die Schleifenbedingung eingeben if-- ich nicht wissen-- x kleiner als eins ist. Wenn das wahr ist, Sie gehen um die Schleife auszuführen. Und Sie gehen zu halten tust das wieder, wieder, wieder, immer und over-- weshalb es ein loop--, bis Ihr Zustand wird falsch. So auf diese Weise eine Zeitschleife ist eines der einfacheren Weise um jede Art von Bedingung schreiben, dass muss immer und immer und immer zu wiederholen. Nur vorsichtig sein, wenn Sie schreiben jede Art von Schleife sind dass Sie eine Exit Zustand haben sowie ein Update auf, was es ist, so dass Ihre Schleife nicht nur laufen immer und immer unendlich. Auf jeden Fall, Sie gehen zu wollen, um sicherzustellen, dass Sie ändern einige Aspekte der Ihr Code oder am Ende der Schleife nur um sicherzugehen, dass Sie eine Möglichkeit haben, Fortschritte im Hinblick auf den Zustand dass Sie zu Ende treffen möchten. Ist das sinnvoll, um alle? Wir wollen einfach nicht zu sein in dieser Spirale, wo gefangen wir gehen herum und herum und es gibt keinen Weg, um die Schleife zu brechen. Und jede Schleife im wesentlichen hat eine Art, das zu tun. OK. Zweitens, viele von Ihnen in Ihrem Mario psets hatte wahrscheinlich zu beschäftigen Dieser Schleifentyp. Es ist ein Do While-Schleife genannt. Zuerst von allen, kann mir jemand sagen was der Unterschied zwischen einer do while-Schleife und eine while-Schleife ist? Ja. Publikum: Die do while-Schleife läuft auf den ersten [unverständlich]. ANDI PENG: Ja, genau. So ein Do While-Schleife immer tut was auch immer ist innerhalb des do, innerhalb der Klammern es und tut diese Bedingung vor der Überprüfung für the-- sorry, geht das Code vor Überprüfung für die Bedingung. Und dies ist besonders relevant für uns hier in dieser Klasse, denn die meiste Zeit wir werden aufgefordert, möchten der Benutzer für irgendeine Art von Eingabe. Und dann, in Abhängigkeit von die Eingangs sie uns geben, dann können wir beurteilen, oh, tun wir müssen sie wieder aufgefordert? So in Mario, wenn der Benutzer hat dir eine negative Höhe beispielsweise Sie zum ersten Aufforderung gehen und tun, was drin ist. Dann wirst du, während zu überprüfen. Sie wissen, ist negativ 1, ist, dass eine positive Zahl? Wenn es nicht, werde ich gehen zurück und wiederholen Sie die do und wiederholen und wiederholen und wiederholen, bis sie Schließlich geben Sie eine Nummer, die Sie mögen, dass wir alle in unserem Code zu verwenden. Es ist ziemlich wichtig, Wesentlichen jede Benutzereingabe. Ich kann Ihnen keine Garantie Zeit in einem PSET wobei bitten wir Sie, Eingangs jede Art von Code, wir sind wahrscheinlich zu Ihnen ein Testfall, in dem wir sind werde Ihnen etwas Schlimmes zu geben, das ist werde versuchen, Ihren Code zu brechen. Wenn wir versuchen, Ihnen die Eingabe eine frage Integer, wir geben können Sie eine Zeichenfolge und sehen, wie Sie damit umgehen. Wenn wir Sie bitten, ein Alter beschäftigen, wir Ihnen eine negative Zahl geben kann zu sehen, wie Sie damit umgehen. So stellen Sie sicher Jungs testen für Fälle, in denen Sie nicht das beste bekommen, Eingang, lasst uns einfach sagen. Und ein Do While-Schleife ist oft die beste Weg, um Ihren Code so zu gestalten, dass es erfüllt diesen Rahmen. OK. OK. So ist wohl die diese komplexe Loop aus dem drei dass wir bei bisher sah. Und es scheint, sehr beängstigend auf den ersten. Aber ich garantiere Ihnen, wenn Sie Kerle den Dreh raus, wie man eine for-Schleife verwenden, es ist eines der nützlichsten Dinge, nützlichsten Werkzeuge in Ihrem Arsenal für in dieser Klasse voran. So zum Beispiel im Scratch, wir hatten diese sehr einfache Block dass gerade gesagt, wiederholen Sie diesen bestimmten Sätze bestimmte Anzahl von Malen. Übrigens SAJ-- das ist Scaz Andi Jason. Wir oft melden Sie unsere E-Mails SAJ. Wenn wir sagen, SAJ, nicht verwechselt werden. Das ist nur mit uns. So in Scratch, konnten wir haben ein Block, der sagte, wiederhole ich liebe SAJ! 10 mal. Sehr einfach. Die Logik dahinter ist, eine sehr, sehr einfach, nicht wahr? Ich möchte zunächst durch die erste gehen Zeit und sehen, dass, zum zweiten Mal und sehen, dass, zum dritten Mal, usw. und so weiter, bis Sie auf den 10. Und die Art, wie wir, dass in zu vertreten Code ist nur durch eine einfache for-Schleife. Also für, Sie gehen zu erklären sind Ihre Variable hier, in diesem Fall, mit int. Wir werden es nennen i. Wir werden sie auf 0 zu initialisieren. Und das Anhalten Edition ist werde ich sein, weniger als 10. Und das Update sein wird i ++. Und innerhalb der Schleife, es geht bis es schließlich auszuführen trifft das Ende des Zustand- in welcher Fall es geht um die Schleife zu brechen. Es sollte Zeug sein, dass Sie Jungs haben alle Arten von zuvor gesehen und hatte zu tun, für Ihr Problem set one. Hat jemand irgendwelche Fragen haben Bezug zum Schleifen gerade jetzt? OK. Groß. OK. Also für diejenigen unter Ihnen, die haben lesen Sie die pset spec für diese Woche wissen, dass wir gehen, um zu beschäftigen zu müssen so genannten ASCII und ASCII-Tabelle. Und David in der Vorlesung ging kurz wie Computer essentially-- alles in einem Computer in codierte binär, in Nullen und Einsen. Und die Art und Weise, die Computer in der Lage sind andere Werte zusätzlich speichern In den Nullen und Einsen sind durch Mapping diese Zahlen, um andere Ziffern stellen oder im Wesentlichen andere Zeichen. So dass in diesem Fall ein ASCII table-- alle es tut, ist Karte Zeichen oder Zeichen, um Zahlen. So der Quellcodedatei in Ihre computer-- es sieht, hey, eine Reihe von Nullen und Einsen, Nullen und Einsen, Nullen und Einsen. Das ist, was in die gespeicherte tatsächliche Speicher Ihres Computers. Aber wenn wir Menschen wollen mit dem Computer zu kommunizieren, Wir want-- also beispielsweise, wenn ich den Großbuchstaben A, Ich werde einen Weg brauchen, sagen Sie den Computer neu, oh, wenn ich schreibe Großbuchstaben A, ich meine, diese Darstellung in binärer. Und so ist die Art, wie wir das tun, wird warf ein beliebige Ding namens eine ASCII-Tabelle, wo wir Menschen, wie Programmierer, vor einiger Zeit, wir willkürlich entschieden, dass wir würden diese Nummer zuweisen Werte zu diesen Charakteren. So euch kann dieses Online google. Ich denke, es ist ein Link, um es in Ihrem pset-- nur eine ASCII-Map-Tabelle, ASCII Tabelle. Es übersetzt nur binäre Zahlen in Zeichen. Und es wird sehr sein nützlich für Ihr Problem Set wann immer Sie wollen Berechnung nichts oder wenn Sie wollen sicher angezeigt werden Buchstaben oder Zahlen oder zu manipulieren bestimmte Zeichen. Es wird sehr sein wichtig, dass Sie alle wissen, wie man ein ASCII-Tabelle zu navigieren. So zum Beispiel die Großbuchstaben A wird durch die Zahl 65 dargestellt. Und die Kleinbuchstaben a wird durch 97 dargestellt. Also ist es wichtig zu wissen, dass die Unterschied zwischen den beiden Werten ist 32. Oft, wenn Sie von konvertieren einem zum anderen ist die Differenz 32. Und keine Sorge, wenn Sie Art verwirrt auf diese auf den ersten. Wir gehen über, wie wir beschäftigen diese in Originalcode. OK. Also für diejenigen von Ihnen mit Laptops aus, fühlen Sie sich frei, um eine ASCII-Tabelle nach oben ziehen, denn diese wird wahrscheinlich erfordern euch zu verweisen was die Charaktere sind. OK. So wissen, dass bestimmte Zeichen Karte, um bestimmte Zahlen, wenn ich nur die erste ausgeführt Linie der, dass code-- die printf a, Kleinbuchstaben ein, minus Großbuchstaben A. Hat jemand eine Vermutung, was wäre, Ausdrucken des Bildschirms gerade jetzt? Also zunächst einmal, was bedeutet Kleinbuchstaben a dar? Welche Zahl ist, dass in der ASCII-Tabelle kodiert. Es tut uns leid? ZIELGRUPPE: 97? ANDI PENG: 97, groß. Und was ist in Großbuchstaben A? ZIELGRUPPE: 65. ANDI PENG: Also, was ist 97 minus 65? ZIELGRUPPE: 32. ANDI PENG: OK. Also, was denkt ihr wird gehen passiert, wenn ich, dass Eingangscodezeile in meinen Computer? ZIELGRUPPE: [unverständlich]. ANDI PENG: Leider sprechen. Keine Sorge. Dies ist eine sehr sichere Umwelt, minus der Kamera. Wir werden alle zu-- keine Sorgen. Nur werden wir alle, um wie so tun ist es gerade wir chillen in diesem Raum. Keine Sorge. Keine Frage ist zu dumm. Keine Antwort ist eine dumme Antwort. Ich bin wahrscheinlich, Fehler zu machen im Laufe meiner Lehre. Im Ernst, Leute, nur platzen sie heraus. Seien Sie Vertrauen in sich selbst, weißt du? Also, was war das? Wer hat gesagt, dass die letzte Antwort? OK. Schreien, dass schön und klar. ZIELGRUPPE: 32? ANDI PENG: 32. OK, lassen Sie uns diesen Code ausführen und sehen, ob das, was passiert. OK. So wie Sie Jungs können Art sehen die typische Schreibweise Ich habe Einrichtung hier für, wie wir uns zu beschäftigen jede Art von Programm in unserem Computer. Wir haben unsere Hauptfunktion innerhalb unserer Hauptfunktion. Ich werde einfach zu kopieren und fügen Sie diese Codezeile. Auch vorsichtig sein, wenn Sie Kerle kopieren und Einfügen von Code. Manchmal bestimmte Betreiber nicht über Einfügen korrekt. In diesem Fall wird der Minus Zeichen war eigentlich ein Bindestrich. Und damit der Computer nicht abholen. Also musste ich zurückgehen und physisch neu eingeben, dass. Nur vorsichtig sein, wenn Sie Kerle sind zu tun. OK. Wir werden das hier laufen. So dass wir auf CD geht in unserer section2. Ich habe dieses Programm asciimath genannt. Also denken Sie daran, wenn wir irgendein laufen Programm zum ersten kompilieren wollen wir indem durch unsere make auszuführen. Und dann, um tatsächlich ausführen möchten wir das Programm, indem Sie Punkt-Schrägstrich. So werden wir ./asciimath. Richtig, es wir gehen. Und wir sehen, 32. Gut gemacht. Sie verdienen ein Stück Schokolade. Süßigkeiten für Sie. Es tut uns leid. Gut. OK. So können wir zurück zu unserem Beispiel hier. Aah, nein. Aah. OK. Ich werde einfach, es so zu halten. OK. OK. So wie Sie Jungs sehen können, was wir tun können viele sehr interessante Dinge, viele sehr coole Dinge, viel sehr komplizierte Dinge mit ASCII-Zeichen und Zahlen. Wenn Sie unten zu Zeile fünf, , dass es eine Menge zu folgen. Wir gehen nicht zu gehen, durch den Abschnitt. Fühlen Sie sich frei, wenn Sie können, Grund ist es auf Papier zunächst auf das, was geschehen sollte, wenn Eingabe wie eine Reihe von Werten. Beispielsweise in der letzten Zeile, haben wir z-- die eine gewisse number-- darstellt a-- was ebenfalls ein bestimmte number-- plus 1 modulos 26 sowie in Kleinbuchstaben ein. Wenn euch lesen Sie weiter durch diese, die Sie Möglicherweise sehen Sie ein Muster in kommen wie wir die Manipulation des Codes. Ich sehr, sehr empfehlen nachdem Abschnitt euch alle Jungs, gehen Sie vor und Eingangs denen alle in Ihrem Computer und sehen, welche Art von Zahlen kommen aus und Argumentation über, warum das sind geschieht, denn für Ihre psets es wird sehr wichtig sein, Sie verstehen, warum bestimmte Dinge passieren. Alle diese Folien werden online sein. Also keine Sorgen um den Versuch, physikalisch kopieren Sie sich Notizen. Alles ist online. In diesem Abschnitt selbst wird online sein. Alle meine Quellcode, Ich bin mit online sein. Ja. Haben Sie noch eine Frage? ZIELGRUPPE: Was ist modulos? ANDI PENG: OK. So Modulo ist ein Operator, der zu gehen ist ziemlich wichtig, Ihr Jungs pset Hier. So ist die Art und Weise, dass die Betreiber in C und in der Programmierung der Arbeit ist, dass Sie, was heißt das Division-Symbol und der Modul-Symbol, Das ist genau wie das Prozentzeichen. So in C, wenn Sie eine ganze Zahl zu tun mit einem Schrägstrich dividiert durch eine ganze Zahl ist, C hat eine Tendenz zu schneiden möchten Aus all den Dezimalstellen, weil eine ganze Zahl möchte in eine Ganzzahl umzuwandeln. Es wird nicht gehen zu wollen, eine doppelte sein mit einem Bündel von Dezimalstellen alle danach. Also, wenn ich 3 geteilt durch 2, es geht zum Abschalten der 0,5 und nur Ihnen 1. Also das ist, etwas zu sein, sehr vorsichtig, wenn Sie tut jede Art von Mathematik in der Programmierung, ist, dass die Zahlen, die Sie erhalten, möglicherweise nicht die Zahlen sein dass Sie dachten, weshalb in Rundung ist Ihr letzten pset so wichtig ist. Modulo gibt Ihnen den Rest. So zum Beispiel, wenn ich 3 Modulo 2-- so 3 Prozentzeichen 2-- es würde Ihnen den Rest davon. So 3 geteilt durch 2 ist 1.5. Es ist ein Rest des 1. Es würde Ihnen die 1, der Rest davon. Also, wenn ihr Jungs bewegen durch die ASCII-Tabelle, Modulo wird am Ende als etwas, was sehr wichtig ist, und wir werden, dass später zu diskutieren. OK. Also etwas, das recht ist, ziemlich neu und ziemlich einzigartig dass wir in dieser Woche diskutiert wird das Konzept von dem, was ein Array ist. So Array ist der erste Datenstrukturtyp dass wir zu gehen Begegnung in dieser Klasse. Alle Datenstruktur ist irgendein willkürlich buchstäblich Dinge wie Struktur dass wir als Programmierer geschaffen, , die in unserem Code zu setzen haben, dass können auch andere Teile des Codes enthalten. Also in diesem Sinne, eine array-- betrachten Sie es als einen Aktenschrank, wo, wenn Sie verschiedene öffnen Regalen der Aktenschrank, Sie verschiedene Dinge zugreifen können. In Erinnerung wird ein Array nur tun, die gleiche Sache auf Ihrem Computer. Sie können verschiedene blocks-- wir nennen sie indices-- eines Arrays. Es ist wie ein Block, ein Regal mit Speicher dass wir innerhalb erstellt haben Ihre Computer, die Sie eingeben können, bestimmte Dinge in verschiedenen Räumen. Also mit einer Anordnung, die Sie müssen immer specify-- Sie haben erklärt, ein, um anzugeben Array im folgenden Format. Du wirst zuerst geben Sie den Datentyp dass Sie des Arrays erstellen möchten. Wenn ich ein Array von ganzen Zahlen, Ich werde int genau dort setzen. Wenn ich ein Array von Strings, Ich werde Saiten dort setzen, der Name des Arrays, und dann Sie gehen zu den eckigen Klammern haben. Und in den eckigen Klammern, du bist gehen, um die Größe des Array. Etwas, das wirklich wichtig ist denken Sie daran, bei der Erstellung von Arrays dass, sobald Sie eine erstellen Array, kann diese Größe nicht ändern. Also, wenn Sie wissen, dass gerade jetzt Sie haben eine Reihe von Größe 10, Sie wissen, dass ich werde 10 Zellen innerhalb oder 10 Indizes innerhalb dieses Arrays, und es wird nie zu erweitern oder zu verringern egal was, und dass es derzeit nur 10 Blöcke von Raum in Erinnerung, die gespeichert werden können zugeordnet bis zu 10 Dinge, was Sie gesetzt haben. Also auf diese Weise ein Array Datentyp, Die Datenstruktur, die ein Array ist sehr verschieden von einigen anderen wir werden werden später Für in diesem Kurs. Ja. Zum Beispiel, wenn man wollte ein Array der Größe 3, dass enthaltenen Variablen integer-- oh, sorry, der temperature-- und Temperatur, von Natürlich ist eine ganze Zahl. So würden wir int zu erstellen, die der ist Datentyp, was wir speichern möchten. Wir werden diese Temperaturen rufen aus Gründen der Systematik der Benennung etwas, das wir alle verstehen. Und wir werden in eckigen Klammern haben. Und wir wollen drei Zahlen. So werden wir setzen drei darin. Etwas, das wirklich ist wichtig, im Auge zu behalten ist, dass Arrays null indexiert. Alles, was bedeutet, dass Sie beginnen mit dem Index von 0, und Sie über die laufen Größe der Anordnung minus 1. So zum Beispiel hier, wir ein Array der Größe 3. Es wird zu können zu drei Werte zu halten. Aber die Zahlen, dass themselves-- Anzahl, die Anordnung, dass Index das Array, sind 0 bis 2. Also Jungs, wirklich, wirklich vorsichtig sein, wenn Sie durch Ihre Probleme eingestellt gehst und die Schaffung von jeder Art von Array, weil ein großer Teil der Zeit ist es wirklich, wirklich einfach zu vergessen. Ich eigentlich nicht den Index haben von 3, dass ich derzeit nur haben den Index 2. Und wenn Sie versuchen, Zugriff auf den dritten Index, es geht um das, was ist nannte das Nullabschluss. Es wird nicht um tatsächlich existieren in der Anordnung. Und der Computer nicht zu, dass mögen. Seien Sie also vorsichtig, wenn Sie Dinge einfach Zugriff um sicherzustellen, dass Sie daran denken, dass Arrays sind nullindiziert. OK. Also das erste Beispiel ist nur eine Möglichkeit der Erstellung eines Arrays. Das zweite Beispiel habe ich unten ist nur eine getrennte Wege zu schaffen, was das gleiche Daten Struktur, die wir gerade eingegeben haben. Also anstatt physisch ausgeführt durch und setzen in Temperatur von 0 gleich, was auch immer, Temperatur 1 gleich was auch immer, Temperatur 2 equals was auch immer, ich konnte eigentlich nur direkt erstellen sie alle in einer Linie in Temperatur eckigen Klammern entspricht. Und Bekanntmachung in diesem Fall brauchen Sie nicht um anzugeben, wie groß Ihr Array ist, weil der Computer zu gehen gehen Sie durch und sehen, dass es drei Elemente in den geschweiften Klammern. Und es wird zu wissen, OK, Ich brauche ein Array der Größe 3. Du wirst doch nicht zu brauchen, Eingangs es auf folgende Weise. Und auch, ja, auf diese Weise. Hat jemand Fragen haben darüber, wie wir Arrays machen oder, wie die Struktur einer Anordnung funktioniert? Ja. ZIELGRUPPE: [unverständlich]? ANDI PENG: Ja, genau. Also, wenn Sie deklariert und initialisiert wurden Ein Array, das folgende Verfahren, das ist der zweite Weg, können Sie einfach gehen diejenigen. Und der Computer weiß automatisch, dass es muss zählen, wie viele Elemente sind in diesen geschweiften Klammern, getrennt durch Komma. So, hier sehen sie 65, 87, 30. Damit der Computer weiß, oh, gibt es drei Ganzzahlen. Ich weiß, dass, um ein Array Namen erstellen Temperatur mit drei Elementen in ihm. Gute Frage. Ja. Publikum: Ist es nicht möglich, zu erstellen ein Array mit verschiedenen Arten von Daten dass in sie eingegeben werden konnten? Beispielsweise mit ganzen Zahlen [unverständlich]? ANDI PENG: Für die Zwecke dieser Klasse, nein, gerade jetzt. Wenn Sie eine Daten erstellen strukturieren, wie ein Array, Sie sagen das Computer, hey, ich brauche dich , so viel zuzuteilen Speicher in meiner Festplatte, wobei jede Zelle eine bestimmte Anzahl von Bits. Denken Sie daran, wir in der Woche gelernt Null, dass unterschiedliche Daten Typen haben unterschiedliche Größen? So zum Beispiel eine Zeichenfolge eine unterschiedliche Menge der Platz als ein Zeichen, das eine unterschiedliche Menge an Raum aus einer ganzen Zahl. Und so, wenn Sie nicht angeben, und Sie Mix and Match, welche Arten von Variablen Sie haben, desto Computers wird sehr verwirrt. Und es wird nicht zu wissen, wie viel Speicher, um Ihnen. So für die Zwecke der rechten Erst jetzt können Computer erkennt einen Typ eines Arrays. Gute Frage. OK. So natürlich, die zweite Frage, die wir ist, nun ja, jetzt, da wir eine erstellt Array und wir haben all diese Dinge setzen in der Anordnung, wie wir sind in der Lage sein, es zu zugreifen? So ist die typische Struktur, die wir immer Zugriff auf ein Array ist unsere schöne for-Schleife. Ich verspreche euch, dass wir sein sehen viele dieser Kerl hier. Im Wesentlichen, wenn Sie wollen zur Eingabe von Werten in einem Array oder Sie auf diese zugreifen möchten, die beste Weg, dies zu tun ist eine for-Schleife, weil in einer for-Schleife, die Sie , wie oft Sie gehen, um durch das Array ausgeführt werden soll, weil Sie eine Stop-Ausgabe, nicht wahr? Und jedes Mal, wenn Sie laufen durch, können Sie auf ein anderes Element der Anordnung. Und dies ist auch ein Grund dafür, typischerweise beginnen wir unsere for-Schleifen an der 0-Wert, weil, wenn Sie Arrays, Sie die Null-Index zugreifen. Und so ist es Parallelen sehr schön. You guys kann wollte haben Schreiben für int i gleich 1 ist. i kleiner als oder gleich 3 ist. Aber es wäre nicht ganz so funktioniert auch hier, weil Sie nur haben Elemente 0, 1 und 2. Und so, wenn Sie beginnen waren Ihre i bei Element 1, 2, und 3, Sie gehen zu Ende laufen lassen außerhalb der Grenzen des Arrays, und schlechte Dinge passieren werden. So dass ich hoffe, euch siehe segue warum in den früheren Klassen wir lehren euch, wie man läuft und formatieren Sie eine for-Schleife die Art und Weise, die wir waren. Es ist, weil, jetzt haben wir in Arrays übergegangen ist, Sie können sehen, warum die 0 leiht sich sehr schön auf den Zugriff. So ist die Art, wie wir tun, ist dass-- Ich bin nur ausgedruckt bekommt hier aus Gründen zum Drucken Sie es aus. Aber ich habe meine Platzhalter, Komma. Und die tatsächliche Zugriffs Teil geschieht. Der Name des Felds wurde die Temperatur bezeichnet. Es ist also Temperatur und i-ten Element des Feldes. So wie die for-Schleife durchläuft, es wird bei 0 beginnen. Es wird aus dem Druck 0. Index dieses Arrays. Dann, es wird gedruckt aus dem ersten Element. Dann, es wird gedruckt aus der zweiten. Und dann werden wir brechen. Jeder ist klar auf wie das passiert? Groß. Gut. Hier haben wir also einen Weg, sagen, wenn wir nicht wollen, hartcodieren in-- mich als Programmierer. Ich wollte nicht tatsächlich physisch setzen in jedem Einzelelement dieses Arrays. Wenn ich wollte, statt haben die Benutzereingabewerten, was ist der beste Weg, dies zu tun? Nun, hier habe ich erstellt diese reizende Funktion, in der ich ein Array deklarieren. So int scores-- uns gelassen einfach sagen, wir machen wollen ein Array, das die Noten aller 18 gehalten der Studenten hier in diesem Abschnitt. Ich denke, wir haben ein bisschen bekam mehr als 18 Kinder heute. Aber zum Beispiel willen, lassen Sie uns einfach davon ausgehen, wir hatten 18. Ich würde ein Array-Name punktet mit erstellen Typ int, denn Partituren, natürlich, Zahlen sind. Und ich werde zu haben, 18 in eckigen Klammern, weil das ist, wie viele Schüler I wollen in der Lage, Dutzende von speichern. Und die Art, wie ich würde bevöl die Anordnung, dass ich führen Sie es durch eine for-Schleife, der Natürlich, wobei 0 meine 0. index. Und dann mit 18 als meine Stoppen Ausgabe, weil es 18 Elemente in der Anordnung. Und dann werde ich printf tun, Geben Sie Partitur für student-- yada Blabla. Kann mir jemand sagen, warum ich hier bin Druck i plus 1 und nicht ich? Es ist Art von einem Trick Frage, nicht wirklich. Es ist nicht wirklich physisch beeinflusst den Lauf des Codes. Ja. ZIELGRUPPE: [unverständlich] 0? ANDI PENG: Ja, genau. Es ist ein wenig umständlich zu sagen, hey, Sie sind der 0. Schüler in dieser Klasse. Es ist ein bisschen seltsam. Also uns, als Menschen, nicht wirklich, wie auf der Web-Computern denken. Also auch wenn in der Computer, es Speichern von Werten im 0-ten Index, wenn Wir sind Menschen, wir nicht wirklich gerne, uns als Null beziehen. Also, wenn ich drucken nur das, Ich werde zu drucken, und fügen Sie 1 nur aus Gründen der Klarheit. Also, wenn ich drucken, werde ich sein, in der Lage, Schüler 1 bis 18 zu drucken. Es ist nicht wirklich auswirken der Lauf des Code in irgendeiner Weise, wie ich es zu drucken. Aber seien Sie vorsichtig, wenn Sie tatsächlich Zugriff auf das Array. Wenn Sie sehen, die Partituren i, bemerken Sie hier Ich bin eigentlich Zugriff auf die 0. Index und nicht der 1 plus 0-- oder 1 plus 1, in diesem Fall so Index dass es eigentlich klar. Ist jeder Art von OK auf wie durch diese ausgeführt wird und mit jedem Index Ich bin Sie einen Wert in das Array und ein Array mit 18 Zahlen dass der Benutzer die Eingabe hin? OK. Cool. OK. Wir haben jetzt in etwas, das ziemlich Umzug für dieses Stück gesetzt und relevant. Ich weiß, dass in der Vorlesung, David-- sorry, eine Frage hatten Sie? ZIELGRUPPE: Können Sie es zu vergrößern? ANDI PENG: Ja, so habe ich versucht. Aber ich weiß es nicht. Aus irgendeinem Grund, diese Version von Powerpoint ist wirklich nicht arbeiten auch mit dem Display. So dass wir gerade gehen um es so zu halten. All dies wird Online hochgeladen werden. Tut mir leid, Leute. Ja. OK. So können wir auch Strings. Also, wenn ihr Jungs eigentlich notice-- I weiß Rob ging dies in diesem Vortrag dass er did-- ein String ist eigentlich nur ein Array von Zeichen, wenn Sie darüber nachdenken, nicht wahr? Ein String ist ein Name oder eine Satz oder ein Wort, nicht wahr? Wenn ich eine Zeichenfolge mit dem Namen erstellen Andi-- nur mein Name, A-N-D-I. Sie denken an, dass als nur eine Variable. Aber eigentlich ist es zusammengebrochen in nur ein Array von Zeichen. So ist es ein Charakter bekam in einem Array ein Wert gespeichert. Es ist ein Zeichen von n in die gespeicherte bekam zweite Index und so weiter und so fort. Damit in der Weise, wir tatsächlich haben diese Art der Struktur gesetzt Platz für unsere Saiten. Also hier, wenn ich zur Eingabe der Wort "essen" - so string Wort gleich bekommen String. Wenn ich zur Eingabe das Wort "essen", dass physikalisch die Art und Weise, dass mein Computer speichert diesen String in meiner Erinnerung. Und wenn ich wollte, dass durch laufen und drucken, die so out-- für in i gleich Null ist, denken Sie daran, in der Aula, die wir abgedeckt etwas, das strlen genannt wird, oder die Länge der Zeichenfolge. Weil ich nicht wirklich wissen, wie groß das Array gleich welcher inputting-- des Benutzers Zum Beispiel eingegeben I das Wort "essen", und ich weiß, das ist drei Zeichen lang ist, oder? So konnte ich in einem drei dort setzen und alles wird gut. Aber wenn Ihre Benutzereingaben etwas das ist eine andere Anzahl von Werten, wirst du nicht in der Lage zu sein, wirklich bist wissen, dass, wenn Sie Ihren Code zu programmieren. So ist die Art und Weise, die wir behandeln Testfälle wie das ist, dass wir etwas haben, strlen aufgerufen, die nur eine Funktion ist , dass erfahren Sie, wie lange ein String ist. Also von Wort strlen. Mein Wort ist zu essen. n gleich strlen des Wortes. Kann mir jemand sagen, was das Wert ist eigentlich genau dort? Was bedeutet n repräsentiert rechts Jetzt, in diesem Beispiel, wenn ich essen? ZIELGRUPPE: 3. ANDI PENG: 3, genau. So haben wir für int i gleich Null ist, n gleich 3 ist, im Wesentlichen. Und ich laufen soll bis es weniger als 3i ++. Und es wird im wesentlichen gehen durch und das gleiche tun. Es wird zum Ausdrucken jeder Wert und geben Ihnen E-A-T. Es ist nur eine bezeichnet andere Art, es zu schreiben. Das wird sehr hilfreich sein. Ja. Publikum: Was ist die Vorteile der Umsetzung der n gleich strlen Wortinnere, for-Schleife [unverständlich]? ANDI PENG: Ja. Also, wenn ich sagen würde zu-- beispielsweise wenn ich das zu tun, und dann do-- oop--, dass in meinem Code, es wäre tun wie die gleiche Sache eigentlich ist. Allerdings ist die Art und Weise, David erklärt es während der Vorlesung, wenn einer von euch Jungs erinnere, war, dass, wie Menschen, als Programmierer, wir wirklich versuchen, zu programmieren unsere Code, so dass unsere Computer an die Arbeit so gering wie möglich, so dass dass unser Code ist sehr effizient. Also, wenn ich, dass es, was hatte würde durch meine for-Schleife passieren ist, dass ich zunächst erklären, a Variable namens i wird auf 0 gesetzt. Ich werde prüfen, oh, was ist die strlen des Wortes? Oh, ist das strlen 3. Also ist i weniger als drei? Ja ist es. Ich werde laufen. Und dann das zweite Mal wieder um die Schleife, ich werde i zu erhöhen. i wird einer sein. Und i wird, um zu prüfen, oh, aber was ist der strlen des Wortes? Oh, es ist drei. Und tut diese Art von Verschwendung scheinen, jedes Mal wenn Sie durch die Schleife laufen, zu werden, die Funktion überprüft, obwohl die strlen des Wortes nie wirklich ändert? Es ist also zusätzliche Leistung für einen Computer. Wenn Sie reden über die Dinge beginnen die Milliarden und Milliarden sind und Milliarden von Orten lang, sich vorstellen, Ihren Computer physisch durchlaufen und überprüfen Sie alle, dass jede einzelne Zeit. Deshalb, um nur machen aus Gründen der Effizienz, Wir neigen dazu, nur das tun, weil auf diese Weise nur wir sind Aufruf der Funktion einmal am Anfang, und dass jedes Mal, wenn es durchläuft es geht , um den Wert zu speichern 3 gibt, dass Sie nicht müssen ständig jedes Mal zu überprüfen. Ja. Publikum: Es tut uns leid. Nur [unverständlich]. Könnten Sie tun, int n gleich strlen und legte daß oberhalb des außerhalb der for-Schleife auch? ANDI PENG: Ja. Sie könnten das tun, absolut. Der Grund, warum wir es in hier weil die Art und Weise einer for-Schleife Werke ist, dass es heißt ein lokale Variable in dem Sinne dass alles, was du bist Erstellung innerhalb der for-Schleife existiert nur innerhalb der for-Schleife. So dass nur die Variable i existiert in diesen Klammern. Und hier die Variablen n auch existiert nur in den Klammern. Also, wenn Sie von strlen verwenden waren Wort mehrmals unten, absolut der beste Weg, das zu tun wäre, es zu erklären, bis die Spitze so dass Sie nicht haben, um es einmal zu tun. Ja. Publikum: Warum haben Sie ein neue Zeile nach der Prozent Sehen Sie, wenn Sie alle setzen wollen die Buchstaben daneben zu trennen? ANDI PENG: Oh, ich wollte drucken sie alle in jeder Zeile. Es spielt keine Rolle. Ja, es ist eine Formatierung. Das ist eine gute Frage, though. Ja, wenn ich wollte, um es auszudrucken es hängt alles von nur einer Zeile, Ich würde nicht den Bindestrich in. OK. Jeder gut? OK. Cool. Also ich denke, ich habe genug geredet. Ihr seid an der Reihe, durch die laufen Code und mir sagen, was ist hier falsch. Wo ist der Fehler? So wie Sie sehen können, habe ich ein erklärter neue Array vom Typ String mit dem Namen der Klasse. Und ich habe Sam eingegeben wird, Jess und Kim hinein. Und ich bin versucht zu drucken alle Elemente des Arrays. Kann mir jemand sagen, warum diese geht mir Probleme zu geben? Ich gebe Ihnen Kerle 10 Sekunden, um darüber nachzudenken. OK. Ja? ZIELGRUPPE: Ist das linke Zentrum gleich 3 oder [unverständlich]? ANDI PENG: Richtig. So, wie oft ist dies tatsächlich werde durch diese Schleife laufen? ZIELGRUPPE: Vier. ANDI PENG: Genau. Es wird vier Mal durch. Es wird durchlaufen bei 0, 1, 2 und 3, weil ihr Element ist i kleiner oder gleich 3 ist. Es wird nicht zu stoppen, wenn es an der 2. Es wird halten gehen, bis er trifft 3. Und wie wir wissen, gibt es nur drei Elemente in unserer tatsächlichen Array. Wenn wir versuchen, Zugriff auf die vierte Element oder der Index 3, Sie gehen irgendwo getroffen sind in Erinnerung, die nicht existiert. Es heißt die Nullabschluss. Nichts wird da sein. Ihr Computer wird nicht sehr glücklich, mit Ihnen zu sein. Ja. Hat jemand Fragen haben auf, warum das geschah? Das ist ein gemeinsamer Raum, um zu vermeiden. Ja. Publikum: Ist nicht das erste Schieben Sie haben auch eine Reihe von 2? ANDI PENG: Nein So im Wesentlichen, wenn Sie machen ein Array, dass Halterung rechts gibt, die alle number-- es sagt dir, wie viele Elemente habe ich. Es ist nicht wirklich sagen, mir die Indizes von irgendetwas. Also in diesem Fall, ich weiß, ich will mit drei Stellen zu schreiben, mit drei physischen Orte Halten Sie, was ich will, um zu halten. Also das ist, warum die Zahl drei ist da. Allerdings, wenn ich wollte, um tatsächlich darauf zugreifen, wenn ich sagen wollte, printf Klasse Halterung Zahl, dann Sie gehen, um tatsächlich einsetzen werden der physische Index gibt. Ja, gute Frage. Publikum: So ist die physikalische Index sein soll [unverständlich]? ANDI PENG: Es tut mir leid. Können Sie sprechen ein wenig? Publikum: So ist der physische Index [Unverständlich] jeder der Boxen? [Unverständlich]? ANDI PENG: Ja. Also, ich werde wieder nach rechts hier. Betrachten Sie hier richtig. Wir haben eine Reihe von der Größe 3. Es gibt drei Stellen, wie, physische Platzhalter in hier. Aber sie 0, 1 und 2 genannt sind. Also, wenn ich wollte, auf sie zuzugreifen, die Art und Weise, dass ich auf sie zugreifen ist printf von was auch immer ich hier wollte. Sie müssten zu drucken aus dem Namen es, weil dann der Computer weiß, oh, ich brauche, um zu suchen in diesem Array für die 0. index. Ja. Aber die Größe der sie sich nicht ändert. Die Größe 3 unabhängig davon, wie Sie sie zu beschriften. OK. Jeder gut? ZIELGRUPPE: Also jedes Mal wenn ich [unverständlich]? ANDI PENG: OK. Also in diesem Fall, wir nicht wirklich sich in sie gerade jetzt in den Kurs. Aber wissen, dass ein string-- wie ich sagte, ein String ist im Wesentlichen ein Array von Zeichen. Also, wenn ich ein Array von Strings, ich Art haben eine Reihe von Array- von Zeichen, oder? So dass in diesem Fall, weil ich haben ein Array von Strings, wenn Sie waren die Eingabe einer wirklich langen Wort, dass immer noch belegt nur einen Raum, denn das ist die eine Saite. Aber wenn Sie waren zu denken die Zeichen des Arrays, dann ist die Aufnahme einer Menge mehr Zeichen als jede der anderen Worten gibt. Nicht wirklich wichtig, gerade jetzt. Aber das ist nur allgemein , wie es funktioniert. OK. Also das ist etwas, was ich dir tun lassen eine Menge über den Verlauf des Semesters. Ich muss meine Stimme ausruhen. Ihr Jungs brauchen, um euch selbst zu stimulieren. Viele von Ihnen wahrscheinlich müssen jetzt schlafen. Ich Eingabe zufällige Probleme wo wir als Klasse oder mit einem Partner neben dir gehen um ein paar Minuten Zeit diskutieren darüber, wie wir über die Lösung gehen oder Erstellen eines Programms wie diese. So jetzt wollen wir einen program-- erstellen wir werden es nennen upper.c--, dass Konvertiten ein Kleinwort zu einer Oberklasse- string-- Großbuchstaben, sorry. Wort in Zeichenfolgen, sorry, ist gleichbedeutend. Ich werde sie zu ändern um das gleiche bedeuten. Ja. Nehmen Sie ein paar Minuten. Es muss nicht zu sein, in jeder Sprache geschrieben. Nur in Pseudocode oder logischerweise, wie wir uns selbst gehen über das Tun ein solches Problem. Ja. [SIDE GESPRÄCH] Ich habe auch bemerkt, dass ihr Jungs can-- Ich Art sehen bereits das Programm. Ich denke, meine mangelnde Presenter-Modus ist ein Problem. Aber es ist in Ordnung. [SIDE GESPRÄCH] Ja, bitte, Jungs. Kommen Sie Süßigkeiten. Kommen Sie Süßigkeiten. Publikum: Ja! [SIDE GESPRÄCH] ANDI PENG: Auch, ja, Ich werde anfangen zu werfen Bonbons bei Menschen, die nicht Fragen beantworten müssen. So sollten Sie alle Fragen zu beantworten. Oder ich nehme an Menschen, die Sie beantworten Fragen. Ja, anders herum. [SIDE GESPRÄCH] ZIELGRUPPE: [unverständlich] ANDI PENG: Ja. Ja. [SIDE GESPRÄCH] In Ordnung, Jungs. Nehmen Sie, wie, 10 Sekunden lang gedrückt. [SIDE GESPRÄCH] OK, Jungs. Also, bevor wir versuchen, tatsächlich physisch Code schreiben, eine gute Gewohnheit zu entwickeln ist, dass wir wollen erste Art von Grund logisch, wie wir es tun würde. Sie wollen sicherstellen, bevor Sie physisch starten versuchen, Code in Mario, dass Sie sicher, sicher, dass Sie Ihre Pseudocode haben. Das heißt, die Sie durch was Sie so erstellen müssen , dass, wenn Sie körperlich Schreiben Sie Ihr Programm später Sie besser in der Lage, Fehler zu fangen in Ihrem Code und solche Dinge. Also werden wir einfach anfangen nach-- in Englisch, in Pseudocode, Will jemand geben mir eine generische Erklärung der, wie wir dabei vorgehen? Ja. ZIELGRUPPE: [unverständlich]. ANDI PENG: Sicher, keine Sorgen. ZIELGRUPPE: Können Sie es zu fragen, oder bitten Sie jemanden, der String 1-- ja, String zu erhalten, und dann-- ANDI PENG: Ja, das ist so ein guter Anfang. Ich werde beginnen Sie, sorry, wie Sie sprechen. Also-- ZIELGRUPPE: --die Klein Zahlen höher sind, oder? Oder die Kleinbuchstaben haben hohe Zahlen? ANDI PENG: Genau. Publikum: So dann subtrahieren wir 32 aus, was auch immer [unverständlich]. ANDI PENG: Great. Also wir haben eine Art von allgemeinen Sinn der, wie man über dieses Problem zu umgehen. Zu wissen, dass wir Art gelernt, die physische Möglichkeit, die Zeichenfolgen werden im Speicher abgelegt, was tun Sie schon wissen, dass Sie gehen, um wahrscheinlich müssen in Ihrem Code zu schreiben um durch die Zeichenfolge zu bewegen? Gruppe: für Schleife. ANDI PENG: Eine for-Schleife, genau. Groß. Also haben wir Art haben eine generische Pseudoschrieben diese Art von schenkt Sie stellt fest, wie Sie würde über die Lösung des Problems zu bewegen. Jetzt, wo Sie diese haben, können Sie kann sie zum späteren Nachschlagen auf, wenn Sie versuchen, eigentlich schreiben Ihren Code. So können wir tatsächlich hier. Und ich habe eine Funktion namens bekam upper.c-- gibt es ist-- von nur einer leeren Vorlage gerade jetzt, dass ihr Jungs zu gehen mir helfen, herauszufinden, wie man schreiben diese Linie der code-- keine Zeile Code. Es wird mehrere Zeilen Code. Beim Start jeder Art von leeren pset, was ist das erste, was ich brauche, sich daran zu erinnern, zu tun? ZIELGRUPPE: [unverständlich]. ANDI PENG: Great Yep. Gehören. stdio.h. Oft ist dies eine der die meisten einfach Fehler, die Menschen machen, wenn sie Schreiben, ist, dass sie vergessen, eine Include- wichtige Bibliothek, die sie benötigen. Also, wenn es der Bürozeiten und du bist, Ich weiß nicht, warum mein Code funktioniert nicht. Können Sie mir sagen, warum es nicht funktioniert? Wir werden sagen, haben Sie # include? Sie sollten es # include. OK. Also haben wir die Standard-I / O hier. Ist das der einzige Bibliothek werden wir hier brauchen? Was sollen wir tun? Es tut uns leid. Jemand nur schreien es heraus? ZIELGRUPPE: [unverständlich]. ANDI PENG: Dort gehen Sie. OK. Und wie komme ich zu Beginn jeder Art gehen von Funktion, jede Art von Hauptfunktion in unserem Programm? Int main. OK. Was muss ich nach innen setzen hier? Was ist das erste, was Sie tun möchten? Wenn wir wollen, um eine zu bekommen String von dem Benutzer, was sollen wir gehen zu müssen, Den ersten Zeile zu tun? Sorry, you guys just feel frei zu sprechen und laut. Nur schreien was auch immer. ZIELGRUPPE: Bitten Sie den Benutzer? ANDI PENG: Wie können wir das tun? Ask-- werde ich geben ", bitten Sie den Benutzer"? ZIELGRUPPE: Printf. ANDI PENG: OK. Printf. Was will ich von printf? ZIELGRUPPE: Geben Sie etwas. ANDI PENG: Wie das? Guys, so tun, als wäre ich ein Computer. Körperlich sagen Sie mir bei jedem Schritt dass ich hier zu geben? Mache ich etwas falsch? Sollte ich etwas getippt? Publikum: Sie müssen Anführungszeichen. ANDI PENG: Ich brauche Anführungszeichen? OK. OK. Publikum: Und dann neue Linie. Semikolon. ANDI PENG: Semikolon? OK. Gut. Publikum: Und vielleicht angeben dass Sie es wollen in Kleinbuchstaben? ANDI PENG: Great. Ihr Jungs lachen mich zu vergessen, um einen Strichpunkt setzen. Ich garantiere Ihnen, irgendwo im Verlauf dieser Klasse, Sie werden vergessen, setzen Semikolon, und es werden Sie 3 Stunden dauern, um Sie heraus, warum Ihr Code funktioniert nicht. Es ist für uns alle geschehen. Es wird wahrscheinlich passieren. Holen Sie sich in einer guten Gewohnheit, mit Semikolons. OK. ZIELGRUPPE: Möchten Sie um den Backslash zu tun? ANDI PENG: Sicher. Wollen Sie den Backslash in zu tun? Publikum: Ja. ANDI PENG: Great. OK. Was muss ich als nächstes tun? ZIELGRUPPE: Get String. ANDI PENG: Get String. Also, was kann ich geben? Jemand? ZIELGRUPPE: String s. ANDI PENG: String s. ZIELGRUPPE: GetString. ANDI PENG: Jemand, können Sie mir sagen, wo Diese Funktion GetString herkommt? ZIELGRUPPE: String.h. ANDI PENG: String.h? Sie denken, es ist von string.h? ZIELGRUPPE: [unverständlich]. ANDI PENG: Dort gehen Sie. Es ist aus CS50.h. Wenn Sie immer auf dem ein zu verwechseln Bibliotheksdatei ist oder eine Header-Datei ist, google buchstäblich string.h und ich sage dir, Was sind alle Funktionen die in string.h sind. OK. So, jetzt, dass ich eine Zeichenfolge erstellt und ich habe den Benutzer auffordern dafür, Ich habe es in einer Variablen gespeichert benannt s, was muss ich jetzt tun? ZIELGRUPPE: Überprüfen Sie, ob es in Kleinbuchstaben. ANDI PENG: Es tut uns leid? ZIELGRUPPE: Überprüfen Sie, ob es in Kleinbuchstaben. ANDI PENG: Okay, lassen Sie uns tun. Wie mache ich das? Tatsächlich für die Zwecke der Klasse, gerade jetzt, wir sind gerade dabei, davon ausgehen, dass alles, was dass wir Eingang ist bereits in Kleinbuchstaben. Wenn Sie überprüfen wollen, würden Sie nur eine bedingte Anweisung hinzufügen dass überprüft, die durch lief jedes einzelne Array-Element und überprüft, ob es zwischen bestimmten Werten. Ich vergesse, was die Anzahl von Werten der Klein sind. Sie können es auf der ASCII-Tabelle nachschlagen. Aber ja, das ist ein wirklich guter Punkt. Aber jetzt sind wir gerade dabei, davon ausgehen, dass alle Fäden wir Eingang sind in Kleinbuchstaben. OK. Also, wie würde ich mich über zu gehen dieses Problem als nächstes? Gruppe: für Schleife. ANDI PENG: For-Schleife? OK. Sag mir, was zu tippen. Gruppe: für int i gleich 0 ist. ANDI PENG: OK. ZIELGRUPPE: Oh, wirklich, dann tun Sie ein Komma und tun, n gleich strlen. ANDI PENG: So Wichtigste dass ich glaube, sie ist hier aufgefallen, ist, dass wir nicht haben, um int sagen n das zweite Mal haben wir dieses. Genau wissen, dass in einer für Schleife, wenn Sie erklären, bist, Sie tatsächlich nicht das int der nicht brauchen das zweite Mal, wenn Sie eine Variable zu tun. Sie können n strlen sagen. Publikum: Von s. ANDI PENG: s. OK. ZIELGRUPPE: Dann wird ein Semikolon. ANDI PENG: Sicher. Publikum: Und dann [unverständlich] n. Dann ++ i. ANDI PENG: Great. Gut. Was haben wir im Inneren wollen dieser for-Schleife ist jetzt? Denken Sie daran, wenn wir durchlaufen ein String und durch eine Anordnung ausgeführt, wir wollen, dass die Dinge in es zu überprüfen. Was sollen wir gehen zu müssen? Dies ist eine Art der schwierige Teil jetzt. Jemand eine Vermutung? OK. So zuerst, wie wir selbst zugreifen? Wie können wir sogar den ersten Scheck oder ein Element im Array zugreifen? Wie machen wir das? Was ist die Notation wir verwenden, um das zu tun? Wie lautet der Name dieses Arrays genannt? Es heißt s, nicht wahr? Denken Sie daran, eine beliebige Zeichenfolge ist immer ein Array. So s Halterung i, nicht wahr? Denn das ist der aktuelle Wert oder Indexwert Wir überprüfen. Und wir werden diese gleich eingestellt zu-- wir wollen eine Kleinwert, nicht wahr? Wir wollen, dass drehen lower-- Es tut uns leid, wir wollen einen Großbuchstaben. Wir wollen die Klein schalten Wert in einen Großbuchstaben. Und so like-- Es tut mir leid, wie heißt du? ZIELGRUPPE: Heidi. ANDI PENG: Es tut uns leid? ZIELGRUPPE: Heidi. ANDI PENG: Heidi. Wie Heidi sagte Anfang, wir sind wahrscheinlich gehen zu müssen the-- wir sind wahrscheinlich zu subtrahieren, um haben 32 von was auch immer charc, die, richtig ist? Denn auf einem ASCII- Tisch, der Unterschied zwischen einem Kleinbuchstaben und ein Großbuchstabe ist 32. Also, wenn wir das tun, können wir wahrscheinlich gehen zu wollen, subtrahieren 32, nicht wahr? Wir werden also zu s i zu tun. Hat jeder verstehen, warum ich das getan habe? Denn gerade jetzt, in unser Angebot, Wir überprüfen die 0. Index, nicht wahr? Und in der 0-ten Index des String, das ist das erste Zeichen. Und das Zeichen werden wir anzunehmen, es ist Kleinbuchstaben. Wenn wir es in Großbuchstaben zu machen, wollen wir müssen subtrahieren 32 von seinem Wert, denn in unserem ASCII Tisch, das ist, wie wir es bekommen zum nächsten entspricht Wert, der es in Großbuchstaben macht. Hat jeder wissen, dass? Ja. ZIELGRUPPE: Können Sie auch Sie Kleinbuchstaben ein minus-- ANDI PENG: Ja, das ist also eigentlich wirklich gut. Ich werde darauf zurückkommen Frage nach dem wir dies tun. Ja. Und dann, wenn ich will zu sehen, was los ist, Ich bin wahrscheinlich zu wollen drucken, oder? Jemand sagt mir, was Ich möchte hier drucken. ZIELGRUPPE: printf Prozent c umgekehrten Schrägstrich [unverständlich]. Das ist der Wert von [unverständlich] s i. ANDI PENG: s i, sorry? ZIELGRUPPE: [unverständlich]. ANDI Peng: Ich weiß es nicht. Was denken Sie? ZIELGRUPPE: Nun, ich wouldn't-- Ich glaube, ich würde nicht bring-- Ich würde es aus der innen, weil [unverständlich]. ANDI PENG: Oh, hätten Sie getan, dass? ZIELGRUPPE: Ja. ANDI PENG: Lassen wir es die Art und Weise es ist, und ich werde später erklären, warum. Denken Sie daran, auch wenn Sie haben einen Platzhalter, Sie Klammern um sie setzen möchten. Gut. So sollte dies eine solide Funktion hier zu sein. Lassen Sie uns laufen lassen und sehen, ob es kompiliert. Machen oberen. UH Oh. Das sieht nicht allzu gut. Warum passiert dies? Wie bei jedem Fehler, zu gehen möchten, dass Sie Rücken und mit dem ersten Start, da in der Regel eine Fehlerursachen Lose anderer Fehler, nachdem es. Hier sehen wir upper.c: 18: 25, was erzählt Mich in diesem Programm mit dem Namen upper.c, auf Leitung 18, Fehler implizit deklarieren Bibliothek von Funktionen mit Typ strlen unassigned-- blah, ich weiß nicht, was los ist danach. Alles, was es gerade jetzt sagen mir ist dass etwas los ist auf der strlen. Und der Computer ist verwirrt, weil es ist wie, ich weiß nicht, was strlen ist? Was bedeutet, dass wahrscheinlich Ihnen sagen, du verpasst? Publikum: Du verpasst [unverständlich]. ANDI PENG: Du hast Recht. Genau. Also das ist, wo es darauf zu achten, dass jede Funktion, die Sie in der Nutzung Ihrer Code mit der richtigen Kopf Datei für die Bibliothek, oder Sie gehen zu viele Fehler zu bekommen sind und Ihr Code wird nicht zu wissen, was los ist. So werden wir string.h hier enthalten. Nun, wenn wir versuchen, zu kompilieren oberen. Korrekt kompiliert. Lassen Sie uns dieses Programm. So geben Sie etwas in Kleinbuchstaben. Was seid ihr eingeben möchten? Heraus schreien etwas. In Ordnung, Charly ging gerade herein. Wir werden Charlys Namen eingeben. Charly in Kleinbuchstaben. Und hoffentlich, hoffentlich ist dies gehen zu schreien und spucken Charly in Großbuchstaben. Yay! nicht jeder verstehen, wie Ich ging über die Lösung, dass? Die Möglichkeit, dass ich Manipulation mit Zahlen um etwas zu lösen, dass Ich möchte in Strings zu tun, da Buchstaben und Zahlen können in gleicher Weise Bezug genommen werden, weil ASCII-Kartierung. Also, zurück zu Ihrem Punkt zu gehen, wenn ich wollte hier statt 32 gelegt Großbuchstaben A minus Kleinbuchstaben a wie dass, das wäre genauso gut funktioniert, denn das ist einfach nur der Unterschied zwischen diesen beiden Werten. Wenn ich will, um dieses again-- charly zu machen. Oh nein. Ich denke, wir gingen in die falsche Richtung, yeah? ZIELGRUPPE: [unverständlich] in Kleinbuchstaben ein. ANDI PENG: Dort gehen Sie. Yep. Und spuckt charly. Seien Sie also vorsichtig, wenn Sie Subtrahieren von Werten sind daran zu erinnern, was man ist, größer als die andere. Zum Beispiel hier oben habe ich vergessen dass Kleinbuchstaben a ist eigentlich größer als Großbuchstaben A. Also, wenn ich versucht, sie zu subtrahieren, in die andere Richtung rund, bekam ich 32 negativ. Und mein Computer war wie, Ich weiß nicht, was das ist. Es ist wahrscheinlich nur einige zufällige Wert, der nicht sehr gut. Und so stellen Sie sicher, dass Sie Subtrahieren in der richtigen Länge um das gewünschte Zeichen zu finden. OK. Ist jemand, wie wir verwirrt ging über das Schreiben dieser Funktion? OK. Also eigentlich eine Funktion schon existiert in der Library aufgerufen ctype.h. Der Bibliothek genannt ctype.h. Diese Funktion ist eigentlich bereits für Sie geschrieben. Es ist zum oberen genannt. Usw. für die Zwecke der Diese pset, Sie gehen zu finden, dass Sie wirklich verwenden möchten eine Menge von Funktionen enthalten innerhalb der ctype Bibliothek. Zur oberen, zu senken, ist Ober ist lower-- das sind alles Funktionen dass Sie in der Lage, sehr zu verwenden, sehr schnell in Ihrem eigenen Code, tut genau, was das bedeutet. Wir schrieben, wie man konvertieren einen String in Großbuchstaben. Aber das ist eigentlich der Code dass jemand anderes geschrieben hat und dass Sie zugreifen können, über eine andere Funktion. Ja? Publikum: So können Sie einfach kopieren A ist da drin und tun es für jeden einzelnen Brief? ANDI PENG: Ja, weil ich nicht kümmern uns um die Werte von a. Ich kümmere mich nur, dass die Differenz zwischen ihnen ist 32, nicht wahr? Der Unterschied zwischen Klein b und Großbuchstaben B ist auch 32. Und die Differenz zwischen c und Großbuchstaben C ist immer 32. Ich muss nur noch über die Pflege Unterschied zwischen den beiden, da alle Briefe folgen dem gleichen Muster, nicht wahr? Wenn ich den Unterschied zwischen einer von ihnen, Ich weiß, was der Unterschied zwischen allen von ihnen ist. Gute Frage. Ja. Jeder gut? OK. Oop. OK. Also ein weiteres Konzept, das ist wird sehr nützlich, wie Sie weiter zu entwickeln Ihr Code ist diese Idee der Schaffung von Funktionen oder Abstraktion. So jetzt haben wir alle Algebra gemacht. In der Algebra, Sie sind gelehrt, dass es dieses wunderbare Ding namens eine Funktion Maschine, wo, wenn Sie Eingang eine Art von Zahl, es durch diese wunderbare Funktion läuft und herausspringt eine andere Ausgabe, oder? In Code, geschieht dasselbe in jede Art von Funktion. So konnte ich körperlich schreiben in meinem Körper meines Codes eine Hauptaussage, die tatsächlich unabhängig vom Körper des Code tut. Aber außerhalb, dass kann ich auch schreiben viele verschiedene Funktionen das tun viele verschiedene Dinge. Zum Beispiel haben wir bereits begann mit einigen von ihnen. Printf-- daß eine Funktion, dass jemand anderes bereits, dass schriftliche Wir können in unserem Code aufrufen. In diesem Fall upper--, upper-- ist eine weitere Funktion wir, dass wir geschrieben finden Sie in unserem Code aufrufen. Und also denke ich, warum wir haben sogar Funktionen? Warum gehen wir nicht plop es einfach alle in der gleichen Zeile des Codes? Das macht es für jedermann einfach. Nun, die Gründe für die ist in erster Linie, Organisation. Es ist wirklich ärgerlich gehen durch jemandes Code und eine Funktion wie printf. Wenn euch eigentlich wusste, was der Funktion printf brachte, zu schreiben, es ist, wie 1000 Zeilen Code. Wenn jedes Mal, wenn ich wollte, etwas printf, Musste ich 1000 Zeilen Code zu schreiben, das wäre wirklich ärgerlich zu lesen, Recht? Das ist, warum wir gerade haben schuf diese abstrakte Funktion dass wir bereits jemand anderes woanders geschrieben. Und jedes Mal müssen wir es in verwenden unseren Code, wir müssen nur printf sagen. Und das ist in der Lage, die Funktion zu verwenden jemand anderes in unserem Code geschrieben. Das macht es leichter organisatorisch, um Code zu lesen. Zweitens ist es eine Vereinfachung. Es vereinfacht die Schritte haben wir zu ergreifen, um unser Problem zu lösen. Printf, Funktionen wie printf, Funktionen wie zum oberen Das sind alles Dinge, die uns erlauben, unseren Code zu vereinfachen nach unten, so ist es einfacher. Und letzte, was ist die Wiederverwendbarkeit. Also die Tatsache, dass wir eine Funktion namens printf dass wir rufen viele können Zeiten und erlaubt es, wiederverwendbar sein. Wenn ich printf schreiben, Ich schreibe es nur einmal. Sie existiert nur in diesem einem Ort. Wenn ich es wieder tun wollte, würde ich haben, zu kopieren und das alles in meine zweite Codezeile. Das ist, warum, wenn wir eine Funktion zu erstellen dass außerhalb unserer Haupt vorhanden ist, Wir rufen können auf es und wieder verwenden es, wenn wir, so dass es viel einfacher brauchen für uns als Programme zu schreiben. So ist die Art, wie wir eigentlich schreiben würde eine Funktion ist sehr ähnlich, nicht wahr? Dies ist eine Art der ersten Fall, in dem wir werden sehen eine Funktion Nehmen auf einem Stil anders als unsere int main nichtig. In diesem Fall, wenn ich wollte, Schreiben Sie eine Funktion namens q, oder? Und der int-Wert hier wird alle sagen mir, was will ich dies Funktion, um zu mir zurück? Wenn ich eine ganze Zahl Würfel, Ich werde eingeben möchten. Dies sind die Parameter. Ich werde einen Wert vom Typ int-Eingänge. Und ich werde zurückkehren eine andere Art Wert von int. Und hier, wie Sie kann sehen, alles, was ich tue, wird Cubing, was meine Eingabe als mein Ausgangs und Rücksendung. Also alles, was diese Funktion tut, ist nimmt irgendeine ganze Zahl ist. Es multipliziert es zweimal selbst so dass es Würfel in Wirkung. Und kehrt dann was auch immer, dass ausgegeben wird. So dass in diesem Fall ist es zwei Zeilen Code, die wir hatten, zu schreiben bekommen. Aber wenn wir nennen wollte über dies mehrmals, es ist viel einfacher, dass ein Typ Linie hier, die in Würfel ist als haben, um durch mehrmals zu gehen. So ist die Art und Weise, die im wesentlichen jede Formatieren für jede Art von Funktion wird zu existieren, ist wie hier. So haben wir den Namen der Funktion. In diesem Fall, es heißt Würfel. Und wir nennen es Würfel, weil es ist leicht zu merken. Sie können nennen es Platz und es kann tatsächlich in Würfel geschnitten werden. Spielt keine Rolle. Nur ein Name, der du bist Zuordnung Ihrer Funktion. Dieses Recht ist hier, int, ist die Typ des Parameters die Sie benötigen. Was bedeutet diese Funktion benötigen, um funktionieren? Nun, braucht es einen Eingang. Ich nannte es Eingang. Sie können es nennen, was Sie wollen. Aber ich brauche etwas, vom Typ int. Es wird tatsächlich auszuführen was immer Innenseite Hier der Körper der Funktion. Und dann der Rückgabetyp genau hier, diese int-- alles was man sagt mir, ist dass diese Funktion gehen, um mich in int zurück. Also, es wird in einen int zu nehmen, und es geht um Sie wieder einen int zu geben. Hat jeder verstehen, wie die Formatierungen dieser Art funktioniert? Cool. OK. Also keine Sorgen machen, wenn dies scheint ein wenig abstrakte jetzt. Dies ist etwas, das wir darüber reden. Wir werden in tiefer tauchen später im Verlauf. Die Art und Weise, dass jede Art von höherer Ebene Abstraktion der diese Dinge funktionieren das heißt, im Speicher, in Computer, alles, was bei dieser Art gespeichert Stack, soll ich sagen. Also da oben an der Spitze. Ich weiß nicht, ob Sie Jungs können, dass gut zu sehen. Ich werde versuchen, um es zu vergrößern. Hier an der Spitze, die wir haben die physische Text von dem, was der Computer interpreting-- alle Nullen und Einsen, dass existieren in unserem Computer. Und dann haben wir die initialisiert Daten und nicht initialisierte Daten, was wir als globale Variablen. So Variablen, die es gibt in allen Programmen und im gesamten, Wesentlichen, Code. Keine Sorge, wenn Sie Jungs sind Art unklar, zu diesem Thema. Es spielt keine Rolle, gerade jetzt. Und dann haben wir, was ist rief ein Haufen in einem Stapel. Denken Sie an einen Stapel wörtlich wie ein Stapel von Dingen ein Stapel von unterschiedlichen Sachen, die oben geschoben von einander, dass die verschiedenen speichern Variablen und Syntax in Ihrem Code. Und dann hier ganz unten, wir die Umgebungsvariablen von dem, was Sie in der Ausführung nur deine kleine Code-Zeile. Und wir sind gerade dabei, zu vergrößern in auf dem tatsächlichen Stapelteil. Also hier, wenn wir heran in nur auf diesen Bereich des Stapels, das ist, wie es aussieht. Und das ist eigentlich ziemlich wichtig, wenn ihr über Funktionen sprechen, denn feststellen, dass die Speicher Ihres Computers speichert die Variablen und die Funktionen und die Parameter der sowohl Ihre Funktion und Ihr Hauptvariablen an verschiedenen Orten. So jetzt, Haupt ist die eigentliche Funktion dass Sie in einem Code-Ausführung sind. Sie haben hier die Parameter gespeichert und ihre lokalen Variablen hier abgespeichert. Lokale Variable bedeutet nur eine Variable die nur innerhalb dieser Funktion existieren. Und oben drauf, diese müssen Sie separate Funktion namens cube. Sie haben das ist Parameter sowie jene Einheimischen. Und der Grund, du kannst hier sehen, ist das, was passiert, wenn Würfel nimmt ein Nutzen aus Ihrer Hauptfunktion ist das eigentlich ist es, dass über das Kopieren. Also, wenn ich den Cube gesucht 2 und 8 zurück, dass 2 tatsächlich eingegeben als Parameter, und es ist kopiert, so dass Sie es bestehende an zwei verschiedenen Stellen im Speicher. Und man muss sehr vorsichtig sein, auf das Erinnern die einer von denen, Sie tatsächlich manipulieren. Und ein Beispiel dafür, was passiert das wäre sehr, sehr schlecht existiert hier richtig. Also hier, ich habe, in der Theorie, ein Programm hier eine Hauptfunktion daß Ich erkläre einen int x gleich 1 ist. Ich erkläre weiteres int y gleich 2 ist. Und dann bin ich es läuft mit dieser Funktion genannte Swap, wo ich davon ausgehen, dass es ist das Vertauschen der beiden Werte. Und dann bin ich los drucken Sie sie aus, nicht wahr? Das ist, was ich will dieses Programm zu tun. Also lassen Sie uns kommen und werfen Sie einen Blick. Also, wenn ich tatsächlich einen unterschiedlichen Funktion, wie Sie sehen können, Wir haben hier unsere Hauptaufgabe. Und dann haben wir unsere zweite Funktion hier. Void Swap. Void bedeutet nur, dass es gar nichts zurück. Der Name der Funktion ist genannte Swap, und es ist werde Aufnahme zwei Variablen, int a und int b, von Ihrem [unverständlich] Funktion. So im Wesentlichen in hier, wir sind Passieren x und y in dieser Funktion. Und wenn wir erstellen this-- so wollen wir um einen temporären Wert zu schaffen, oder? Wir werden, die zu einer zuzuweisen. Und dann ein auf nun gleich b geht. Und b wird, zurück zu sein wo die Temp-Wert war, welche ein, weil, wenn Sie Dinge tauschen möchten, können Sie nicht nur gerne tauschen sie. Sie haben zu einem fernzuhalten Hier, so dass er erinnert sich was das ist, weil, sobald Sie tauschen ein, vergessen Sie was das ursprüngliche Wert war, nicht wahr? Also in der Theorie, dieses Programm sollte funktionieren, oder? Wenn ich wollte, um die Swap- zwei, sollten sie zu tauschen. Lassen Sie uns also führen Sie es und sehen, ob es funktioniert. So wie Sie Jungs sehen können, x war einmal 1 und y war einmal 2. Und wenn ich drucken Sie es aus, x ist noch 1 und y 2 ist. Hmm, dieses Programm nicht zu sein scheinen arbeiten die Art, wie ich es will, um zu arbeiten. Will jemand einen Schuss auf nehmen erraten, warum dies geschieht? Es hat mit der Art und Weise zu tun dass verschiedene Dinge sind an verschiedenen Orten im Speicher gespeichert. OK. So euch keine Sorgen zu machen, zu viel über dieses Recht jetzt. Aber wissen, dass die lokalen Cube Variablen waren a und b, weil hier in unserer Funktion, wir haben a und b erklärt als die Variablen, die existieren in Würfel, dass Funktion. Aber wie können Sie, die Parameter sehen, dass es nimmt in wurden hier abgelegt. Aber wir waren nicht wirklich alles zurück. Wir waren nicht wirklich zu ändern x und y. Wir waren gerade ändern a und b. Wir hatten x und y in kopiert etwas namens a und b. Aber wir haben nie wirklich Stell x und y sich. Seid ihr sehen wie das passiert? Ist, dass wir es einfach kopiert über, aber wir haben nicht wirklich gehalten verfolgen, wo sie in Erinnerung waren. Und nun der Computer sucht, oh, ich habe laufen diese Sache durch diese reizende Funktion. Aber x und y sind noch x und y. Nichts ist geschehen sie aufgrund der Tatsache dass dieser Parameter und lokalen Variablen werden in einer anderen gespeicherten Platz im Speicher. Und dies ist eine übergeordnete Konzept, dass wir sehen beginnen später im Kurs. Aber genau weiß, dass dies ein Problem, das passieren kann, und, dass wir herausfinden, Möglichkeiten auf, wie damit um später im Kurs. OK. Gut. So werden die Letzten Konzept sind wir wirklich zu decken das wird, nützlich zu sein für die pset in dieser Woche sind die sogenannten Befehlszeilenargumente. So Rob in seinem Vortrag ging durch Art von kurz auf, wie diese funktionieren. Im Wesentlichen wissen, dass wenn du schreibst wie eine Hauptfunktion, wenn wir schrieb Funktionen, bevor in der Vergangenheit, wir hatten int main nichtig. Und der Grund, warum wir dort hatten ungültig war, weil unsere Programme nicht taten brauchen, um Eingabewerte zu laufen, oder? Als ich lief Mario, habe ich nicht brauchen, tatsächlich nur in etwas geben wenn ich lief Mario. Ich konnte den Benutzer später aufgefordert. Aber das wird nicht immer der Fall sein. Zum Beispiel wird in dieser Woche Problems setzt, wirst du aufgefordert werden, dass in gerade Zusätzlich zur Ausführung Ihres Programms, Sie gehen zu wollen, sind die Eingabe bestimmte Dinge in geraden, wie Sie führen Sie Ihr Programm. So ist die Art, wie wir das tun, wird als ein Kommandozeilen-Argument, das ist wie ein Argument Sie können direkt wie Sie versuchen, Ihr Programm auszuführen. So ist die Schreibweise für diese, es ist ziemlich komplex aussehende, aber es ist wirklich nicht so schwer. So int main-- das ist nur Ihre Hauptfunktion. In argc Komma String argv Klammern. Also alles, was sagt, ist, dass diese int alles argc-- sagt dir ist, dass diejenigen, die Anzahl der Argumente sollte der Computer erwartet. So eine Sache, die wirklich ist wichtig, um zu verfolgen ist die physikalische Namen Ihres Programms zählt zu diesen Argumenten. Also, wenn ich mein Programm haben wollte laufen plus ein zusätzliches Befehlszeile Argument, ich bin eigentlich gehen, um zwei. Argc ist eigentlich los, um zwei sein. Und dann String argv bracket-- alles, was zu tun ist, es ist mir eine geben Array von Strings, das ist werde nur anzeigen und speichern, was all diese Kommandozeilenargumente sind. So zum Beispiel, wenn ich dieses haben wollte Programm, ./copy infile outfile, nicht wahr? Das ist nur eine typische Linux-Befehl. Was ist eigentlich argc? Wie viele Befehlszeilenargumente gibt es eigentlich in diesem? All dies tut, ist eine Kopie der eine Eingabedatei aus dem Namen einer Datei und kopiert sie in eine andere Datei, oder? Das ist alles, dies zu tun. Wie Sie sehen, ich mache es auf einer Linie ohne tatsächlich benötigen Sie das Programm. Was ist unsere argc in diesem Fall? Wie viele Argumente haben wir? ZIELGRUPPE: Drei? ANDI PENG: Wir haben drei, genau. So ist es sehr intuitiv zu nur denken, dass es nur die infile und die Ausgabedatei. Aber wissen, dass der physische Name der Programm läuft Zählungen sind als einer. Also in diesem Fall, ist argc eigentlich drei. Wie wäre es, was ist argv 0? Denken Sie daran, all die Befehlszeilenargumente wurden in einer Reihe von Strings gespeichert. Also, wenn ich versuchen, darauf zuzugreifen, was würde argv Halterung 0 mir geben? ZIELGRUPPE: [unverständlich]. ANDI PENG: Genau. Es würde mich den Punkt geben Slash zu kopieren, weil das ist, die 0-te Element der erste Element meiner Array. Was ist mit argv 1? ZIELGRUPPE: Infile. ANDI PENG: Infile, genau. Was ist mit argv 2? ZIELGRUPPE: Outfile. ANDI PENG: Outfile. Das ist jetzt ein bisschen schwierig. Was denkt ihr argv 3 sein wird mir geben wenn ich versuchte, dass ausdrucken? ZIELGRUPPE: [unverständlich]? ANDI PENG: Hatten Sie eine Hand oben? Ja. Publikum: Eine Alternative. ANDI PENG: Genau. Also denken Sie daran, dass wir in der Vorlesung haben am Ende eines Rennens etwas genannt Nullabschluss? Wir werden in diesem auch erhalten weiter in der Klasse. Aber wissen, dass in der Notation, die Art, wie Sie Ihren Computer weiß, dass es das Ende der Anordnung ist, dass es stellt einen so genannten Null Terminator oder ein Strich null. Also, wenn Sie versuchen, argv 3 zuzugreifen, Sie gehen zu diesen Bindestrich 0 traf. Dies gilt umso mehr für eine Fangfrage. Was ist mit argv 4? Das ist also letzten Nullabschluss, vorbei an den Grenzen der unser Angebot. Was denken Sie, wird gehen passieren, wenn wir versuchen, das zu tun? ZIELGRUPPE: [unverständlich]? ANDI PENG: Es tut uns leid? Sagen, dass etwas lauter? ZIELGRUPPE: [unverständlich]. ANDI PENG: Ja. Das ist der Name des Bereich werden Sie wahrscheinlich zu bekommen. Aber wissen, dass argv 4-- dass können Sie den Zugriff Stellen in Ihrem Computer Speicher, dass Sie wirklich sollte nicht zu berühren, da jetzt wissen Sie, was argv ist. Sie wissen, dass es ist ein Array der Größe 3 das hat dot kopieren, infile outfile und. Wenn Sie versuchen, so weit darüber hinaus gehen dass Sie über die Nullabschluss sind, Ihr Computer wahrscheinlich gespeicherten etwas in argv 4. Und man sollte wirklich nicht sein, Zutritt in argv 4, weil Sie eine Datei haben Schrank und du bist nur erlaubt den Zugriff auf diese drei Ablagen. Aber wenn Sie versuchen, weit über erreichen das Regal, wo Sie berechtigt sind, Sie gehen zu starten Messing mit gerade anderem in den Arbeitsspeicher Ihres Computers. Das wird wirklich, wirklich schlecht. So weiß nur, dass. Seien Sie sehr vorsichtig, dass Sie nicht nur zufällig zu starten Zugriff auf Elemente in einem Array, waren nicht in dem, was Sie erstellen wollen. Yep. OK. So werden wir zu einem anderen zu tun Terminal beispielsweise hier. OK. So Rob schnell in Vortrags den anderen Tag ging dieses Beispiel, wo er hatte int main int argc String argv Klammern, die erzählt wird mir, dass ich gehen, um Befehlszeilenargumente haben. Er hat, wenn argc ist gleich gleich 2-- erinnern, gleich equals bedeutet Vergleich. Wenn es gleich 2 ist, dann bin ich Drucklegung hallo, unabhängig von der ersten Element der Anordnung ist. Else Print, Hallo Welt. Was wird das wohl geschieht im Wesentlichen? Kann mir jemand erklären, nur in Englisch, was dieses Programm zu tun? Ja. Publikum: Wenn jemand in einem Befehl eingegeben und sagte, ihre Vor- und Nachnamen, es wird nicht nur drucken, die erste und sagen, hallo, was auch immer Sie Ihren Vornamen ist. ANDI PENG: OK, lass uns starten Sie es. So zum Beispiel, wenn ich zu machen Diese Datei machen hallo hallo zu-- zu--, was willst du mich zur Eingabe? ZIELGRUPPE: Vor- und Nachname. ANDI PENG: Vor- und Nachname? Räume? ZIELGRUPPE: Ja. ANDI PENG: Kann mir jemand sagen, mir jetzt, was ist argc? Genau richtig da? Ups, Entschuldigung. Lassen Sie mich zurück. Wie viele Befehlszeilenargumente sind-- euch nicht wirklich sehen kann. Aber ich werde versuchen, um es zu vergrößern. Ich versuche. Ja, es gibt drei, oder? Es ist dot Strich hallo, es ist Andi, und es ist Peng. Also, was denkt ihr dies Programm wird sich heraus werden Druck? Oh. Oh, das tut mir leid. Falsche Namen. Es ist Ausdruck, hallo Welt. Hat jemand zu erklären möchten warum das passiert? Ja? ZIELGRUPPE: [unverständlich]. ANDI PENG: Genau. So, hier sind bedingte ist, wenn argc gleich gleich 2. So dass nur in dem Fall, dass es zwei Kommandozeilenargumente. Dann werde ich zu drucken, hallo, was immer es ist. Aber sonst bin ich zu gehen drucken nur, hallo Welt. So jemand will mich Ihnen ein Beispiel zu geben, der, wie ich in der Lage, tatsächlich erhalten, um den Wert von argv 1 zu drucken? Was würde ich muss hier eingegeben? Nur eine Sache, nicht wahr? Weil der Punkt hallo zu bereits zählt als erstes Argument. Ich habe nur noch eine. So dot hallo, wenn ich nur tun, Andi. Hallo, Andi. Hat jeder verstehen, warum das passiert? Ja. Publikum: So wird der Raum zwischen der Befehls line-- ist es [unverständlich]? ANDI PENG: Nein Also der Raum in einer Befehlszeile Argument x, um Ihren Computer zu sagen dass dies der Beginn eines neuen String. So String argv hier-- es speichert alle Ihre Befehle Zeilenargumente in Zeichenfolgen. Und so der Raum, in dem Kommandozeilen argument-- alles, was tut, ist Ihnen sagen, Dieser befindet sich am Ende einer Zeichenfolge und es ist Zeit, sich zu einem anderen. Ja. Das ist ziemlich wichtig, Ihre pset, weil Sie gehen zu testen diese. So hat jemand Fragen zu diesem? OK COOL. Ja? Publikum: So der Grund würden Sie legte Integer-Argument calc statt von [unverständlich] wäre, wenn Sie wollen, um zusätzliche Informationen zu geben [Unverständlich]? ANDI PENG: Ja, genau. Einige Programme benötigen Sie zur Eingabe einer Befehlszeilenargument dass es in vergeht und dass verwendet diese. Ja. Publikum: So was, wenn [unverständlich]? ANDI PENG: Na, was habe ich, um dann in meinem Programm ändern? Publikum: Nur 3. ANDI PENG: Warum ist das passiert, denken Sie? Publikum: Da die [unverständlich]. ZIELGRUPPE: Sie würden zu haben, ändern Sie ihn auf 2 [unverständlich]. ZIELGRUPPE: 1 und 2. ANDI PENG: 1 und 2, genau. Also in diesem Fall würden Sie wahrscheinlich wollen zwei printf statements-- haben eine, die argv 1 gedruckt und die eine, die argv 2 gedruckt. Hier. Ich kann wirklich tun, sehr kurz. Dort gehen Sie. Oh. Nicht ganz, was Sie wollten. Aber wenn euch Kampf mit die Formatierung, wird es herauskommen. Ja. Cool. Ich weiß, wir sind ein bisschen wenig Zeit. Aber ich werde einfach schnell verbringen paar Minuten gehen durch helpful-- ZIELGRUPPE: Sie haben zwei Minuten. ANDI PENG: Ich habe 2 Minuten? Danke. Einige schnelle pset Tipps. Also für diese pset, empfehle ich, wie ich schon sagte, jeder, um die Spezifikation zu lesen. Sie werden schriftlich drei programs-- ein genannt initials.c, nannte man caesar.c, nannte man vigenere.c. Einige wichtige Tipps, Sie Kerle wirklich wollen in mind-- zu halten, so Es ist diese Funktion genannt atoi-- als Ich mag sagen, a trois. Unklar, ob das tatsächlich, wie Sie es sagen. Aber alle es tut, es ist die Eingabe. Er wandelt einen String in einen int. So stellt ein ASCII I Ganzzahl. Es ist nur die Umwandlung ASCII Werte in ganzzahlige Werte. Also denken Sie daran argv, das Array, das speichert alle Ihre Befehle Linie arguments-- es speichert sie alle als Strings. Und so, wenn Sie in der Lage sein wollen, haben eine von ihnen eine ganze Zahl zu werden, Sie gehen zu müssen sind um diesen Wert hier zu verwenden. Modulo, wie wir behandelt früher in der Klasse heute, Hier können Sie die haben Rest, was Sie haben. Wenn wir also wirklich, wirklich großer Zahl in Caesar, was ist, wenn wir das Ende aus einer Kette von Vigenere? Wie werden Sie zu können zu bekommen, dass zu Wrap-around? Wenn ich z getroffen, und ich will sie gehen auf eine, wie soll ich zu bekommen dass zum Wrap-around? Wahrscheinlich verwenden möchten Modulo in dort irgendwo. Zweitens stöbern Ihrer Bibliothek. ctype.h. Das ist eine neue Bibliothek die wir haben. Sie werden eine Menge zu finden wirklich, wirklich nützliche functions-- isupper, islower, toupper, tolower, isalpha, und so weiter. Alle Funktionen, die sehr nützlich sein wird wenn Sie versuchen, herauszufinden, bist, ist dieses Zeichen ein Kleinbuchstabe? Wie kann ich diese konvertieren String in einen Großbuchstaben? All diese Dinge werden sehr zu sein, sehr hilfreich für Ihre pset. OK. Bürozeiten sind von 8.00 bis heute Abend 11:00 Uhr im TEAL Klassenzimmer von morgen sowie Mittwoch und Donnerstag Nacht. Bürozeiten sind in commons. Sehr empfehlen euch alle sofort loslegen, weil Sie nicht wollen, dass sein Junge, der am Donnerstagabend hat Probleme Übermittlung Ihrer pset und wie, ich weiß nicht, was zu tun ist. Ich begann, ich fertig war, legte ich. Versuchen Sie, sich etwas Raum zu geben, weil im Code-Probleme treten immer. Sie wollen sicherstellen, dass dass Sie sich selbst eine Menge Zeit, um in der Lage zu sein um die psets abzuschließen. Cool. Ich werde hier in der Nähe hängen. Publikum: Ist das bereits online? ANDI Peng: Ich weiß nicht, ob es bereits online, aber es wird. Ich werde hier in der Nähe zu hängen, wenn jemand hat Fragen schon. Danke fürs Kommen.