>> 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ęć?
>> 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.