JASON Hirschhorn: Witamy CS50 sekcja, każdy. Nazywam się Jason Hirschhorn. Jestem dużo Twoi TFS, ale wiele Miejmy nadzieję, że ludzie nas dołączy forum, rozszerzenie lub studenci studenci stara się patrzeć przez części, jeżeli brakowało ich część, która tydzień lub tylko nadrobić zaległości, jeśli chcieli recenzję jakiś materiał. Tak jak w programie nauczania, które wszystkie z przeczytałeś, poprawić? Widzę dużo kiwa głową. Sekcje dostarczyć możliwości zbadać przebieg tych Materiał w środowisku bardziej intymne, jak również nurkowania w praktyczne działania. Tak, że w zasadzie to, co my będzie robić co tydzień. Mamy zamiar przejść przez to, co mamy określono jako najważniejszy Zagadnienia omawiane na wykładzie, i te prawdopodobnie również najbardziej przydatne i najprawdopodobniej pojawią się w zestawach problemowych i quizy, a Twój kodowania Życie poza CS50. Więc mamy zamiar iść na te tematy, omówić je, przejść nad nimi, odpowiedzieć na pytania macie, a potem będziemy robić dużo w praktyce problemy kodowania. Wszyscy przyniósł laptopa, co jest fantastyczne. To jest klasa informatyka. Jednak wiele z ćwiczeń, które robimy, nie trzeba będzie się laptopy. Możesz zrobić je na kartce papieru. To jak masz zamiar zrobić je na testy. I rzeczywiście, jest to świetny sposób na Naprawdę wiem, że jak to zrobić coś, jeśli nie masz do zobacz 50 polegać na lub Marka polegać na, mówiąc Ci żadnych błędów. Więc zapraszamy do kodu na Urządzenie run.cs50.net lub, co jest kolejnym narzędziem, które pozwala na zakodowanie online, ale ja również polecam, jeśli nie próbowałem, za pomocą arkusza papieru i próbuje te praktyki problemy na kartce papieru. Bo znowu, to ostatecznie co masz zamiar być poproszono na quizy. Więc zacznijmy od naszych program na dzisiaj. Zamierzamy przejść na niektórych norm dla Nasza sekcja, a następnie jedziemy do nurkowania do tablic, funkcji i wiersz poleceń argumenty, co jest, co wy objęły w ubiegłym tygodniu w wykładzie i poniedziałek, a co będziesz pokrycie więcej jutro. I w końcu, idziemy mówić o pset2. Jeśli mógłbym dostać pokaz rąk, jeśli nie spojrzał na planie dwóch problemów specyfikacja. Powiemy wszystkim. Fantastic. Porozmawiamy o zestawach problemowych w kawałku, ale jeśli czytasz ten zestaw problemów specyfikację, to Wszystko, co musisz zrobić. Jeśli czytasz, że przed przyjazdem do class i sekcja wtorek, będziesz być świetnym położeniu. Możemy przejść przez zbiór problemów, czyli to, co mamy zamiar zrobić na końcu. Zamierzamy przejść logika, upewnij się, wszyscy są na tej samej stronie. Chcę, aby być w stanie opuścić wtorek czuje się bardzo dobrze z czego Wystarczy do tego tygodnia zestaw problemów, a jeśli nie, to z przyjemnością pobyt po i pracować z wami. Ale jest jedna rzecz, że trzeba zrobić, ale myślę, że będzie naprawdę inteligentny, tylko do odczytu zestawu problemu Specyfikacja według klasy we wtorek, który brzmi jak Wielu z was zrobił. Zacznę z porządku obrad każdej klasy więc wiesz, gdzie jedziemy. Jest to również pomocne dla osób oglądających online, ponieważ każdy odcinek jest kolorami, więc jeśli chcesz się do tyłu i po prostu obejrzeć 10 minut, a niż w całym przekroju 90 minut, to można po prostu przejść do sekcji kodowane kolorami i spojrzeć na tę część. Więc próbowałem złamać je w ładny moduły, które pozwalają - jeśli chcesz wrócić i sprawdzić, lub innych osób, które są po prostu oglądając odcinek przejrzenia - aby znaleźć konkretne rzeczy są Aby zwrócić uwagę na i dowiedz się więcej na temat. Słodkie. Normy. Jestem liderem FOP na kampusie. Nie wiem, czy ktoś zrobił FOP. Czy ktoś zrobić FOP? Jedna osoba nie FOP. Dwie osoby nie FOP. Niesamowite. Więc FOP jest Prod. Outdoor Program Orientacja. Bierzemy pierwszaków do lasu i zrobić najbardziej magiczne doświadczenia ich życie, prawda? Tak. Dźwięki o prawo. Więc ja po prostu chciałem, aby rozpocząć nasz pierwszy Sekcja omawiając niektóre normy dla klasy i naszej relacji bo myślę, że są one bardzo ważne. Przede wszystkim, jako tych, którzy jest mój punkt otrzymaliśmy i jest omawiane w tym email, kocham to. To jest moja ulubiona część roku. Byłem tak podekscytowany. I tu od godziny dzisiaj. I nie opuściły tego budynku z wyjątkiem zjeść, bo kocham CS50 sekcji I kocham naukę, kocham pracę z wami. Jednym z moich najważniejszych priorytetów, jeśli nie mój priorytetem, nie tylko dla ta klasa, ale w tym moja druga klasy i extracurriculars, jest wspierać was i wam pomóc, i co w mojej mocy, aby upewnić się, że faceci mają wspaniałe, zabawne, wydajne, wciągające, ekscytujące doświadczenie w tej klasie. To, co mam zaangażowana. Dlatego kocham to zrobić. To jest moja najważniejsza rzecz, wspieranie was. Jeśli masz jakieś pytania na temat wykładu, zestaw problemem, sekcja, życie, nawet jeśli chcesz porozmawiać o Życie, uprzejmie prosimy, aby dotrzeć. Masz mój numer telefonu komórkowego, masz mój e-mail adres, masz moje GChat. Możesz skontaktować się ze mną w niektórych lub wszystkich tych, kiedy, ale prawdopodobnie nie będzie Odpowiedź każdym. I spróbuj i wrócić w ciągu 24 godzin. Często będzie w 20 minut lub 24 minut. Powinienem powiedzieć, że aby to równolegle. Ale dostaniesz odpowiedź dość szybko. Jeśli tekst mi godzinę przed zestaw problemem jest spowodowane, będę cię uspokoić w dół i zrobić głębokie ćwiczenia oddechowe z tobą, ale jeśli nie rozpoczęły, ty pewnie nie do końca, a I nie może naprawdę pomóc tam choć postaram mój najlepszy. Więc zrobię wszystko Mogę Ci pomóc. Prosimy, aby dotrzeć, czy to w punkcie ponownie, w godzinach urzędowania jeśli widzisz mnie, a nawet na zewnątrz. Cieszę się ustawić czas na spotkanie problemów i pracy poprzez z lub przejść nad materiałem. Tak, że jest numerem jeden, wsparcia. Zrobię wszystko, co może Ci pomóc. Numer dwa, Spotkanie w środku. Aż chciałbym być, jestem nie wszechmocny i wszechmogący lub wszechwiedzący, więc nie wiem, wszystko czas, jeśli to, co robię, jest coraz drugiej, jeśli sposób uczę topic pomaga nauczyć się go, lub jeśli są zdezorientowani na temat, ale nie podnieść rękę i poprosić mnie lub wysłać mi e-mail. A nawet jeśli, znowu, są zdezorientowani o czymś na planie problemu. Jeśli nie dotrzeć do mnie, I nie wie, że na pewno. Mam zamiar zrobić w mojej mocy, by sprawdzić się na wy, upewnić, że wszystko jest dobrze, spróbuj nauczyć rzeczy w sposób, , które będą oddziaływać na większość Twoje style uczenia się, ale czy jest co można zrobić, daj mi znać. Wzdłuż tych linii, jeśli chcesz pomocy z zestawem problemów, jestem bardziej niż szczęśliwi, aby pomóc z zestawem problemów. Zamierzamy zrobić wiele że do sekundy połowa tej sekcji. Ale jeśli nie czytałeś problem ustawia kopii i nie patrzył na spacer dzięki i nie patrzył szorty i oczekuje mnie nauczyć, wszystko, co zostało sfilmowane online lub które można znaleźć na CS50 Badanie, które naprawdę nie jest sprawiedliwe mnie lub do innych rówieśników. Więc proszę, jestem bardziej niż szczęśliwi, aby pomóc ty, ale dostaliście się ze mną spotkać w middle. Mamy mnóstwo zasobów na jesteś dostępny na CS50. Wspomniałem niektóre z nich. Prosimy skorzystać z nich. Jeśli jesteś zdezorientowany, jestem więcej niż zadowolony aby pomóc wyjaśnić je w w inny sposób, ale to nie jest fair, jeśli studentów pokazać się w godzinach pracy urzędu, nic się nie zaczęło, a to Czwartkowa noc, a oni oczekują TF chodzić ich przez każdego co za problem ustawić powodu w południe następnego dnia. Ma sens? Ponownie, proszę się z nami spotkać w środku. I na koniec, wysokie oczekiwania. Zamierzam być każdy, kto jest grading w mojej sekcji, lub zabicie Państwa zestawy zadań. Nie wrócili problemu ustawić zero lub jeden jeszcze. Bardzo nam przykro z tego powodu. Zajęło nam to trochę czasu, aby ostatecznie rozstrzygać punkty i teraz możemy zacząć klasyfikacji. Wezmę je do Ciebie tak szybko, jak to możliwe. Oto niektóre z moich advisees tam. Wezmę je do Ciebie tak szybko, jak to możliwe. I dla zestawu problemu dwóch, będziemy na zaplanować i zaczniemy się je do Ciebie dość szybko po włączeniu ich do środka Gdy pojawi się problem w tył, można dostanie wyniki, jak wiadomo z przeczytaniu programu nauczania - poprawności, design, zakres i stylu zdobywa bramkę. Otrzymasz również komentarz. Komentarze są ważniejsze niż wynik. Myślę, że to na pewno powiedzieć, że. Wyniki na żywo to tylko liczba od jednego do pięciu. To jest trudne do odczytania w tym. Trudno poprawić od tych. Ale komentarze wskaże konkretne rzeczy, które zrobił dobrze lub obszary można poprawić i daje pewne pomysły na przyszłość lub alternatywnie sposoby działania. Więc proszę, proszę, przeczytaj poprzez komentarze. Włożyłem dużo czasu na te komentarze. Prosimy o zapoznanie się z nimi i nie tylko przewiń do dołu PDF, szukać swojego wyniku, lub w trybie online i znaleźć swój wynik, a następnie ignorować komentarze. To nie jest, jak jesteś będzie lepiej. To nie jest, jak masz zamiar zwiększyć Twoje wyniki ostatecznie, po prostu patrząc na wyniki. Proszę spojrzeć na te uwagi. A wzdłuż linii wysokich oczekiwań, ponownie, tak jak powiedziałem, można zdobyć od jednego do pięciu. Dwójki, trójki i czwórki są Większość wyników będziesz dostawać. Jedynki i piątki są zarówno bardzo rzadkie. Zawsze wszystko co możemy zrobić lepiej. Ilekroć kod programu, jest zawsze coś mógł zrobić lepiej. Więc zamiast mówić masz pięć cały czas na wszystko i nie wszystko idealne, nie sądzę, każdy z nas naprawdę wierzy, że - albo miejmy nadzieję, że nie robimy wszystko udoskonalić przez cały czas. Więc nie martwić się, jeśli nie dostał piątkę. Pięć nie map na, cztery nie map na B, trzy czy nie mapy na? C. To nie jest jak wyniki pracy. Podobnie jak David powiedział, wiele razy, w semestru end wszystkich wyników i wejście od mnie, twój TF, spotykają się i ustalenie ostatecznej oceny dla Ciebie. Ale znowu, to nie pięć, , Cztery, B, et cetera. Więc mam zamiar mają wysokie oczekiwania na wy. Idę się spodziewać dobrego problemu zestawy i mam zamiar dać Ci feedback jako takie. I to nie będzie oznaczać, że jesteś dostanie gorszą ocenę. You są oceniane pod względem swoje postępy z tygodnia zera do kursu na koniec. I w końcu, w odniesieniu do wysokiej oczekiwania w klasie, Uwielbiam, gdy osób uczestniczy. Rozumiem, niektórzy ludzie czują się bardziej lub mniej wygodne uczestnictwo. Inne osoby uczestniczą nie przez podniesienie ręki i rozmowy cały czas. Ale w tej klasie będą robi wiele małych problemów, dużo mini pytania, a nawet większy kodowania problemów. Więc na pewno działają te ćwiczenia się kiedy robimy je na komputerze lub na arkusz papieru. Ale ja też dać trochę czasu, zanim ktokolwiek ma odpowiedzieć na niektóre z pytań pytam. Tak więc, ponieważ dam wam trochę czasu na o tym myśleć, bo będziemy robić rzeczy w partnerów czasami, Będę oczekiwać wszystkich być zaangażowane nieco. I z braku lepszego terminu, nie będzie prawdopodobnie cold calling, które , gdzie każdy będzie miał szansę pomyśleć o odpowiedzi, a następnie Zadzwonię na ciebie, a następnie powiesz odpowiedź. Nie martw się lub bać o tym. Zrobiłem to w przeszłości i odkryliśmy że jest to o wiele bardziej skuteczne, Przeczytaj także badań edukacyjnych na to, aby określić, czy było to dobra taktyka. Jest to bardzo pomocne, zwłaszcza jeśli dać studentom czas, aby pomyśleć o odpowiedzi i nie czynią je po prostu przyjść i powiedzieć to tuż nietoperza. Ale jeśli nie czujesz się pewnie odpowiedzi, jestem też całkiem dobry czując, że się, a my nie będziemy można umieścić w miejscu, w szczególności na Aparat, mimo że żadne z jesteś na kamery teraz. To są normy mam. Jeszcze jedno wzdłuż linii spełniania w środku. Mam zamiar dać ci faceci Wiele opinii. Proszę o podanie informacji zwrotnej, jak również. Jest strona, sayat.me/cs50. Więc to jest szczery feedback. Jeśli chcesz dać jej podczas sekcji, Mam e-maila, gdy to się dzieje. Zrobimy przerwę w trochę, więc będę przejrzeć informacje zwrotne wtedy. Jeśli kiedykolwiek jakieś uwagi, proszę dać mi tam. Jeśli dasz mi informacje zwrotne na Q, to jest wspaniałe, ale to podręcznik , aby zrobić na końcu. Ale to będzie na koniec semestru tak Nie będzie w stanie przyjąć, że jeden z Reakcje i przekształcić go w nauczaniu wy lepiej. Więc proszę, jeśli masz jakiekolwiek feedback, daj mi to. Uwielbiam komentarze. Kopię do FOP, otrzymujemy informacje zwrotne przez cały czas. Możesz dać mi plusy, dobre rzeczy, delty, rzeczy można ulepszyć. Możesz wypowiedzieć się na temat mojej stroje. To nie będzie tak pomocny, ale jesteś Zapraszamy do skomentowania każdego i wszystko. Proszę, proszę, daj mi informacje zwrotne. Cenię go dużo i to znaczy dla mnie bardzo wiele. Jednym z bardziej normą, zabawy. Będziemy mieć dużo zabawy. Mam nadzieję, że w tym kursie, będziesz mają dużo zabawy. Musimy cukierki w sekcji. Będziemy mieć muzykę. Będziemy nadzieją na poznanie jednego innym nieco dobrze, więc chcę to być zabawa, doświadczenie zaangażowanie. Wiem, że niektórzy z was, które zasypiały w wykłady trzeba było w dniu dzisiejszym, więc miejmy nadzieję, że nie będzie być obecnie. A jeśli jest to obecnie, po prostu nie chrapać, ponieważ mogłoby to zostać sfilmowany. Słodkie. Wszelkie pytania, uwagi lub wątpliwości zanim przejdę na wszystko mamy mówił o? Świetnie. Więc mamy zamiar iść na tablicach pierwszych. W ten sposób można zrobić tablicę. Widzieliśmy to już wcześniej. Masz typ danych, masz imię i nazwisko, a następnie masz rozmiar. Tutaj, utworzyć dwie tablice. Pierwszym z nich jest tablica znaków, i zawiera 26 miejsc. Drugi jest tablicą punktów i ma trzy obowiązuje dla trzech liczb całkowitych. Tak? STUDENT: Czy wszystkie te slajdy dostępne gdzieś dla nas? JASON Hirschhorn: Świetne pytanie. Pytanie było, to wszystkie te slajdy dostępne? Tak. Wszystkie te slajdy będą dostępne, iw przyszłości, będę wysłać je do Ci przed sekcji. Jednak obecnie, ponieważ jest to pierwszy tydzień, mieliśmy późny początek. Więc zwykle, dostaniesz te slajdy, ale będą one dostępne w Internecie i Będę wysłać je do Ciebie tuż po zajęciach. Jeszcze jakieś pytania? Więc znowu, tablice są pudełka, z braku lepsze słowo, które posiadają wielu elementy jednego typu danych, a oni obok siebie w pamięci. A więc jeszcze raz, to jest, jak można zrobić dwa rodzaje tablic. Tak więc po dokonaniu tablicę z że pierwsza linia - int wyniki, wspornik trzy, nawiasu - ty chcą go zainicjować. Chcesz umieścić kilka wartości tam. I jest to, w jaki sposób umieścić kilka wartości w tam, po prostu wybierając Indeks i piśmie numer. Chcę zwrócić na to na płycie. Czy każdy może zobaczyć? Każdy może zobaczyć. Słodkie. Tak, że to będzie mój array nazywa Wyników. Jak widać, jest to rozmiar trzy. Istnieją trzy pola w tam. Każdy z nich może pomieścić co rodzaj typu danych? STUDENT: Integer. JASON Hirschhorn: cyfrowy w tym. Pisaliśmy int wyniki, a pierwszy wyraz jest typ danych, który będzie przejść w polach w tej tablicy. Więc mogę zmieścić trzy. Dlaczego mam zera w górę jest na pokładzie? Dlaczego to powiedzieć zerowy wynik równa się 1? Przypomnij mi o imię i nazwisko. STUDENT: Kurt. JASON Hirschhorn: Kurt. STUDENT: Tak. JASON Hirschhorn: Dlaczego? STUDENT: Bo pierwszy indeks jest zero, zaczynamy odliczanie od zera. JASON Hirschhorn: Więc zaczynamy licząc od zera. To się dokładnie zgadza. To jest mylące część i podróż będzie Ci się, zwłaszcza, gdy jesteś próbuje iteracji tablic, co będziemy robić w trochę. Zaczynamy odliczanie od zera. Więc jeśli chcę odnieść się do pierwszej box, nie box jeden jest. Niestety, jest zerowa box. Drugim jest box jeden, w tym Sprawa, trzeci jest box dwa. Co polu trzech? Gdzie jest box trzech? A jeśli chcę zrobić wyniki, wspornik trzy, nawiasu, co to jest? Więc powiedział znak null. Wszelkie inne myśli? Co to jest uchwyt wynik trzy wspornik? STUDENT: To naprawdę nie istnieje, bo tylko zdefiniowane jako wyniki, Wspornik trzy. JASON Hirschhorn: Więc mówisz tak naprawdę nie istnieje. W niektórych przypadkach, gdy mamy do czynienia z łańcuchy, ogólnie będziemy umieścić wartość null znaków na końcu. Dojdziemy do tego w drugim. Jednak w tym przypadku, nie ma trzecie pole tutaj. Tak więc ostatnie pole w każdej tablicy jest wielkość minus 1. Więc jeśli mamy tablicę n wielkości, Pierwsze pole jest na zero, ostatni z nich jest przy n minus 1. I w tym przypadku, to nie istnieje. Jest tu coś w pamięci, ale to nie jest nasze. Nie jest ich właścicielem. Nie o to poprosić. Tak więc, jeśli spróbujemy uzyskać do niego dostęp, co my będziemy zrobić w trochę, jesteśmy prawdopodobnie będzie wpaść w kłopoty. W tym przypadku, jestem inicjowanie Moje strony tablica z trzech zmiennych. Jesteśmy umieszczenie jednego w polu zerowym, dwa w pole jeden, a trzy w polu dwa. Czy ktoś ma jakieś pytania o inicjowanie tablicy? Więc poszliśmy na to właśnie teraz. Najlepsze wyniki, uchwyty trzy, nawiasu zamykającego, , że nie istnieje. Jesteśmy zerowej indeksowane w informatyce, więc zaczynamy odliczanie od zera. Ostatnie pole dla nas dostępne, to jest trzecie pole, ale to się nazywa box numer dwa. Na dole, to jest alternatywny sposób inicjowania tablic. Więc zamiast tworzenia tablicy na jednym linia, wypełniając pierwsze pole, a następnie Drugie pole, to trzecie pole, możesz robić to wszystko w jednej linii. Tak więc w tej linii, obydwie tablice. Stwarza to dokładnie taki sam tablicę jako co stworzyliśmy tutaj, ale po prostu robi to w jednej linii. Teraz, stworzyliśmy naszą tablicę. Zazwyczaj po utworzeniu tablicy, ty chcą coś z tym zrobić, czy który jest wypełnić go lub dostać rzeczy z niego i wydrukować je na ekranie. W tym przypadku, będziemy za pośrednictwem naszych array wyniki, które inicjowane na Pierwsza linia tutaj w kolorze szarym. A potem w drugiej linii, zaczynamy iteracja tablicy. Czy ktoś ma jakieś pytania dotyczące Struktura pętli for? Więc jest to dla pętli. Mamy warunek początkowy, a następnie Nasz ostatni warunek, a potem iteracji, i, w każdej pętli. A w nawiasy, w tym dla pętla, co się stanie, jeśli były, aby uruchomić ten program? Czy ktoś może mi powiedzieć, co mamy? [? Matu? ?] MATU: Drukuj wszystkie wyniki w każdym wierszu. To wydrukować każdą ocenę w oddzielnym wierszu. JASON Hirschhorn: Co dokładnie to wydrukować? STUDENT: To drukować jedną, potem dwa, potem trzy. JASON Hirschhorn: Dokładnie. To drukować jeden, potem dwa, potem trzy, każdy w oddzielnych liniach, bo idziemy przez tablicę i będziesz zobaczyć, że drugi, printf Oświadczenie, wyniki i. Tak więc w pierwszej rundzie za pośrednictwem naszego dla pętla, i jest równe zero, co oznacza, że ​​jesteśmy uzyskanie wartości w wyniku zerowej - które, jeśli wrócimy do nasz schemat, jest jednym - i wypełnienie - oh, mówi c. To powinno być d%. Załatwiam, że w trochę po I ręka, która się do was. Ale jesteśmy przedstawiając liczbę całkowitą tak to powinno być d% tu, nie c%. Co to jest c% do? STUDENT: znaków. JASON Hirschhorn: Charakter, dokładnie. Co to jest ten drugi? Jeśli nie chcesz zrobić,% d dla całkowita, co jeszcze można zrobić? STUDENT: i. JASON Hirschhorn:% i, dokładnie. Więc wszelkie pytania o iteracji w tablicy? Więc co się dzieje, jeśli możemy to zrobić? Zamiast robić I jest mniejsza niż trzy, mamy i jest mniej lub równy trzy. Co się stanie, gdy ten kod? Tak, Annie? STUDENT: Idą do wydrukowania dziwne rzeczy na czwartej linii. JASON Hirschhorn: Tak pan powiedział, jest to zamiar wydrukować dziwne rzeczy na Czwarta linia? Czy ktoś ma odpowiedzi na jej pytanie? Więc szanse są, że kiedy dostać się do - więc w czwartej rundzie przez nasz na pętli, tak jak myślałem, Annie, to będzie oceniane bracket trzy, które my już zorientowali się, nie istnieje, i mamy zamiar spróbować i dostępu, który należy wydrukować go się, należy użyć go w jakiś sposób. Tak więc komputer będzie prawdopodobnie złość na nas. Masz całkowitą rację. To może zamknąć program całkowicie. To może wydrukować coś bardzo dziwne. Nie można powiedzieć na pewno. Szanse są, że będzie prawdopodobnie uzyskać wściekły na ty i po prostu rzucić od razu. Ale jest to częsty błąd musisz gdzie jesteś tuż po drugim na end, a to jest błąd, który będzie nękają cię całym swoim kodowania. Jednym ze sposobów, chciałbym zrobić, to po prostu na tablica, przejść przez każdej iteracji z pętli na rękę lub na papierze, aby zobaczyć co się dzieje, a potem ogólnie sprawę, oh czekaj, nie powinienem już do mniej niż lub równy trzy. Powinienem był zatrzymany na dwa, co jest co się stanie, jeśli twój stan jest mniej niż trzy. Wszelkie pytania do tej pory? Słodkie. Więc wszyscy mają komputery otwarte. Zamierzamy dać 02:58 minut, aby napisać program, który tworzy tablicę z liczb jednego przez pięć, a następnie drukuje każdego Liczba całkowita w nowej linii. A jeśli masz jakiekolwiek pytania, podnieść rękę. Cieszę się przyjść. Tak jak mówiłem, weźmy trzy minut, aby napisać to. Czy wszyscy są OK, jeśli pójdę do nowe okno, w pobliżu tego? Przykro mi, jeśli nie miał szans do końca, ale mamy zamiar to zrobić razem teraz. Więc się na ekranie, mam # include cs50.h, # include stdio.h. Czy ktoś może mi powiedzieć, co te dwie linie zrobić? Michael? STUDENT: Są to biblioteki że CS50 wykonany i że Steve ma zapisane do użycia w ułatwić sobie życie. JASON Hirschhorn: Więc powiedział, że m.in. biblioteki, jeden, że CS50 wykonane, cs50.h, i jeden, który jest po prostu standard, pochodzi z Pakiet C, stdio.h. Co masz na myśli m.in. biblioteki, chociaż? Czy można być bardziej konkretnego? STUDENT: To sprawia, że ​​tak, że można używać pewnych słów kodu mieć funkcjonować się bez konieczności i sprawiają, że funkcja c samodzielnie. JASON Hirschhorn: można dać mi przykład? STUDENT: Jak printf jest jednym można użyć. JASON Hirschhorn: printf. Więc powiedział printf jest jednym z tych, funkcje, gdzie zamiast napisz printf na własną rękę, printf jest zawiera ona w stdio.h, więc może po prostu użyj go i zakładamy , że będzie działać. W stdio.h, jeśli otwiera tego pliku, to to, jak printf prace, cały kod dla printf? Czemu potrząsając głową? STUDENT: Ponieważ plik header tylko zawiera deklarację funkcji. JASON Hirschhorn: Dokładnie tak. Obejmuje tylko nagłówek pliku deklaracja funkcji. Więc w zasadzie, podczas kompilowania tego, hit Marka hrabia, które będziemy robić w Drugi, kompilator wie, że jeśli użyć printf, printf istnieje. To będzie być zdefiniowane gdzieś. To nie problem dla Ciebie, używając go. A potem on, to będzie to zer i jedynek, które faktycznie zawierają printf jego realizacji oraz połączyć je z kodem. Jak upewnić się, że zawiera zer i jedynek za, powiedzmy, uzyskać ciąg? STUDENT: Pobierz łańcuch jest w cs50.h. JASON Hirschhorn: Racja. Tak, że mówi uzyskać ciąg istnieje, deklaracja funkcji. Ale wtedy jedynek i zer, binarne Plik, który faktycznie zawiera Realizacja get ciąg? Jak upewnić się, że idzie z programem? STUDENT: Przełóż łącznik w argument wiersza poleceń. JASON Hirschhorn: Przełóż łącznik w linii poleceń. Jak ty to robisz? STUDENT: To-l linia w brzękiem JASON Hirschhorn: Dokładnie tak. Mówisz-l CS50, prawda? To obejmuje zer i jedynek. STUDENT: Ale Marka robi że dla ciebie, prawda? JASON Hirschhorn: Dokładnie. Sprawdź czy to dla Ciebie, ale w końcu, nie będzie już Marka lub musisz zrobić Marka na własną rękę, więc to dobrą rzeczą do zapamiętania. Jeśli wybierasz się do korzystania z jednego z tych inne biblioteki, nie tylko trzeba napisać # include i Następnie biblioteki. Musisz także połączyć go w. I te dwie rzeczy są różne. -L CS50 jest inny niż # include cs50.h. Następnie mamy int main szelki kręcone nieważne, a teraz idziemy do kodu wewnątrz main. Pierwsza linia Mam tu jest komentarz , który mówi, utworzyć tablicę z liczb całkowitych jeden przez pięć. Co to jest dobre słowo, aby opisać to, co ja mają teraz na ekranie, po prostu Komentarze wewnątrz main? Jak nazywamy to? STUDENT: Pseudokod. JASON Hirschhorn: Pseudokod. Dziękuję, Jeffrey. To jest dokładnie prawo. Pseudokod. Widzieliście Pseudokod wcześniej? Podnieś rękę, jeśli już używane pseudokod przed problemem ustawione. Około połowa z was. Gorąco polecam za pomocą pseudokod rozbić problemów do mniejsze, bardziej łatwo odgryźć kawałki. Ponadto, jeśli zrobić Pseudokod, ty mają swój komentarz już w dużej mierze wbudowana, dzięki czemu nie trzeba wrócić i spróbować dowiedzieć się, co robisz. Więc może ktoś mi dać tę pierwszą linię utworzyć tablicę z liczb całkowitych jednym przez pięć? Ty? STUDENT: Int, a następnie możesz zadzwonić bez względu na ilość, a następnie plac Uchwyt pięć. JASON Hirschhorn: Więc int liczba, nawias kwadratowy pięć. STUDENT: Równa i następnie nawiasy klamrowe. JASON Hirschhorn: Równa, nawiasy klamrowe. STUDENT: Raz, dwa, trzy, cztery. JASON Hirschhorn: Raz, dwa, trzy, cztery, pięć. STUDENT: I ​​wtedy nawiasy klamrowe i średnik. JASON Hirschhorn: A kręcone szelki i średnikiem. Excellent. Wydrukuj każdy int na nowej linii. Może ktoś dać mnie, że kod, proszę? [? Matu? ?] Śmiało. STUDENT: Dla ( JASON Hirschhorn: Dla ( STUDENT: int i = 0 JASON Hirschhorn: int i = 0 STUDENT: średnik i mniej niż pięć. JASON Hirschhorn: średnik, i mniej niż 5. STUDENT: średnik, i + +. JASON Hirschhorn: średnik, i + +. STUDENT: Zamknięte nawiasy, następnie otwórz klamra. JASON Hirschhorn: Zamknięte nawiasy i dwa aparaty. Wewnątrz szelki? STUDENT: A potem printf "% d / n" JASON Hirschhorn: Sorry, trzymaj się. Printf "% d / n, zamknięty cytat. STUDENT: I ​​wtedy zamknięte cytat, przecinek, count, wspornik i. JASON Hirschhorn: przecinek, Ilość, wspornik i. STUDENT: Sorry, zestaw liczb i. JASON Hirschhorn: Numbers, wspornik i. STUDENT: Sorry. A potem zamknął nawiasów, średnik. JASON Hirschhorn: Closed nawiasy, średnik. Mam zamiar zapisać, że. Jedziemy do licznika. I w jaki sposób uruchomić licznik? STUDENT: Backslash. STUDENT: Dot ukośnik - JASON Hirschhorn:. / Policzyć dokładnie. Dziękuję. . / Liczyć. Jeden, dwa, trzy, cztery, pięć nowych linii. Wygląda na to, że pracował. Tak, Noah? STUDENT: Można także zrobić mniejszą lub wynosi cztery, tak jak mniej niż lub równa cztery? Czy jest jakaś zaleta robi mniej niż pięć, lub po prostu inny sposób pisząc to? JASON Hirschhorn: Więc pytanie jest Ci można to zrobić I jest mniejsza lub Równa się cztery zamiast I jest mniejsza niż pięć. Czy, że pracował sam? STUDENT: Powinno. JASON Hirschhorn: Tak. To całkowicie by działać same. Stylistycznie jest to na ogół mniej niż, a zobaczysz, w drugim przypadku robimy łańcuchy, możesz użyć czegoś nazywa strlen, które widziałeś wcześniej, aby długość ciągu. A nie można zrobić mniej niż lub równa strlen. Można zrobić mniejsze lub równa strlen minus jeden. Więc to jest po prostu ładniejszy zrobić mniej niż strlen. Tak? STUDENT: A rzeczywisty quizy, zrobić musimy przedstawić uwagi na temat naszych Kod, jak również? JASON Hirschhorn: pytanie został w quizach, czy mają zapewnić komentarz? Będziemy więc porozmawiać o quizy, gdy wymyślą, ale ogólnie dobry Zasadą jest, gdy jesteś pisania kodu, przedstawienie uwag. Jeśli masz kod źle, ale komentarz prawo, może trochę kredyt zarówno ze mną, jakbym klasyfikacji Ci na zestawie problemów lub quizu. Więc komentarze są zawsze dobry świadczenia. Słodkie. Liczyć. Doskonała praca. Przejdźmy. Strings. Strings. Widzieliśmy to już wcześniej w wykładzie. To byłem zachwycony, kiedy najpierw znaleźć na to. To prawdopodobnie nie cios niczyjej nic tutaj, ale to jest OK. Struny są tablice znaków, a kończą się, jak powiedziałem wcześniej, null terminator, który to / 0 znaków. Jeśli mamy zamiar wyciągnąć ciąg na wyżywienie, będziemy rysować to tutaj. Więc, jak długo jest ten ciąg? Przepraszam. Jak długi jest ten ciąg? STUDENT: [niesłyszalne]. JASON Hirschhorn: Four? Dlaczego jest to cztery? STUDENT: Ponieważ piąte miejsce jest w postaci pustego. JASON Hirschhorn: Więc piątym miejscu jest w postaci pustego. Więc gdybym uruchomić strlen na tego, to daj mi cztery. Popraw. A tablica, choć gdybym inicjalizacji tej tablicy, jak wiele miejsca Chciałbym poprosić o? STUDENT: Five. JASON Hirschhorn: Five. Chciałbym poprosić o pięciu, ale nie mogę tylko umieścić tu cztery znaki bo muszę umieścić ten nieważne Terminator na końcu. Więc będziemy pisać w "OHAI" i umieścić zerową terminator się na końcu. Powiemy, że jest to ciąg s równa się to. Czym jest ów uchwyt zera? s uchwyt zero, Annie? STUDENT: O. JASON Hirschhorn: O, właśnie. s uchwyt jeden? s uchwyt pięć? s uchwyt pięć? STUDENT: nie istnieje. JASON Hirschhorn: nie istnieje. Dokładnie tak. Spoko. Wszelkie pytania dotyczące zrozumienia strings jak tablice znaków? OK, a następnie. One more program dla was. Napisz program, który pyta użytkownika na sznurku, a następnie drukuje każdego postaci w nowej linii. Więc weźmy trzy minuty napisać ten program, a następnie będziemy kodować go jako grupa. Przepraszam. Czy trzeba to zobaczyć? STUDENT: Nie. JASON Hirschhorn: OK. Weźmy jeden minut do kodu tego, lub przynajmniej zacząć na nim. Tak więc można kontynuować pracę, ale mam zamiar na rozpoczęcie przez niego przechodzi. Tak jak wcześniej, mam na ekranie # Include cs50.h, # include stdio.h. int main pustkę. Wewnątrz szelki kręcone Main, mam dwa komentarze, pseudokod. Jednym z nich jest prosić o ciąg od użytkownika. Drugi jest wydrukować każdy postaci w nowej linii. Więc Anna, możesz dać mi zapytać na sznurku od użytkownika? STUDENT: printf. JASON Hirschhorn: printf? STUDENT: Tak. ( JASON Hirschhorn: ( STUDENT: "daj mi łańcuch. JASON Hirschhorn: "dać me str - oops - ciąg. STUDENT: / n ") średnik. JASON Hirschhorn: Koniec ciąg, zamkniętych nawiasów, średnik. STUDENT: Tak. A potem następna linia, string s = uzyskać ciąg. JASON Hirschhorn: String s = uzyskać ciąg. STUDENT: Tak. A potem () JASON Hirschhorn: () STUDENT: średnik. JASON Hirschhorn: średnik. Fantastic. Więc mam zamiar uzyskać ciąg i Mam zamiar zapisać to w czym? Co jest zmienną utworzony? STUDENT: s String. JASON Hirschhorn: zmienna nazywa ów. To ciąg typu. Dokładnie. Następna rzecz, którą chce się wydrukować każda postać w nowej linii. Kto może mi tego kodu? [Niesłyszalne]? Czy możesz mi to dać? STUDENT: Jasne. JASON Hirschhorn: Zróbmy to. I przepraszam. Nie podoba mi się powtórzyć to, co mówisz bo jesteś coraz to prawo, ale muszą powtarzać to tak, że kiedy spisania tego, mogą one uzyskać wszystkie się tekst na transkrypcji. Więc może po prostu rozmawiać. Niestety, nie mam powiedzieć, to po tobie. Przykro mi, ale - STUDENT: To dobrze. Dla int i = 0 JASON Hirschhorn: dla int i = 0 STUDENT: I ​​mniej niż - JASON Hirschhorn: średnik. STUDENT: Przed tym, możemy umieścić zmienna więc masz int długość nazwy? JASON Hirschhorn: Oh, nie wiesz chcesz umieścić średnik? OK. Więc co chcesz robić po zera? STUDENT: Chcę dostać długość łańcuch s oraz ustawione, że do zmiennej? JASON Hirschhorn: OK, więc jak mam to zrobić? STUDENT: Więc robisz int długość = JASON Hirschhorn: długość Int = STUDENT: S-T-R-L-E-N. JASON Hirschhorn: S-T-R-L-E-N - STUDENT: S. Nawiasach. JASON Hirschhorn: (s). STUDENT: I ​​myślę, że trzeba postawić średnik między dwoma liczb całkowitych. JASON Hirschhorn: średnik od zera? STUDENT: Tak. Następnie umieścić średnik po tym, i można powiedzieć, że mniej niż długość. I mniej niż długości, które jest zmienna. STUDENT: I ​​wtedy średnik. JASON Hirschhorn: średnik. STUDENT: i + +. JASON Hirschhorn: i + +. Jest nasz na pętli. OK, wewnątrz pętli for. STUDENT: A potem zrobić printf. JASON Hirschhorn: printf. STUDENT: Wsporniki. JASON Hirschhorn: nawiasy, cytaty. STUDENT: Nawiasy, cytaty,% c / n. JASON Hirschhorn: c%, OK. STUDENT: / n. JASON Hirschhorn: / n. STUDENT: Zamknięte cytaty. JASON Hirschhorn: Zamknięte cytaty. STUDENT: Comma. JASON Hirschhorn: Comma. STUDENT: S. JASON Hirschhorn: S. STUDENT: Uchwyt i. JASON Hirschhorn: Uchwyt i. STUDENT: I ​​wtedy zamknięte nawiasy. JASON Hirschhorn: Zamknięte nawiasy. STUDENT: I ​​wtedy średnik. JASON Hirschhorn: średnik. Fantastic. Warto więc zapisać to. Producent pisze. Oh boy. Mam kilka błędów. Pierwszy błąd na linii 11, to mówi, Oczekuje wyraz, i to daje mi error, że drugi int, jest błędem. Jest jakiś błąd wokół tam. Czy ktoś wie co to jest błąd? Kurt? STUDENT: Myślę, że to ma być przecinek, a nie średnik. JASON Hirschhorn: OK, przecinek zamiast średnikiem. Więc jest to, że wszystko, co trzeba naprawić? STUDENT: Nie. JASON Hirschhorn: Co jeszcze Czy musimy to naprawić? STUDENT: Musimy to string.h. JASON Hirschhorn: Dołącz string.h. Gdzie muszę się m.in., że? STUDENT: Same place jesteś w tym inne rzeczy, prawo po to stdio.h. JASON Hirschhorn: Zobaczmy, czy to działa po pierwsze dlatego, generalnie lubię naprawić jedną rzecz, a potem uruchomić go, a następnie zobaczyć błędy, jakie otrzymujemy. Więc mamy zamiar wyczyścić terminal kontrolnym n, niech robią zaklęcie. Tak więc kolejny błąd na linii 11. Oczekiwany średnik. A ja wciąż się błędy na tej linii. Więc to nie dał mi błąd mówiąc to nie rozumiem, co strlen jest, ale to daje mi błędy w tej sprawie linia, więc co jeszcze jest nie tak? Oznacz? Marcus. STUDENT: Czy trzeba usunąć Drugi int deklaracji? JASON Hirschhorn: Usuń Drugi int. Spróbujmy tego. Teraz wyczyścić terminal. Producent pisze. Błąd. Pośrednio deklarując biblioteki Funkcja strlen. Więc teraz rozumiem, że błąd. Czego potrzebujemy, aby zawierać? STUDENT: String.h. JASON Hirschhorn: Dołącz string.h, Zrobimy # include string.h na top na ekranie. Ratujmy, należy przeliterować. Teraz opracowywane. Więc znowu, rzeczy potrzebne do pamiętaj linii 12 w naszej pętli gdy dla jesteśmy jej utworzeniu, int i = 0, Długość = strlen (s). Jest to fantastyczna strategia. Styl ten jest wielki, Konstrukcja ta jest świetna. Możemy iść do tych powodów później ale w ten sposób wystarczy tylko zadzwonić strlen raz zamiast każdego uruchomieniu przez pętlę. Jednakże, należy użyć przecinka tam i nie trzeba int ponownie. Jeśli deklarując zarówno tych zmienne razem, nie trzeba int ponownie. A jeśli masz zamiar używać strlen, która jest inna biblioteka funkcja nie ujęte w stdio.h lub cs50.h, dokonać pewien, że to string.h. Kurt? STUDENT: Więc jeśli nie musisz powiedzieć, co długość typ jest, czy to oznacza, że ​​musi być int? Nie można mieć dwóch różnych Typy tam? JASON Hirschhorn: Więc mógłbyś mają dwa różne typy. Długość jest int tutaj, choć. Długość jest int, ponieważ jest przecinek a potem to samo. STUDENT: Więc to zakłada się, że to będzie być takie same jak w pierwszej? JASON Hirschhorn: Dokładnie. Nie będziemy robić tego teraz, ale może zawierać dwie zmienne dotyczące samej linii przy użyciu jednego typu danych. Więc int x, y stworzy dwie zmienne. Więc int x, y, jeśli uda nam się, że to daje mnie nieużywane zmienne x i y, bo nie używamy ich. Tak więc wprowadzenie pustkę przed jest tylko fantazyjne sztuczka, jeśli nie używać coś, aby go używać. Ale, jak widać, tworzę xiy na tej samej linii z przecinkiem. To stworzenie dwóch liczb całkowitych tam. Więc tak, całkowicie możliwe stworzenie dwie rzeczy, na tej samej linii oddzielone przecinkiem. Chcę pozbyć się tych, choć. Więc jest czar. Dziękuję wam do kodowania to za nas. Zróbmy to jeszcze raz, uruchom go. Daj mi łańcuch. [Niesłyszalne], to prawda większość z nich. Co znajduje się ciąg? STUDENT: Hello. JASON Hirschhorn: Hello. H-E-L-L-O, każda postać w jednej linii. Wygląda świetnie. Przyjrzyjmy się jeszcze raz. Zawsze będzie sprawdzić przypadków narożnych. Co to jest dobry case corner sprawdzić? STUDENT: numer? JASON Hirschhorn: numer. Więc włożę w 1, a drukuje się 1. To nie jest pytanie do listów, więc wydaje się, że pracy numerów. Dobry przypadek corner sprawdzić. Co jest kolejnym dobrym corner Sprawa sprawdzić? STUDENT: pusty ciąg. JASON Hirschhorn: Hm? STUDENT: Like pusty ciąg. JASON Hirschhorn: pusty ciąg. Więc niech nie szuka w cokolwiek. A co zostanie wydrukowane? STUDENT: Nic. JASON Hirschhorn: Nic. Wydaje się, że to działa. Możesz spróbować więcej przypadków narożne, ale zazwyczaj numery, różne dane wielka próba, jak również nie jest niczym. Nic, zero, negatywy są zawsze wielkie rzeczy, aby spróbować i rzeczy powinien przetestować, rzeczy na pewno będziemy testować dla i Zobacz 50 przetestuje na. Wszelkie pytania dotyczące spell.c? OK, niech głowę do tyłu. I jeszcze jeden program, dla was pisać. To się nazywa students.c. Jest to program, który pyta użytkownika o pięć nazw, a następnie losowo wybiera i drukuje jedną z nazw. Program ten jest nieco bardziej zaangażowany niż ostatnich dwóch pisaliśmy, więc dlaczego nie bierzemy pięć minut kod go indywidualnie, a następnie my będziemy zakodować je jako grupy. Program ten również obejmować pewne rzeczy może nie widział, więc jeśli masz pytanie, w jaki sposób I zrobić, podnieść rękę. Wpadnę i punkt, który we właściwym kierunku. Ale również robimy to, bo to będzie to dobry sposób na wprowadzenie niektórych Tematy, które są trudne. Tak to działa, prawda? STUDENT: Tak. JASON Hirschhorn: Gdy z kolei w zestaw problemem, istnieje wiele sposobów, aby zrobić to, ale niektóre są bardziej elegancki niż inni. Daj nam nurkować w. # Include cs50.h. # Include stdio.h. int main void, nawiasy klamrowe. Wewnątrz nawiasy, Mam dwie uwagi. Pierwszym z nich jest, zapytaj użytkownikowi na pięć nazwisk. Drugi jest losowo wybrać i wydrukować jedną z nazw. Więc zróbmy pierwszy z nich, zapytaj użytkownikowi na pięć nazwisk. Kto zwrócił się do pięciu nazw użytkownika i może mi powiedzieć jak to zrobić? Tylko dwie osoby nie pierwszą część. Trzy osoby nie pierwszą część. Cztery, pięć. Tom, jak ty to robisz? STUDENT: Możesz zadeklarować ciąg i nazwisko, uchwyt pięć. JASON Hirschhorn: String wymienić wspornik pięć. Więc co to jest linia robi, Uchwyt ciągi pięć? STUDENT: Możesz zadeklarować Tablica ciągów znaków. JASON Hirschhorn: To jest Tablica ciągów znaków. Ile struny będą aby zmieścić się w tutaj? STUDENT: Five. JASON Hirschhorn: Five. Excellent. Będziemy nazywać nazwy, ponieważ mamy zamiar uzyskać wiele z nich. OK, dalej? STUDENT: A potem mają dla pętli - JASON Hirschhorn: Na pętli. STUDENT: - dla i = 0. JASON Hirschhorn: for (int i = 0. STUDENT: średnik. JASON Hirschhorn: średnik. STUDENT: I ​​mniej niż pięć. JASON Hirschhorn: I mniej niż pięć. STUDENT: średnik. JASON Hirschhorn: średnik. STUDENT: i + +. JASON Hirschhorn: i + +. STUDENT: I ​​wtedy zamknięte nawiasy. JASON Hirschhorn: Zamknięte nawiasy, a następnie niektóre nawiasy klamrowe. Wewnątrz nawiasy? STUDENT: A potem printf. JASON Hirschhorn: printf. STUDENT: Otwarte nawiasy, name% d. JASON Hirschhorn: Przepraszam? STUDENT: Nazwa. JASON Hirschhorn: Nazwa. STUDENT: I ​​miejsce, a następnie d%. JASON Hirschhorn: Nazwa, miejsce,% d. STUDENT: I ​​/ n, a następnie zamknięte. JASON Hirschhorn: Więc nazwa, miejsce, D / n%, zamknięte nawiasach. STUDENT: przecinek, i + 1. Przykro mi. Zamknięty cytat, a następnie przecinek, i +1. JASON Hirschhorn: Closed cytat, przecinek, i +1. STUDENT: Tak. A potem następna linia - JASON Hirschhorn: i + 1. STUDENT: Tak. A potem następny slajd Uchwyt jest i nazwy. JASON Hirschhorn: Następna linia Uchwyt jest i nazwy. STUDENT: = uzyskać ciąg. JASON Hirschhorn: = Get - Kapitał G-E-T - ciąg. Ups, przepraszam. STUDENT: otwarty, zamknięty nawias , a następnie - JASON Hirschhorn: otwarta, zamknięta paren. STUDENT: średnik. JASON Hirschhorn: średnik. OK, więc zainicjować tablicę strings, nazwy, a następnie przejść przez dla pętli, a pięć razy wydrukować niektóre monit do użytkownika, a następnie zapisać pięć strun. Czy ktoś ma jakiekolwiek korekty do tego? Tom, myślę, że wszyscy zgadza się z tobą. Wygląda całkiem nieźle. OK. Dlaczego mam 1, chociaż? STUDENT: To znaczy, nie ma się, ale +1 tak, aby Nazwa jednego nazwać pięć. W przeciwnym razie byłoby Nazwa zera, aby wymienić cztery. JASON Hirschhorn: Więc ja 1 bo inaczej byłoby to wydrukowane zera do czterech, ponieważ to w jaki sposób komputery myśleć, ale ludzie naprawdę nie czytać tak. To jest inna sprawa, napotkasz. Czasami podczas drukowania coś użytkownikowi, będziemy chcieli, aby to trochę ładniejsza i robi +1 I w tym przypadku jest sposób, aby to ładniej. Widzę także pięć dwukrotnie nazwę ciągu jest pięć, i to mniej niż pięć. Wiem, gdzie dostał piątkę. Masz to ode mnie powiedzieć Ci pięć nazwisk. Ale jeśli chcemy, aby kod trochę bardziej wytrzymałe, jedna rzecz może zrobić to tutaj, poza int, moglibyśmy zrobić coś takiego, # Define, a my mogliśmy zrobić nazwy 5. Więc w zasadzie wszędzie tam, gdzie piszę kapitału N, kapitał, kapitał M, kapitał E, Kapitał S, że ciąg, to zastąpi , że z 5 w kodzie. Albo niech po prostu nazwać to - my będziemy po prostu nazwać to numer. Więc jestem określające wszystkie czapki Numer do 5. Więc teraz gdzie mam numer 5, I może zastąpić go wszystkim LICZBY czapki. A teraz, jeśli chcę zmienić numer nazwisk, wszystko co musisz zrobić, to ta jedna linia, linia cztery, gdzie mam # Define numer 5, to zmienić do 10, lub zmienić na 4. Gdy kod staje się dłuższy, nie jesteś będzie pamiętał wszystkich miejsc, które umieścić ile nazw chciałeś, w celu, aby nie przegapić jednego, to jest dobry sposób na to, aby znaleźć coś do góry, a następnie po prostu użyć tego wyrażenia wszędzie w całym kodzie. Marcus? STUDENT: Czy to stylistycznie preferowanym niż globalnie definiowania stałe n? JASON Hirschhorn: Więc jest to, że korzystne niż ogólnie stylistycznie zdefiniowania stałej n? Więc mówisz, że może zrobić, int liczba = 5? STUDENT: Czy mają spółgłoski w C czy nie? JASON Hirschhorn: Albo const - w równe. Więc mówisz, że tylko zmienna globalna? STUDENT: Tak. JASON Hirschhorn: Więc stylistycznie, nie ma zawsze jedno prawo odpowiedzieć, ale oba te są lepsze niż tylko rzucanie te random numery całym kodzie. Nazywamy je magiczne liczby. Kiedy patrzę na kodzie lub gdy ktoś czyta przez to, że Nie chcę tylko tych liczb losowych że nie ma sensu. Nawet liczba 26, która na ogół jest liczba liter w alfabecie, lepiej zdefiniować ALPHABET się szczyt i zapisać numer 26 w tym ciągu, czy to ma sens. Albo on problemu ustawić jeden, a nie - ponownie, nie rozmawialiśmy o tym na Czas, ale zamiast tylko rzucanie wszędzie w 25 lub 10, można zapisać numer 25 co kwartał lub 10 jako DIME, i sprawia, że ​​łatwiej kto czyta przez kod do zrozumieć, dlaczego wybrał ten numer. A także dla ciebie, jeśli kiedykolwiek chcesz zaktualizuj kod, to sprawia, że ​​nieco bardziej wytrzymałe. Tak? STUDENT: Czy ten kod również będzie być dostępne dla nas, po? JASON Hirschhorn: Wszystkie z tych kodów że pisaliśmy razem są będzie wysłane Chłopaki i dostępne. Tak. Więc poprosić użytkownika o pięć nazwisk. Losowo wybierać i drukować jedną z nazw. Kto zrobił ten wiersz? To jest najtrudniejsza linia tutaj. Niestety, Tom. Zrobiłeś kawał dobrej roboty, ale jest to nieco trudniejsze. Marcus, śmiało. STUDENT: Więc po pierwsze, masz zamiar muszą zawierać stdlib.h i time.h. JASON Hirschhorn: Więc mówisz, co top, m.in. dwie biblioteki. Chcesz, żebym to S-T-D-L-I-b dot H, biblioteka standardowa, a co był drugi? STUDENT: Time.h. JASON Hirschhorn: # include time.h. To są dwie biblioteki. Zakładam, że teraz mamy zamiar używać Funkcje, które są zawarte w tych dwa, dlatego potrzebne włączenie ich? Uczeń: Tak więc, po pierwsze, że jesteś będzie chciał napisać srand. JASON Hirschhorn: Srand. STUDENT: (time (0) JASON Hirschhorn: Sorry. Srand (time ( STUDENT: 0. JASON Hirschhorn: 0. STUDENT:)), średnik. JASON Hirschhorn: Kolejny zamknięty nawias? Średnik. Zamierzam po prostu wymienić Twój zerowy NULL. To będzie zrobić to samo, ale ogólnie, zobaczysz NULL, które będziemy rozmawiać o tym linia w drugim. STUDENT: Stylistycznie lepiej? JASON Hirschhorn: Generalnie ludzie Prawo NULL, ale samo. STUDENT: A potem int nazwa. JASON Hirschhorn: Int nazwa. STUDENT: = JASON Hirschhorn: = STUDENT: Rand. JASON Hirschhorn: Rand. STUDENT: () JASON Hirschhorn: () STUDENT: numer Modulo. JASON Hirschhorn: Co modulo? Postaci? Znak procent? STUDENT: znak procentu. Modulo numer, który określono na top. JASON Hirschhorn: LICZBA Modulo. STUDENT: I ​​wtedy średnik. JASON Hirschhorn: średnik. STUDENT: A potem nowa linia, printf. JASON Hirschhorn: printf. STUDENT: ( JASON Hirschhorn: ( STUDENT: " JASON Hirschhorn: " STUDENT:% s / n JASON Hirschhorn:% s / n STUDENT: " JASON Hirschhorn:% s / n " STUDENT: Comma, nazwy miejsca. JASON Hirschhorn: Space - STUDENT: Oh, myślę, że to, co nie nazywamy go tutaj? JASON Hirschhorn: Nazwaliśmy go nazwiska. STUDENT: Open uchwyt, nazwa. JASON Hirschhorn: Open uchwyt, nazwa. STUDENT: Zamknięty uchwyt. JASON Hirschhorn: Zamknięty uchwyt. STUDENT:) JASON Hirschhorn:) STUDENT: średnik. JASON Hirschhorn: średnik. OK, niech zapisać. Zróbmy ten kod. Studentów. Niech ten kod. Studentów. Nie. / Studenta. . / Studentów. Nazwa jednego. Powiemy, Dawida. Nazwa dwa, RJ. Nazwa trzy, Rob. Nazwa cztery, Lucas. Nazwa pięć, Joseph. A potem wypisuje Józefa ponownie. Więc pozwól mi uruchomić ponownie. Pozwól mi zrobić te same nazwy. David, RJ, Rob, Lucas, Joseph. I to dało mi Dawida ten czas. Więc zrobiłem to samo, ale to dało mnie różne rzeczy, i to jest bo, oczywiście, pytamy na losowej nazwie. Myślę więc, w oparciu off of me wędrówki po pokoju, że większość ludzi prawdopodobnie otrzymał pierwszą prawej części, konfigurowania tej tablicy, a następnie coraz wszystkie nazwy. Mówię o linii 10 do 16. Ale linie 18 do 21 są prawdopodobnie niektóre rzeczy nie widziałem wcześniej, więc idziemy przez te. Ta linia, srand NULL czas jest w istocie - Przepraszamy, pomińmy dół linia, rand (). To daje liczbę losową, losowa liczba całkowita. A jeśli trafisz rand, człowiek, który Wielu z was zrobił - -M-N przestrzeni R-N-D - w terminalu jak ta, M--N Przestrzeń R--N-D, naciśnij Enter. Można by się do instrukcji i byłby w stanie przeczytać, że rand wyjścia poleceń num pseudo losowych bajtów Po zaszczepieniu liczby losowej generator raz. Więc to jest opis. To jest to, co rand nie daje Ci losowa liczba, gdy wywołać tę funkcję. Niestety, to naprawdę nie jest przypadkowe bo jeśli po prostu zadzwonić random bez coraz to niektóre nasiona, niektóre punktem wyjścia, to zawsze wybrać sam, i wykorzystuje formułę określić następny. Więc jeśli zadzwonisz rand, to będziesz tylko daje to samo. Byłoby bardzo przewidywalne. To faktycznie nie będzie przypadkowa. Więc to, co musimy zrobić, za Marcusa instrukcje dla mnie, były rand nasienne z czymś innym, co jest, co Funkcja srand robi. To nasiona Rand z czymś nieco więcej random niż tego samego, i on jest zaszczepienie go NULL czasu, który jest tylko umownie, prąd czas w sekundach. Więc zakładając, że wszyscy nie zamierza uruchomić kod na dokładne same sekund, więc jest to bezpieczny zakład, że NULL razem będzie inaczej za każdym razem ten kod jest uruchamiany. Bezpieczny zakład, że w ten sposób, srand wola rand nasienne coś innego każdego wolny czas. Tak więc zgodnie z konwencją, kiedy my chcemy losowa liczba, piszemy tę linię, NULL czas srand, aby dać nam wiele więcej random seed, a następnie uruchamiamy rand, co daje nam liczbę losową. Tak? STUDENT: Czy możesz powiedzieć, co masz na myśli przez nasiona? JASON Hirschhorn: Seed jak - tak rand zamierza odebrać pewną liczbę i to będzie korzystać z niektórych formuła się tam dostać. Więc to będzie początek czegoś , a następnie przekształcić go w coś w oparciu od tego wzoru. Jeśli zawsze dać mu to samo, to zawsze będzie przekształcić go w samo. Tak, że pierwszą rzeczą, którą dać to ziarno. Więc chcesz dać coś inaczej rozpocząć się, a więc będzie przekształcić go w coś innego. I w końcu, linia 20, To jest nazywane% modulo, i że jest mylące. To jest coś, co jest trochę inna tutaj, że tak naprawdę nie mają w prawdziwym matematyki na życie. Ale zasadniczo, jeśli wziąć giganta Liczba i podzielić w C, co dzieje się z resztą? STUDENT: To staje obcięty. JASON Hirschhorn: To zostaje obcięty. Tak więc 20 podzielone przez 3 jest co? Co oznacza, że ​​powrót do Ci, 20 podzielone przez 3. Niestety, 10 dzieli się przez 3. Co oznacza, że ​​powróci do was? STUDENT: [niesłyszalne]. JASON Hirschhorn: 10 dzieli się przez 3 tylko zwraca 3, nie 3 reszta 1. Więc co 10 modulo 3 powraca jest tylko pozostała, 1. Więc jeśli chcesz wiedzieć, co 10 podzielone przez 3 faktycznie było, byś zrobić 10 podzielone przez 3, można uzyskać 3, a potem robisz 10 modulo 3, a ty dostać 1. Tak, że zdajesz sobie sprawę, że 10 dzieli przez 3 jest 3, pozostałą 1. I w tym wierszu, rand może być dowolną liczbą całkowitą, w istocie. Więc modulo mówi, podzielić ją przez ilość, która jest w tym przypadku 5. I jeśli kiedykolwiek podzielić przez liczbę, całkowita zawsze musi być mniejsza niż że liczba. Jeśli więc dzieląc przez liczbę 5, Pozostała część jest zawsze będzie od zera do czterech. To jest po prostu, jak matematyka działa obecnie. Tak duża liczba moduloed przez mniejsze Numer zawsze zwróci Pozostała i zawsze zwraca niektórych numer, który jest mniejszy niż numer, który podzielone przez. Czy ktoś ma jakieś pytania dotyczące modulo, bo to są w bardzo, bardzo przydatne, więc chcę się upewnić każdy to rozumie? Spoko. I zobaczyliśmy, że ten program działa. OK, przejdziemy. Więc dalej, będziemy iść do funkcje, a my zamierzamy iść przez resztę tych rzeczy dość szybko, bo chcę dostać się do Argumenty wiersza poleceń. Więc funkcje są zasadniczo Jak widać, czarne skrzynki. Biorą sprawy w tzw parametrów, robią coś do nich, albo zmienić je lub tworzyć pewne skutki uboczne, i wreszcie, plują z czymś, co jest Wartość zwracana. Czy ktoś może dać mi jeden powód, dlaczego używamy funkcji? Anybody? Jednym z powodów, dla których chcemy korzystać z funkcji? Każdy, kto? Widziałem dwie ręce. Co jest powodem? Marcus? STUDENT: Jeśli masz zadzwonić same fragment kodu wiele razy. JASON Hirschhorn: OK, jeśli potrzebujesz wywołać ten sam kawałek kodowym razy. Jeff, czy masz inny powód? STUDENT: Tak, tak, że można kodować mniej. JASON Hirschhorn: Możesz kodować mniej. Racja. Jeśli chcesz zrobić coś dużo - w poprzednim kodzie, może mam napisane uzyskać ciąg pięć razy, ale do pętli sprawia, że ​​wyglądają ładniej i trzeba pisać mniej kodu. Funkcje są podobny pomysł. Jeśli chcę zrobić to samo dużo, przenieść go do funkcji i zadzwonić, że funkcjonować każdym razem. To zrobi to coś dla Ciebie. To wielki powód w użyciu funkcji. Więc anatomia funkcji. Funkcja zazwyczaj wyglądać tak. To będzie początek typ zwracany, wtedy dostaniesz nazwę. To zajmie argumenty, inaczej znany jako parametry, i w środku te nawiasy klamrowe, będziesz napisać kod. Widzieliśmy jedną funkcję dużo. To jest główny. Oto główny nakłada na że anatomia miałem wcześniej. Co int tutaj oznacza? Co int oznacza? Kiedy piszę int main (void). STUDENT: Zwraca typ? JASON Hirschhorn: Przepraszam? STUDENT: typ zwracany. JASON Hirschhorn: Int jest zwraca typu, dokładnie prawo. Main zwraca int. Co jest głównym? STUDENT: Nazwa funkcji. JASON Hirschhorn: Main jest nazwa funkcji. Dokładnie tak. I nieważne? Co to jest nieważne w nawiasach? STUDENT: Nie trzeba każda wartość zewnętrznego. JASON Hirschhorn: Więc nieważne - prawo. Wewnątrz nawiasów, stawiamy parametry lub argumenty funkcja przyjmuje, co dzieje wewnątrz czarnej skrzynki. Kiedy piszesz nieważne, mówisz ma to nic w. Więc int main void oznacza Main Nie ujmując niczego w. Wewnątrz nawiasy, mamy pewne kod, a następnie widzimy na końcu zwrócić zero. Co oznacza zwrot zera oznacza? Cóż, rozmawialiśmy o typ zwracany. Main musi powrócić int. To właśnie ta linia ma. Zwraca int, zero. Oczywiście, nie widzieliśmy, że wiele bo w programowaniu robimy z maszyny robimy i kompilatory używamy w dzisiejszych czasach, ci nie trzeba tę linię. Main jest wyjątkowy, że wie wystarczająco dużo kiedy dojdziesz do końca głównego, po prostu zwrócić zero jeśli wszystko poszło dobrze. W rzeczywistości, jeśli coś nie idzie dobrze, Głównym często zwracają różne Numer oznaczający, że coś poszło nie tak z programem. Więc ogólnie, gdy widzisz kod, nie pisz zwrócić zero, ale to jest dobre wiedzieć, że to się dzieje za sceny, bo gdy piszesz Inny typ funkcji masz zamiar trzeba to przewód powrotny. Jeśli mówisz, że będę zwraca int, trzeba napisz powrócić coś. Jeśli mówisz, że nieważne co się tutaj początek, void main void, dla Przykład, to nie jest powrót cokolwiek - void nic nie znaczy - więc nie trzeba, że ​​przewód powrotny. Ale czy kiedykolwiek napisać coś, co nie jest nieważność zwracanego typu, trzeba Wiersz, który mówi, zwrot i ty trzeba umieścić coś tam który pasuje do typu. Wszelkie pytania o to? Słodkie. Scope. To jest coś, mamy Dotknął on również. Każda zmienna, jak wiemy, ma pewien zakres, i to jest w zasadzie mówi o tym, gdzie zmienna może lub nie może być uwzględniona. I chciałbym powiedzieć, co się dzieje, Pobyty w klamrach wewnątrz nawiasy. Tak na przykład, jeśli spojrzymy na ten kod, jesteśmy definiowania zmiennej globalnej poza głównym, int, tu na górze. Nazywamy innym int wewnątrz main. Mamy trochę więcej nawiasów klamrowych i Nazywamy kolejny int. Mamy trzy-tych w kodzie. To nie to samo. Stworzyłem trzy różne zmienne. Następnie wewnątrz tych wewnętrznej kręcone szelki, mówię a = 4. Jakie jest to, że mówisz, Pierwszy, drugi, lub trzeci? STUDENT: trzeci. JASON Hirschhorn: To mówi o trzeciej. Wszystkie te rzeczywiście mogą być mówił o tym w szczególności instancji, ponieważ ich zakres wszystko pójdzie do tych najskrytszych szelki kręcone. Jednak, gdy dzwonisz rzeczy same nazwa, jest coś o nazwie ukrywa. Tak więc zajmować się tylko i naprawić lub użyć Ostatnia zmienna, lub jeden najbliżej Ciebie. Więc wewnątrz tutaj, ten trzeci jest najbliżej na tej linii, a = 4, więc wpływa na trzeci. I ostatnia linia, a = 2, który jest , który mówi, pierwszy, drugi, lub trzeci? STUDENT: drugie. JASON Hirschhorn: To mówi o drugim preambuły. Oczywiście, trzeci jest najbliżej to w kodzie, ale trzeci nie istnieje poza te nawiasy klamrowe. Gdy dojdziesz do tego zamkniętego kręcone nawiasów, to jak go nie ma, zasadniczo. Więc tylko dwa opuszczeniu są te Pierwsze dwa, i oczywiście teraz to jest najbardziej zbliżony do drugiego. Więc to jest dobra rzecz pamiętać o zakresie. Na przykład, jestem pewien, że już napotkał to zrobić w pętli while. Jeśli zainicjować zmienną wewnątrz Czy podczas pętli, a następnie spróbować do niego dostęp na zewnątrz, prawdopodobnie dostał jakieś ostrzeżenie, jak to zmienna nie istnieje. To dlatego, że z idei zakres, że rzeczy istnieją tylko wewnątrz tych klamrach. Nawiasy klamrowe są jak gigantyczny uścisk, że dajesz do kodu, jest kolejnym sposób myślenia o nim. Więc jest to kolejna funkcja, coś na wy do kodu, hellofunction.c. Będziemy pominąć, że teraz, ale to jest coś, zachęcam Cię do ćwiczyć na własną rękę. Napisz program, w którym główne połączenia inna funkcja, która drukuje pozdrowienia dla użytkownika. To w zasadzie biorąc hello world i abstrahowania, że ​​printf do innej funkcji. Ale nie będziemy robić to teraz ponieważ nie mamy tyle czasu, w lewo, jak bym chciał. Więc deklaracja funkcji. Widzieliśmy to już wcześniej, jak również. Jeśli chcesz napisać inną funkcję, musisz dać znać i komputera Głównym wiedzieć, że istnieje. Więc co możemy zrobić, to przede głównym piszemy Zwraca typ, nazwa i parametry, a następnie w dół poniżej głównego, tu, faktycznie skopiować tę linię a następnie napisać właściwy kod. Więc w ten sposób, jeśli wywołanie funkcji w głównym u góry, wie, że główny witam istnieje, na przykład, gdybym zadzwonić hello, a potem patrzy na Wdrożenie w dół poniżej. Co się stanie, jeśli nie obejmują tego Line up góry, utratę komentarzy (void)? Jeśli nie to ten wiersz oraz główne połączenia witam, jestem będzie się błąd. Zamierzam się błąd ponieważ kompilator nie wie że to coś istnieje. Jest to podobne do dlatego nie # include cs50.h. Co robi w zasadzie cs50.h jest oddanie uzyskać ciąg tam. To oddanie uzyskać int tam. To oddanie wszystkich tych funkcji prototypy przed głównym tak, że kiedy je wywołać w main, głównym wie że te rzeczy istnieją. To właśnie te pliki. H zrobić. A więc jeśli masz zamiar zrobić własną funkcji, musisz się upewnić, odłóż prototyp tam. Wszelkie pytania na ten temat do tej pory? Argumenty wiersza poleceń. To jest to, co mamy zamiar zakończyć na, a następnie mamy nadzieję, że będziesz wycisnąć w jakimś Pset. I nie wiem, czy będziemy w stanie wycisnąć że ze względu na czas, ale z Was, którzy są tutaj, a jeśli faceci chcą powiedzieć po na trochę, my można przejść nad nim na zewnątrz. Ale mamy zamiar zakończyć Argumenty wiersza poleceń Przez ostatnie 15 minut. Budzimy, Michael? Nie śpisz? Dobra. I nie wiem, czy śpisz z zamkniętymi oczami. To byłoby trudne. Argumenty wiersza poleceń. To są jednym ze sposobów przekazywania informacji do programu. Ostatecznie, to mamy do czynienia z innym. Ale w zasadzie, jedziemy do zatrzymania pisząc int main (void), jeśli chcemy trochę argumentów wiersza poleceń. Jedziemy do napisania tego nazywa int main (int argc, Ciąg argv, wsporniki. To jest mylące. To dużo liter, które nie są w ludzi po angielsku, więc mamy zamiar rozpakuj je teraz. Argc oznacza liczba argumentów - i ponownie, wszystkie z nich będą być dostępne online - i to jest liczba argumentów. Argv oznacza wektora argumentów i te argumenty przemawiają same. Jest to tablica łańcuchów. Mamy rzeczywiście widział tablicę ciągów przed dzisiaj. Stworzyliśmy jedną w zeszłym Program mamy zakodowane. Więc oto przykład. Piszę. / Ohai CS50 sekcja na mojej linii poleceń. Argc w tym przypadku wynosi 3. Argv wspornik 0 jest ohai, argv wspornik 1 jest CS50, argv wspornik 2 jest sekcja. Ponownie, argc jest liczba argumentów, oraz wycieczka cię trochę bit, możemy zawsze liczyć nazwę Funkcja jako pierwszy argument. Więc w tym przypadku, są trzy argumenty, nazwa funkcji a następnie te dwa, że ​​po wpisaniu w. Dalej, mamy zamiar zapisać te Argumenty się w argv. I znowu, tak jak widzieliśmy wcześniej, zrobiliśmy To w tej ostatniej programu że kodowane. Możesz poruszać się po tablicy argv i dostać te ciągi. To jest w zasadzie to, co zrobiliśmy w koniec naszego ostatniego programu. Wybraliśmy losową nazwę, a następnie udał się do niezależnie od nazwy i drukowane wspornik z łańcucha się tam. Na górze tylko jednej tablicy, gdyż ciągi są same tablice, jak mówił o, można mieć tablice macierzy, która jest w zasadzie to, co argv jest. Jeden sposób można myśleć o to wiersze i kolumny. Mogę wyciągnąć to teraz. Więc argv - to nie kasowanie. Narysujmy pod OHAI. Więc jeśli napisałem w, OHAI CS50 sekcji Mam zamiar obciąć sekcja dla tego przykładu. Ale zasadniczo, mój wielowymiarowy array, ohai CS50, mamy zamiar zrobić sektę. Więc, mogę przejść - jeśli tylko dać argv jeden numer - to jest złe. Co jest złego w tym schemacie? STUDENT: Zacznij od zera. JASON Hirschhorn: Powinien zacząć od zera. Powinienem chyba także obracać go, ale ponieważ ja już wyciągnąć go, jestem zamierza pozostawić go tam na razie. Ale to zaczyna się od zera. To prawda. Przepraszam, jeśli to jest mały. Czy wy niby zobaczyć? Więc jeśli ja argv 0, ja uzyskać wszystkie OHAI. Jeśli zrobić argv 1, będę miał wszystkie CS50. Jeśli zrobić argv 2, będę miał wszystkie sekty. Teraz jednak, jak powiedzieliśmy, ciągi Tablice są sami. Więc co mogę zrobić, to mogę traktować tego w tablicy wielowymiarowej, a ja może zrobić coś na wzór argv 0, 0, co daje mi tylko charakter 0. Argv 0, 1, co daje mi tylko h. Argv 1, 3, co daje mi tylko to 0 tu w CS50. Tak więc, ponieważ same struny są tablice, stawiamy że w innej tablicy. Mamy teraz tablicy tablic, a my może indeksować do naszej pierwszej tablicy i następnie indeks do naszej drugiej tablicy. I jak można się spodziewać, to zrobimy tylko przez wprowadzenie tych dwóch - robimy nawiasów kwadratowych tylko tuż obok siebie. Tak więc w tym przykładzie, argv 1 jest CS50 i argv 1, 2, jak już mówiłem, jest tylko 5. Czy ktoś ma jakieś pytania dotyczące tablice wielowymiarowe? Chłopaki robią niesamowite. Słodkie. Tak więc mamy kolejny program, tutaj, a to jest ostatnia rzecz, że jesteśmy zamiar zrobić teraz. Tak, chcę, aby napisać program, który rozgrywa pełną nazwę użytkownika, dwa i tylko dwa argumenty linii poleceń, a wreszcie wydrukować pozdrawiam Użytkownik, który zawiera ich imię. Więc dlaczego nie można zrobić trzy lub cztery minut, aby to zrobić, a potem pójdziemy ponad to, jako grupa, a wtedy będziemy zakończyć? I znowu tutaj, gdy mówimy, podjąć pełna nazwa użytkownika na opisie tego problemu, powinno być polecenie Argumenty wiersza, nie stosując uzyskać ciąg. Tak, Marcus? STUDENT: Więc kiedy mówisz dwa polecenia Argumenty linii, jest to, że oprócz . / run, lub - JASON Hirschhorn: Dobre pytanie. Czy, w tym. / Bieg, trzy Argumenty wiersza poleceń. Albo tym. / Indywidualne, w W tym przypadku, ponieważ jest to Nazwa tego pliku. Więc argc będzie trzy. Ale ja chcę tylko dwa argumenty biorąc pod uwagę w programie. Należy określić, że. Zrobię tę zmianę przed zaksięgować te i wysłać je do was. STUDENT: Co zrobić, jeśli mają drugie imię? JASON Hirschhorn: Jeśli masz środku imię, jesteś pecha. Przykro mi. Albo, jeśli tylko przejść przez Shakira, jesteś też pecha. Tak? STUDENT: Tak, gdy ludzie nie mają cs50.h, nie określają one argv jako char gwiazdy argv? Czy jest to nadal nazywa łańcuch argv? JASON Hirschhorn: Tak. Tak więc ciąg, ponownie, zakleić co dokładnie się tam dzieje. To będzie rozpakowany może w środę, ale szybko. To jak kółka. Bo w istocie, to samo. Więc weźmy jeszcze minutę do programu ta, a potem pójdziemy na to w grupie, a następnie jak powiedziałem, zawinąć. I myślę, że są one nadal extra słodycze, więc mam nadzieję, że wam się należy że albo proszę wziąć to. Niestety jeśli nadal pisać, ale chcę, aby zanurkować, a my może skończyć się razem. Więc napisałem w, # include cs50.h, # include stdio.h. int main (void), nawias klamrowy, kręcone nawiasów, wewnątrz trzy linie pseudokod, wziąć pełną nazwę użytkownika, dwa i tylko dwa z linii poleceń argumenty, wydrukować pozdrawiam Użytkownik, który zawiera ich imię. Więc pierwszy, wziąć Na użytkowniku pełna nazwa. Kto pomoże mi w realizacji Na użytkowniku pełna nazwa? Jak zrobić tę część? Czy robicie, że pierwszą część? Weź pełną nazwę użytkownika. Cóż, za to jedna z linii poleceń Argument, co mam napisać? Co należy zmienić w moja deklaracja funkcji? STUDENT: Nie chcesz że jest nieważne już. JASON Hirschhorn: Dokładnie. I nie ma to być nieważne. Czego chcę być? STUDENT: int argc. JASON Hirschhorn: int argc. STUDENT: argv String. JASON Hirschhorn: String argv. STUDENT: Uchwyt wspornik. JASON Hirschhorn: Uchwyt wspornik. Dokładnie tak, i to jest rzeczywiście, jak mam zamiar dostać Na użytkowniku pełna nazwa. Zamierzają umieścić go tam. Tak, że jeden zrobił. Więc teraz chcę dwa i tylko dwa Argumenty wiersza poleceń. Więc Noego, co jest jednym ze sposobów mogę sprawdzić liczbę polecenia Argumenty wiersza mam? STUDENT: Robisz czy rachunku. JASON Hirschhorn: Jeśli oświadczenie, dokładnie. Czego chcę w stanie? STUDENT: Jeśli argc większa niż 3. JASON Hirschhorn: Jeśli argc jest większa niż 3. Jeśli argc większa niż 3, co mam zrobić? STUDENT: Powrót 1. JASON Hirschhorn: Powrót 1. Czy to zapewnić, mam tylko dwa i dwa? STUDENT: Nie. Jeśli argc jest większa niż 3, a mniej niż 2. JASON Hirschhorn: Jeśli argc jest większa niż 3 i argc jest mniejsza niż 2. Co jest w jeden sposób mogę napisać to po prostu jedna linia, lub bez użycia że i Boolean operator? STUDENT: To nie jest równe 2. JASON Hirschhorn: Jeśli argc nie jest równy 2. Dokładnie. Tak więc, jeśli nie argc jest równe 2, który da mi ten program, spersonalizowane, kiedy go uruchomić, a że da mi ile Argumenty wiersza poleceń? Ile będę sprawdzać? Przepraszam. Pozwól mi przeformułować, że. Jeśli argc = 2, jak wielu rzeczy nie Zapisując się do linii? STUDENT: One. JASON Hirschhorn: Tylko jeden. Zanim więc, miałeś rację, Noah. Czego naprawdę potrzebujesz, aby umieścić tam? STUDENT: To jest równa 3. JASON Hirschhorn: argc nie równa się 3. Chcę równa 3, bo chcę indywidualne oraz dwa pozostałe. Więc jeśli argc nie równy 3, powrót 1. Dlaczego powiedziałeś powrócić 1? STUDENT: Dlatego, że Oznacza to, że to jest złe. JASON Hirschhorn: To znaczy, że to jest złe, A co to robić? STUDENT: Re-poprosi użytkownika. JASON Hirschhorn: To się zamknij Program, więc będzie trzeba uruchomić jeszcze raz, ale nie mamy nic się, aby zapytać o nie ponownie. Nie pytałem o to. Więc to jest dokładnie prawo. Powrót 1 właśnie kończy pracę programu. Świetnie. I wydrukować pozdrowienia dla użytkownika że obejmuje ich imię. Jak mogę to zrobić? Anna? STUDENT: printf. JASON Hirschhorn: printf. STUDENT: (" JASON Hirschhorn: ( STUDENT: "hello JASON Hirschhorn: "hello STUDENT:% s JASON Hirschhorn:% s STUDENT: / n JASON Hirschhorn: / n STUDENT: ", JASON Hirschhorn: ", STUDENT: argv JASON Hirschhorn: Przepraszam? STUDENT: argv JASON Hirschhorn: argv STUDENT: Nawiasy kwadratowe 1. JASON Hirschhorn: nawiasy kwadratowe? STUDENT: 1. JASON Hirschhorn: 1. STUDENT: A) średnik. JASON Hirschhorn:) średnik. Daj nam uruchomić to. Dodać spersonalizowane. . / Spersonalizowane. To po prostu zamknąć. Dlaczego to rzucić? STUDENT: Nie podał żadnych argumentów. JASON Hirschhorn: Ja nie umieszczać żadnych argumentów w. Wygląda świetnie. Wy się udało. Więc znowu poszedł do argv i ty sprawdzane na argc początku. To są dwa ważne rzeczy do zapamiętania. Tak więc w naszych dwóch ostatnich minut przed my zostawić, nie dostanie się Pset dwa, ale jak powiedziałem, jeśli chcesz się zatrzymać po przez 10 minut, chciałbym się z przyjemnością go nad z wy logika dla tych zespołów problemowych. Mieliśmy dziś dużo do pokrycia więc nie dostać się do nich. Generalnie lubię to że na końcu. Więc jeśli chcesz, aby trzymać się, trzymać się na 10 minut. Zrobimy to. Potem, jak już wspomniałem na początku, pset zero, a jeden, że dostaniemy Reakcje z powrotem do Ciebie jako szybko, jak to tylko możliwe. Celem jest uzyskanie Pset jedną opinię, część komentarzy, przed pset dwa wynika. Więc jeśli popełniłem kilka błędów lub stylistycznie, co mogłoby być lepsze, będziesz miał te informacje, więc nie będzie robić te same rzeczy w Pset dwa. A potem w przyszłości, dostaniesz wszystko nadesłane opinie Pset i komentarze z powrotem, zanim następny jest spowodowane. W końcu, czy mogę umieścić w innym wtyczka na razie. To jest Twój pierwszy odcinek. To był mój pierwszy odcinek nauczania w tym roku. Idź tam. Napisz rzeczy, dobre i złe, i będę go używać, aby Sekcja lepiej następnym razem. I ostatni, ponownie, jeśli potrzebujesz coś, daj mi znać. Jestem bardziej niż szczęśliwy, aby wam pomóc. Jeśli chcesz tylko słodycze, I będzie mieć dodatkowe cukierki. Jestem szczęśliwy w celu dostosowania go do Ciebie. To będzie niesamowity przebieg. Jest to jeden z, jeśli nie jest moim ulubionym Oczywiście, wziąłem w całym moim życiu, i mam nadzieję, że będzie to, że wspaniały dla Ciebie. Więc chcę zrobić wszystko, co w mojej mocy, aby to, że niesamowite dla Ciebie. Mam zamiar wysłać e-mail, jeśli jesteś w mojej sekcji lub, Noe i zamiar spróbować zaplanować z każdym macie czas, aby sprawdzić, w ciągu następne kilka tygodni, więc można uzyskać poczucie tego, co się tła CS jest, i będzie to również pomóc mi dostosować te sekcje do swoich potrzeb. Więc to, co mam w kolejce. Ponownie zobaczymy się na zewnątrz jeśli chcesz tam być. To był tydzień dwóch sekcji. Dziękujemy wam bardzo.