[MUZYKI] JASON Hirschhorn: OK, wszyscy. Zapraszamy do sekcji. To CS50, nasz bardzo Pierwszy Super odcinek. Jak wszyscy wiecie, w przyszłym tygodniu rozpocznie regularne sekcje, ale w tym tygodniu, że jesteśmy wszyscy razem. Nie jest sam. Nazywam się Jason. Jestem wykładowcą informatyki. Mamy Andi, kto jest szefem TA z CS50. I Scaz, profesor Brian Scassellati, on jest profesorem informatyki. Jesteśmy szefowie CS50 w Yale. Zawsze możesz napisz nam heads@cs50.yale.edu. Będziemy na wykładach. Będziemy w godzinach urzędowania. Jeśli istnieje kiedykolwiek coś się da zrobić dla ciebie, wszystko, czego potrzebujesz, prosimy, aby dotrzeć do nas. Więc co zrobimy dzisiaj? Lub wcześniej, co jest zbliża się w tym tygodniu? Więc Godziny urzędowania poniedziałek, wtorek, Środę i czwartek, od 8:00 do 11:00. Jest harmonogram na stronie internetowej. Sekcje, jak już wspomniałem, Zaczynamy w przyszłym tygodniu. A dowiesz się w tym tygodniu, co razem, gdy sekcja jest, jaki jest dzień, i kto jest twoim TA. Problem Set 1 przypada na czwartek w w południe, w piątek w południe z końca dnia. Tak, masz dziewięć późnych dni. A jest ich dziewięć zestawów problem. I może używać tylko jednego późna dzień za zestaw problemów. Tak, w efekcie cały problem Zestawy są spowodowane piątek w południe. To wszystko. Wszystko, że dane są w programie nauczania. W każdy piątek, mamy lunch. Chcemy, aby ten duży Oczywiście czuć się nieco mniejsze. Tak więc zapraszamy do RSVP. Bezpłatne obiad z facetem koledzy i pracownicy. cs50.yale.edu/rsvp. Wszystkie te rzeczy, które Mam na ekranie, i więcej, można znaleźć cs50.yale.edu lub cs50.harvard.edu, jeśli idziesz na Harvard i oglądają ten online. Również na tych stronach, nie mnóstwo zasobów dla Ciebie. Każdy wykład ma nie tylko film wykładu, ale także zwraca uwagę. Ktoś będzie oglądać wykład i robić notatki dla Ciebie. Więc może po prostu zapłacić uwagę podczas wykładów, Można też użyć swoich notatek / Nasza zauważa uzupełnić własne notatki. Są zjeżdżalnie Internecie. Źródłem code-- wszystko Dawid idzie w wykładzie, lub Scaz idzie na wykładzie, że Kod źródłowy jest dostępny w Internecie jak dobrze, że tak jak ja, wymienionych filmów. Sekcje, podobnie, wszystko będzie filmowany. Wszystkie te slajdy będą dostępne. Wszystkie tego kodu będzie być dostępne dla Ciebie. Istnieje spodenki na stronie internetowej, gdzie Pracownicy CS50 spędzić pięć do 10 minut przechodzi tematy dla Ciebie. Niektórzy z tych, które już mam napotkał w zestawach problemowych. Godziny pracy, jak już wspomniałem, w poniedziałki do czwartku, 8:00 do 11:00. CS50 Studium jest fantastycznym źródłem. Są problemy praktyczne, Przykładowe slajdy, znanych błędów że uczniowie lubią napotkasz, na zasadzie każdego tematu my obejmie w tym kursie. I wreszcie, na tym slajdzie przynajmniej Reference50 który zawiera informacje na wszystkich funkcji C może kiedykolwiek być może nadzieję, w użyciu i wiele, wiele innych. Ponownie, że kropka kropka kropka dolna część ekranu to oznacza, że ​​nie ma nawet więcej środków na tych dwóch stronach internetowych: cs50.yale.edu, cs50.harvard.edu. Więc, co robimy dzisiaj? Cóż, po pierwsze mam zamiar dać obejrzysz zasobów. Już zrobiłem tego. Patrz na nas. Teraz mamy zamiar iść na Typy danych i operatorów w C Wtedy Andi przyjdzie tu i przejść bibliotek w C, printf (), funkcja z której już są zna i szybko stanie się bardzo znajome. I można także przejść warunkowe i pętle. I w końcu, Scaz przejdzie przez ID CS50. Jeśli nie zanurkował w Problem już w Zestawie 1, a także jak korzystać z Polecenia terminali i użyteczne a następnie podać kilka demówek i kodowanie praktyki w ID CS50. Zanim wskoczyć do tego zawartość tej strony, Czy ktoś ma jakieś pytania do tej pory? Wielki. OK. Zmiana biegów. [Zmiany biegów] To byłem ja przesunięcie biegów w samochodzie. ręcznej Więc typy danych w C, nie można po prostu zmienna x i muszą być w linii 10, liczbą całkowitą, może numer 1, na linii 20, liczba dziesiętna 10.5, i następnie kilka linii później ciąg, kocham CS50. W C, zmienne mogą być tylko Jedno i tylko jedno. A więc trzeba dać im typy. I na tym forum, że mieć listę typów. Są to znaki, które oznaczają znaki. Więc to jest jedna litera A, B, C, D. To może być także przestrzeń lub może być znak nowego wiersza. Są to liczby całkowite, które są po prostu numery, całe numbers-- lub całkowite rather-- ale bez miejsc po przecinku. Dla dziesiętnych, mamy liczb zmiennoprzecinkowych. Liczb zmiennoprzecinkowych są numery z przecinku. Następnie są tęskni, które są zasadniczo dłuższe liczbami całkowitymi. Zauważysz, że długi jest 8 natomiast int jest 4. I ci się, że w drugim. To dlatego, że tęskni można przechowywać nawet więcej liczb całkowitych niż int można przechowywać. Podwójne długa pływaka. I wreszcie, mamy Łańcuch, który jest typem że masz prawdopodobnie używany wcześniej. Jeśli to hashtag # includeCS50.h w pliku źródłowym, następnie można użyć typu String. To nie jest w rzeczywistości wbudowane w C Istnieje kilka innych typów, jak również. Ale to są główne te z które można wykorzystać i spotkanie. C jak znowu wspomniałem, co zmienna-- go może być tylko jeden typ i tylko jeden rodzaj. To dlatego, że C jest statycznie język wpisane, w przeciwieństwie dynamicznie typowanych języków gdzie jeśli utworzyć zmienną można zmienić, co jest zapisane w to, jak przejść w programie. Tutaj na prawicy boku, mam różne rozmiary tych rodzajów danych w bajtach. Więc to 1 bajt. To jest 8 bitów. A to oznacza, bo 8 bity tam osiem 0 i 1. Widzieliśmy te dema w pierwszym tygodniu, że żarówki binarnych. 8 bitów lub 1 bajt, możemy przedstawiania liczb od 0 do 255. Dobrze. Jeśli wszystkie 8 bitów jest 0 to 0. Jeśli pierwszy bit jest 1, to liczba Jeden z nich, i tak dalej, aż do 255. I dlatego dla znaków można mają zasadniczo do 255 nimi ale to jest dużo do pokrycia wszystkich znaki musimy użyć. Dla liczb całkowitych, można mieć 0 i to masz 2 do 32 minus 1. Są to, jak wiele opcji masz do liczb całkowitych. Na długi, masz 0 do 2 do 64 minus 1. Więc trzeba wiele, wiele, więcej opcji tęskni. Struny, to jest znak zapytania dlatego, że to cliffhanger na później. Tak. Mógłbym powiedzieć, wszyscy są na granicy swojego siedzenia jakby co to jest znak zapytania? Jest to cliffhanger. Będziemy ostatecznie objąć rozmiar smyczki i porozmawiać o strunach. Ponieważ ciąg jest rzeczywiście jeden z kółka my wkładamy w to Oczywiście na początku a następnie zdjąć później na, ponieważ ciągi znaków w C są rzeczywiście wskaźnikami do tablic znaków. Ale znowu, że to Na krawędzi na później. Zanim przejdę na wszelkie pytania, komentarze obawy o tym slajdzie? OK. Muszę być fantastycznym explainer. Także, gdy jesteś programowania, masz zamiar użyć tych operatorów. Naprawdę proste sygnały, że może zrobić proste operacje, z których prawdopodobnie jesteś już bardzo znane. Na przykład, po prawej stronie, widzimy dodać. Aby dodać, po prostu zrobić znak plus. I tak możesz mieć dwóch zmiennych x i y. Możesz zrobić X + Y w kodzie. Może chcesz to-- powiedzieć ci ma numer 7 i 3, chcesz zapisać, że w zmiennej o nazwie suma. Możesz zrobić int do rodzaju, miejsca Suma, nazwa zmiennej, = 7 + 3; Co będzie, że sklep w sumie? Każdy, kto? Gdybym miał w sumie = 7 + 3. Co by być przechowywane w sumie? Możesz po prostu krzycz to. PUBLICZNOŚCI: 10. JASON Hirschhorn: 10! To się dokładnie zgadza. Co w sumie = 7 - 3, Ja po prostu użyć tego znaku kreska. Co się dzieje, aby być przechowywane? PUBLICZNOŚCI: 4. JASON Hirschhorn: 4. Suma jest chyba zła nazwa zmienna, ale 4 będzie przechowywany. Mnożyć w C, należy użyć trochę Znaków zodiaku, aby nie używać rentgenowskie. Aby podzielić, użyj Forward Nie Slash symbol podziału. I modulo, używać symbolu procent. Więc powiedzmy, że chcę zobaczyć, int z = 7% 3, co zostanie zapisane w Z? Tak, to jest w zasadzie Modulo pyta co ma zrobić? Czy ktoś wie, co robi modulo? Tak. y 4. Głośnik 1: To pozostała. JASON Hirschhorn: Jest Pozostała po podzieleniu. Więc 7 podzielone przez 3 jest 2 pozostała 1. Tak więc 1 zostanie zapisana. Zrobiłeś odejmowanie, ale to jest, jak to działa. To, co robi operator modulo. Potrzeba wiele dzieli go inny numer i wraca do Ciebie pozostała. Więc znowu, 7% 3 daje 1, ponieważ 7 podzielone przez 3 jest 2 pozostała 1, a zwraca resztę. Co wróćmy się jeden krok do tego znaku podziału. Jeśli zrobiłem 7 / podzielona przez 3 nie ktoś wie co to wróci? GŁOŚNIK 2: 2. JASON Hirschhorn: Dlaczego 2, a nie 2,333? GŁOŚNIK 2: Myślę, że to kawałki off od liczby całkowitej. JASON Hirschhorn: Tak to jest dokładnie prawo. W C, jeśli nie podział dwie liczby całkowite podzielone przez 3, 7, to dostaje odpowiedź, która w tym przypadku 2.3333 na zawsze i uzna, że ​​przecinek i sieka wszystko się po przecinku i to właśnie zwraca ci 2. Więc jeśli ja 8 dzieli się przez 3. To faktycznie, wiemy, że powrót 2.666, ale kotlety wszystko od na dziesiętny, obcina wszystko, i po prostu wraca do ciebie 2. Tak 6 podzielone przez 3, 7 dzieli o 3, 8 podzielone przez 3, wszyscy będą powróci do was 2. Czy ktoś wie, lub przypuszczenie, , jak mogłem rzeczywiście się pełna odpowiedź, jeśli chcę, że po przecinku? Tak. Śmiało. GŁOŚNIK 3: Użyj pływaka? JASON Hirschhorn: Co masz na myśli? GŁOŚNIK 3: Bo powiedział Pływak jest dla numerów [niesłyszalne] JASON Hirschhorn: Racja. Tak, to jest dokładnie prawo. 7 jest liczbą całkowitą. Ale gdybym chciał skręcić, że na liczbę zmiennoprzecinkową, Musiałbym zapisać, że jako 7,0, ponieważ komputer jest naprawdę stupid-- widzieliśmy, że z example-- PB i J będzie to robić tylko dokładnie co mu powiesz. Więc jeśli piszesz 7, to myślę, że jest liczbą całkowitą. Jeśli piszesz 7.0, mimo że wiem, te rzeczy są równoważne, traktuje to jak liczbę zmiennoprzecinkową. Więc jeśli nie 7.0 podzielone o 3 lub podzielone przez 3,0, to znaczy, OK, teraz mamy do czynienia z pływaków. Wrócę do was 2.333333 zawsze. Ale naprawdę nie zawsze, bo jak widzieliśmy także w wykładzie, tych liczb zmiennoprzecinkowych nie są dokładnie precyzyjne. Więc jeśli nie chce, że po przecinku, lub część tej przecinku, potem trzeba use-- jednego z nich musi być liczbą zmiennoprzecinkową a komputer musi zrozumieć, że jest to zmiennoprzecinkowych jesteś do czynienia z, a nie całkowitej. Wszelkie pytania dotyczące tej tabeli na prawa strona, do tej pory? Lub lewej stronie, twój w lewo, po lewej stronie. Tak. GŁOŚNIK 4: Prawo. Na jak zwykły liczby całkowite, byś write-- trzeba by napisać unosić? JASON Hirschhorn: Tak, tak. Cóż, jeśli chcesz utworzyć zmienna jest typu float, trzeba powiedzieć, pływak z równa coś. GŁOŚNIK 4: OK. JASON Hirschhorn: Ale gdybym chciał Czy 7 podzielona przez 3 i uzyskać po przecinku, Chciałbym zrobić pływaka z = 7,0 / 3,0; i że da mi zmiennoprzecinkowych liczba. GŁOŚNIK 4: OK. JASON Hirschhorn: Jeśli ja coś jak int z = 7 / przez 3, że da mi liczbę całkowitą, ponieważ są liczbami całkowitymi. Czy to ma sens? GŁOŚNIK 4: Tak. JASON Hirschhorn: OK. Wielki. Wszelkie inne pytania na temat tej tabeli? Naprawdę? Jestem taki podekscytowany. OK. Więc kilka innych rzeczy, można użyć, często w warunkach lub pętli, są te rodzaje operators-- te typy wyrażeń logicznych. I tak dowiedzieliśmy się, == jest to, czego użyć do sprawdzenia, czy dwie rzeczy są równe. Więc tutaj jestem sprawdzenie czy x == y, niech ponownie założyć, że x wynosi 7 i y 3. Więc gdybym napisał 7 == 3, co to, że zwraca się do mnie? Czy to prawda czy fałsz? PUBLICZNOŚCI: Fałsz. JASON Hirschhorn: OK. Czuję, że każdy może się tego. Więc wszyscy, co by to powrót? PUBLICZNOŚCI: Fałsz. JASON Hirschhorn: Fałsz. Wielki. 7 nie równa 3. Więc 7 == 3 będzie return false. Ty masz nie znak równości, więc jeśli sprawdzane 7! = 3, co by to powrót? PUBLICZNOŚCI: True. JASON Hirschhorn: True. Doskonałe. Ktoś był bardzo stanowczy w z tyłu i doceniam to. Następnie, mając mniej niż operatora, mniejsza lub równa operatora większa od operatora, większa lub równa operatora. Więc jeszcze jedna kontrola poprawności. Gdybym miał 7 jest większa niż lub równe do 3. Co będzie, że powrót? PUBLICZNOŚCI: True. JASON Hirschhorn: True. Tak. To pokój do tyłu, tylna pokoju, fantastyczne. Można łączyć je wyrażenia, jeśli chcesz, jak również, z którym logicznym i jest && Lub logiczną OR który || ||. A więc teraz można przetestować dwa rzeczy together-- Czy to śmieszne? Dlaczego to jest zabawne? Więc jeśli chcę, mogę powiedzieć, to 7 większa niż 3 i 2 jest mniejsza niż 4? Cóż, jeśli 7 jest większa niż 3, to prawda. 2 jest mniejsza niż 4, to prawda. Więc cała ta sprawa wróci prawda. Jeśli Testowałem 7 jest większy niż 3 and-- Ja tylko zbieranie liczb losowych here-- 4 jest mniejsza niż 2, dobrze, że jest fałszywe. Tak prawdziwe i fałszywe fałszywych. I można iść dalej i połączyć się wiele warunków razem jak chcesz. Czy ktoś ma jakieś pytania, Uwagi, problemy do tej pory? I widzę, że niektórzy z was robienia zdjęć o mnie na ekranie, które cenią. Miejmy nadzieję, że to nie jest Snapchat. Mamy nadzieję, że to dla notatek. Ale wszystkie te będą być dostępne w Internecie. Więc nie musisz się robić zdjęcia to. Jak wspomniałem, wszystko będą dostępne online dla Ciebie. OK. Mam zamiar się ze sceny, więc nie każdemu chcę nic mówić zanim to się stanie? Pytania? [Wstawienie GŁOSY] JASON Hirschhorn: Och, przestań. Jesteście zbyt miły. OK. Będę tag out. Chodźmy. ANDI PENG: Będziemy robić niezręczna mic zmiana teraz. JASON Hirschhorn: Jestem zajmie to wyłączyć. ANDI PENG: Doceniam wsparcie, chłopaki. Czy mnie słyszysz? Czy to dobrze? Doskonały. Piękny. Powiem tylko, że w podwinąć. OK. Tak, mam zamiar zrobić jak olbrzym Informacje zrzucić na was teraz. I w ogóle nie martwi, jeśli jesteś nie po każdą małą linię, co Mam zamiar pokazać. Jak powiedział Jason, wszystko jest całkowicie on-line. Wystarczy, że będziemy starać się przedstawić każdy z pojęciami pokryte W niektórych z tych preparatów. Więc po prostu podążać. Nie martw się, jeśli nie rozumieją wszystko; Jednakże, jeśli w dowolnym momencie czujesz się zagubiony, podnieść Ręka, wstrzymujemy, żadnych zmartwień. Chłodny. Więc myślę, że coś, że David ma już rodzaj mowa w wykładzie i Jason rodzaj nawiązywał do dziś jest to, co biblioteka jest. Więc w programowaniu, mamy te rzeczy nazywane biblioteki. Gdzie, w zasadzie wszystko są to tylko zbiór funkcji, to jest zasadniczo tylko kod, który jest już napisany przez ktoś inny, że możemy wszystko używać w naszych programach. Więc w jaki sposób normalny pracy biblioteki, prawda? Wchodzi się do drzwi biblioteki. Masz wszystko książki można wyciągnąć i można uzyskać dostęp do informacji w tych książkach. Samo w programowaniu. Musisz bibliotekę, która już ma zostały napisane przez innych ludzi. A sposób, że można, jako programista lub student, może uzyskać dostęp do tej biblioteki jest poprzez hashtag #include. Na przykład, C-my mają trzy C-- najbardziej powszechnie stosowane trzy standardowe C libraries-- biblioteki wejścia / wyjścia, biblioteka ciąg, i biblioteka matematyczna. Tak więc w ramach Twoja pierwsza Kilka problemu ustawia, będą to trzy że jesteś przede wszystkim za pomocą. Więc jak już Dawida wyjaśnione w wykładzie, średnia biblioteka we / wy, lub Standardowa biblioteka wejścia / wyjścia robi dokładnie to. To pozwala, w kodzie, aby wprowadzić coś z użytkownikiem i wyjścia, które na ekranie, w zasadzie drukowanie go na ekranie. I tak za każdym razem używać żadnych funkcji, na przykład printf function (), który mamy zamiar przejść na następnego slajdu, upewnij się, że to standard I / O biblioteki, albo nie będziemy być w stanie korzystać z funkcji printf (). Ponieważ, jako programista nigdy nie napisał tej funkcji, jesteś po prostu za pomocą kogoś Kod innego w swoim własnym kodem. Czy to ma sens wszyscy? Chłodny. A potem w zasadzie dostać się na biblioteka string.h i math.h biblioteka, .h po prostu oznacza, bibliotekę, inne biblioteki, że będziesz w końcu się przy użyciu w kodzie. Jednakże, dla celów tej biblioteki, także have-- tego class-- mamy także co nazywa biblioteki CS50, cs50.h, gdzie, na Lektura Stworzyliśmy wiele ważnych i przydatnych funkcji. Tak, że jako programista może barana off to, co już napisałem, tak aby funkcja ta jest dla Ciebie dostępna do użytku. Będę obejmujące kilka funkcje powszechnie stosowane ale wiem, że są to wszystkie googleable Internecie. Zapraszam, otwieramy bibliotekę CS50 i wtedy masz wszystkie funkcje tam. Tak. GŁOŚNIK 5: Więc jeśli nie były za pomocą oprogramowania jest nam klasa, robi oznacza, że ​​musimy pobrać i znaleźć Nagłówek ten plik się i powiedz komputer, gdzie to jest? ANDI PENG: Świetne pytanie. Dokładnie. Więc jak to jest, jeśli nie jesteś fizycznie obecny w bibliotece, nie ma sposobu, aby faktycznie go i do niego dostęp. Tak samo jest z programowania w C, to upewnić się, że używasz naszego Urządzenie ponieważ biblioteka jest już zostały włączone do niego. A potem, kiedy Hashtag #include biblioteka tam jest. Tak. Dobre pytanie. Każdy dobry? Chłodny. W porządku. Tak więc mamy zamiar uderzyć, zasadniczo, co jest pierwsza funkcja My, jako programiści zamiar używać w naszym kodzie. Jest to tak zwana funkcja printf (). Tak, funkcja printf (), jak mam już powiedziałem w ostatnim slajdzie, jest zawarte w standardowym I / O, standardowe wejście / wyjście, biblioteka. Upewnij się więc, co masz using-- Och, pozwól mi chwycić laser pointer-- gdy używasz Funkcja printf () trzeba to standard I / O biblioteki lub innego, podczas kompilacji, masz zamiar się błąd ponieważ komputer będzie jak, no nie wiem, gdzie printf () jest, ty mi nie mówisz, gdy printf () jest. Cóż printf () jest zawarty w Standard I / O, więc po użyciu printf (), upewnij się, że to linia nad kodem. Tak na przykład, printf () tutaj jest funkcją. Wszystko robi to wydruk coś w nawiasach dla użytkownika. Czy ktoś chciał wziąć ukłucie w jakim zgodnie z prawem tego kodu tutaj będzie wydrukować? W związku z tym, że odpowiedź jest na ekranie. Każdy, kto? VERDI: Dno. ANDI PENG: Verdi, dlaczego nie pójdziesz dalej i powiedzieć całą oświadczenie? VERDI: Witam, nazywam się Andi i mam 20 lat. ANDI PENG: Ach, piękne. Więc w tej linii będziemy wydrukować, Witam, nazywam się Andi, i mam 20 lat, które w rzeczywistości jest prawdziwe stwierdzenie. Składnia. Więc kilka zagadnień składniowych, że Chcecie, aby upewnić się, wiesz. Cytaty. Cudzysłowy powiedzieć Komputer, że wszystko wewnątrz będzie drukowane. Wszystko wewnątrz puszki po prostu dokładnie, jak go wpisać, z wyjątkiem Powszechnie na końcu, mamy zamiar chcesz dołączyć hash-- oh sorry-- myślnik n. Więc myślnik n. Czy ktoś chce zgadywać na co to ma do naszego kodu? Tak. GŁOŚNIK 6: Umieszcza go w nowej linii. ANDI PENG: Dokładnie. Więc to wszystko nie jest pozwalają cokolwiek się dzieje po tym, po tym oświadczeniu, do zadrukowania do nowej linii. Tak, że kiedy piszesz swoje Kod nie losowo mieć rzeczy dołączona do końca że nie chcesz. To wszystko staje się starannie wydrukowane jedną linię i wtedy zaczniemy na następnej linii. Czy ktoś pamięta, co to średnik robi, gdy jesteśmy kodowania? Tak. GŁOŚNIK 7: komunikat. ANDI PENG: Słucham? GŁOŚNIK 7: Czy to koniec oświadczenie? ANDI PENG: Tak. Tak więc w C lub dowolnego programowania język, średnik Oznacza koniec linii programowania. Tak na przykład, w języku angielskim się okresie użytkowania powiedzieć, no to koniec zdanie. W programowaniu, to samo, mamy średnik w celu określenia końca linii. Często, gdy jesteś rozpoczęciem programowania, będziesz sobie sprawę, zapomnij dodać średnik a następnie spróbować uruchomić Kod i to nie działa. I jesteś jak, Ach, ja nie wiem dlaczego, należy pracować. Szanse są pewnie zapomnieli średnik lub wspornik lub coś gdzieś. Tak, to ważne jest, aby pamiętać. Chłodny. Dobrze, podniesienie ręki, jak tutaj wiele osób ma coraz podjęte AP informatyki lub zaprogramowany w języku Java przed, zawsze? OK. Piękny. To nie będzie zastosowanie wtedy, ale w Javie coś o nazwie System.out.println które nie występują w C. Więc w C, gdy ci Aby dodać zmiennych w cokolwiek chcesz wydrukować, nie specyficzna składnia będziemy używać. To się nazywa placeholding-- zasadniczo dodamy zastępczych w miejsce z liczby całkowitej lub zmiennej które chcemy wydrukować. Tak jak chłopaki widzą dołączyliśmy Biblioteka nowy nagłówek pliku tutaj. Biblioteka CS50. I zawarte w tej biblioteki CS50 Funkcja jest wspólna będziemy używać w naszej oczywiście nazywa GetInt (). Czy ktoś chce wziąć ukłucie w co GetInt () może być ewentualnie robi. PUBLICZNOŚCI: [niesłyszalne] ANDI PENG: Niestety. Nie mógł cię usłyszeć. Maddie, ktokolwiek. MADDIE: Och, to poprosi Ci dla całkowitej. ANDI PENG: Dokładnie. Tak więc ta funkcja, inna funkcja, która już zostały napisane przez kogoś innego że możemy wezwać teraz. Wszystko to jest to poprosi cię, użytkownika, do wejścia co chcesz jako kod pracuje i przechowuje whatever-- w tym przypadku jesteśmy GetInt () - ing, więc oznacza to, że jesteśmy uzyskaniu całkowitej. I mamy zamiar przechowywać że w innej liczby całkowitej że właśnie popełnił zwany wiek. To ma sens dla każdego? Chłodny. Więc teraz, że mamy zapisane to liczba całkowita, że my poproszony przez użytkownika, w tej zmiennej, mamy stworzył typu int o nazwie wiek, możemy śmiało i miejsce które działają w naszym printf (). Tak składnia zwykle printf () jest że gdziekolwiek na aktualnej fizycznych Linia chcesz dołączyć tę liczbę całkowitą, robisz ten symbol tam, symbol procent, z typ zmiennej, które chcesz. Więc w tym przypadku wiek jest liczbą całkowitą. Więc masz zamiar to % i dlatego, że jest liczbą całkowitą. A następnie po stwierdzenie, będziesz zrobić przecinek i Nazwa zmiennej. Więc, idziemy do wydrukowania się, Cześć, nazywam się Andi, i jestem puste lat. Hashta-- lub sorry--, wiek z jakiegokolwiek wejścia I. Więc gdybym wejścia 20 dla mojego GetInt () tutaj to wydrukować dokładnie to samo. Ale, gdybym chciał coś wejściowego innego, jak być może 40 lub 45, wtedy będzie widać, że odbicie W związku z tym w kodzie. Więc to jest przykład czegoś, w którym drukuje się i patrzy Ci, jak gdyby to samo, ale pod maską komputer jest rzeczywiście różne rzeczy dzieje. Chłodny. W porządku. Więc co, jeśli chcemy wielu zmiennych? Całkiem proste. Ta sama rzecz. Mamy też nową funkcję tutaj nazywa getString (), również w bibliotece CS50, że wszystko, co robi jest skłonić użytkownika na sznurku, który jest tylko zestaw znaków, tak jak w zdaniu lub jak nazwy. Więc w tym przypadku, to mamy dwa zastępcze% s dla smyczkowy i% i do liczby całkowitej. I będziemy podążać że do dwóch zmiennych możemy zostać uwzględnione w kolejności które pojawiają się w zdaniu. Tak na przykład, mam na imię puste, chcę nazwę tam, więc będę mieć pierwszą nazwę. A następnie potem chcę wiek, chce mieć wiek sekundę. I tak, jeśli chciałem wejścia, Witaj, nazywam się Andi i mam 20 lat. Gdybym wpisał Andi i 20, dokładnie to samo będzie drukować; jednak teraz mamy dwie przechowywane zmienne nazwy, jak i int. Tak. GŁOŚNIK 8: Czy byłoby w stanie uruchomić, jeśli włączony imię i wiek, w końcu jest? ANDI PENG: Tak. To bardzo dobre pytanie. Więc krótko mówiąc, nie. Ponieważ nazwa i age-- co typ zmiennej jest nazwa? GŁOŚNIK 8: String. ANDI PENG: A co typ zmiennej jest wiek? GŁOŚNIK 8: Integer. ANDI PENG: Więc tutaj mamy zastępczy dla łańcucha i liczby całkowitej, prawda? Więc jeśli były, aby przełączyć je, komputer nie będzie wiedzieć. To będzie sprawdzać ciąg, i jeśli spróbujesz dać int, to będzie jak czekaj Jestem zdezorientowany, ciebie powiedział mi, że powinienem być przydzielając pamięć wew. I właśnie tutaj, przy oczekuje liczbę całkowitą i nadać mu nazwę i ciąg, a nie, To także będzie bardzo mylące, to nie będzie działać dokładnie tak, jak jest to potrzebne. Więc tutaj, nazywania i składnia bardzo ważne dla kodu działa. Każdy dobry? Tak. Maddie. MADDIE: Tutaj, Wiem, że wyglądało na przykładach w klasie, w której pytają to, co jest w twoim wieku, jak się nazywasz. Tutaj, byłoby to go doesn't-- gdybyśmy uruchomić ten kod, nie byłoby zapytać o to? Ale by wejść tylko dwa numery a następnie będzie działać w taki sposób? ANDI PENG: Tak, dokładnie. Więc jeśli chcesz na to, aby Wyświetlacz, podaj swój wiek, możesz po prostu dodać funkcję printf () że mówi: Proszę podać swój wiek, ponad tym. To jest dobre pytanie. Tak. GŁOŚNIK 9: Tak, będzie już zawarte w GetInt () [niesłyszalne]. ANDI PENG: Nie, to naprawdę nie jest. Więc to wszystko nie jest tylko monituje pusty ekran użytkownikowi na coś wejściowego. Jeśli chcesz, jeśli chcesz, aby wydrukować z czymś, co informuje użytkownika, jak, proszę mi dać swój wiek, to ci musiałby printf (), że sam. Ponieważ każdy używa tego Funkcja dla różnych rzeczy, można zostać przechowywania wiek, można być przechowywać adres, można zostać przechowywania numerów telefonów. I tak naprawdę do Poszczególne zastosowania twoich facetów za to, co chcesz to powiedzieć. Tak. GŁOŚNIK 10: Tak, tylko w celu wyjaśnienia, w których nic ci Wprowadź nazwę i wiek tak, że pojawia się w miejsce% s? ANDI PENG: jak użytkownik? GŁOŚNIK 10: Tak, tak jak mogę aby it-- gdzie mogę umieścić Andi, i gdzie mogę umieścić 20? ANDI PENG: Tak. Więc jeśli były do faktycznie uruchomić ten kod, Nie mam właściwie uruchamiając Kod, to tylko tu teraz. Gdybym miał uruchomić kod, chciałbym skompilować kod, aby plik, uruchomić kod, a wtedy nie będzie być tylko dwa miejsca dla mnie, aby wprowadzić go. Tak. Będziesz faceci zobaczyć podczas gry wokół kodem samodzielnie. Dobrze, że będziemy poruszać w następnej części tego, co będziemy obejmujące dziś. Mamy zamiar przejść nad tym, co Instrukcje warunkowe są. Więc jeśli faceci pamiętam i odwołuje się od wykładu, Instrukcje warunkowe, wszystkie one są to zestaw instrukcji do komputera w która, gdy pewien warunek jest prawdziwy, można wykonać kod wewnątrz tego stanu. Tak więc w Scratch-- zasadniczo wielki temat z dzisiaj jest to, że macie już wszystko widać logikę wszystko że mamy do pokrycia. I wszystko co robimy jest tłumaczenia coś to było bardzo intuicyjny w Scratch, i trudno go kodowania w składni będziemy używać do grupy, która jest C. Więc logicznie, cały ten blok był jest to, że część kodu, właśnie tam. Tak. OK. Mamy również dostać się do if ... else oświadczenie, które jest po prostu dodatkową warstwę złożoności do if gdzie komputer ma spojrzenie na ten i widzi, jeśli ten warunek jest spełniony, to co jest w środku tych dwóch wspornikach, else-- tak trochę jak domyślnie, jeśli nie spełniają condition-- to zrobić. To jak rozwidleniu dróg. Jeśli pada deszcz na zewnątrz, kładę na kurtkę deszczu, jeszcze coś jeszcze nie umieścić na kurtki przeciwdeszczowej. Czy to logika sensu wszystkich? Chłodny. W porządku. Więc jak twardy przykład ten, który widzimy w C to, czy chcę, aby utworzyć zmienną godzin lekcji. A jeśli godzin prac domowych jest mniej niż pięć, mówię Życie jest wspaniałe. To jest piękne. Jednak powiedzieć Walka jest real-- co jest, co wszyscy na tej poniedziałek po południu aż Nauka Hill są Prawdopodobnie robi prawo now-- PUBLICZNOŚCI: [LAUGHING] ANDI PENG: one sposób, w jaki nie, dziękuję za to. Sposób, w jaki będziemy hardcode to w C jest if-- załóżmy mamy już zmienną typu int o nazwie godzin lekcji tutaj. Jeśli godziny pracy domowej jest mniejsza niż pięć printf (), Życie jest wspaniałe. Pamiętaj zachować / n, ponieważ chcesz nową linię po. Else print, Walka jest prawdziwe. Czy wszyscy zrozumieć, jak I przesiedli się z tego bloku w tym bloku kodu? Chłodny. W porządku. Więc teraz mamy zamiar przyjrzeć się wiele uwag, jeśli w ogóle. Więc załóżmy Celem tego programu był to poprosi użytkownika o klasie. Mamy wierszu używając GetInt () dla klasy, a ich wejście wartość, i chcesz wyświetlić jaki rodzaj klasy dostali. Więc gdybym miał stworzyć program, ja oznacza zazwyczaj w naszych oczach, 90-100 jest A, 80-90 jest B, i tak dalej i tak dalej. Co jest nie tak z tym fragment kodu, który nie jest robić to, co chcę robić. Tak. GŁOŚNIK 11: Mają niższe limity, ale nie ma górnej granicy. ANDI PENG: Dokładnie. Czy każdy słyszy to, co powiedziała? Nie będzie to górna limity, ale nie niższe limity. Niestety, odwrotnie, dolne granice, ma górnej granicy. Więc chcesz podjąć ukłucie co mówi co drukuje się na tę Ekran gdybym uruchomić ten kod. GŁOŚNIK 11: błąd? ANDI PENG: błąd? Wielka przypuszczenie, nie do końca prawda. Czy ktoś ma inny ukłucie? Tak, Aaron. AARON: Jeśli włożysz coś większego niż 90, to pokazać wszystkie stopnie masz. To pokazuje, że masz się A, masz B, masz C. ANDI PENG: Tak. To się dokładnie zgadza. Tak, to byłoby wspaniałe. Jednak są one wzajemnie Ekskluzywny, myślę. Gdybym miał uruchomić ten kawałek kodu. A potem po prostu powiedzieć, że wprowadzane na stopień 95. Tak więc 95 jest teraz przechowywany w int o nazwie klasy. I tak C jest językiem który uruchamia się od góry do dołu, tak to się zawsze uruchomić do dołu. Więc to będzie tu, przeczytaj, jeśli Gatunek ten jest większy niż lub równy 90, printf (), który dostał A. wielki, a ja mają 95, to jest większa niż 90. To będzie drukować, Mam A. To się dzieje aby zapoznać się z tym, jeśli to będzie powiedzieć, dobrze 95 jest większy niż 80, to będzie drukować również dostał GOT wykrzyknik znak B, i tak dalej i tak dalej. Tak, jak wszyscy widzimy, jest to wspólny problem które mogą wystąpić, gdy jesteśmy pisania kodu, aby zwrócić uwagę. Każdy, wszelkie pytania na dlaczego tak się dzieje? Wielki. OK. Jak więc rozwiązać ten problem, jest oczywiście logicznym następne pytanie. Cóż, mamy te piękne rzeczy zwane jeśli else if else jeśli else. Więc widać, jeśli chcesz zmienić ten problem, chciał, aby każdy z Warunki wzajemnie wykluczające się, dodałbyś jeszcze ... if. A te z course-- myśleć o nich jako drabiny, albo jak szczeble na ladder-- można dodać, jak wiele z nich, jak ty chce tak wielu warunków, jak chcesz. Więc tutaj, jeśli wprowadzane stopień być 95. Jeśli klasa jest większa niż 95, printf (), mam A. Fantastyczny. To będzie zobaczyć jeszcze ... jeśli i to będzie wiedzieć, o nie, Ja już wykonane pierwsze indziej. I know-- lub pierwszy if-- Wiem, że Nie muszę patrzeć na żadnego z nich ponieważ jedna z nich było już prawdą. Więc to będzie działać z góry na dół. Jak tylko pierwszy z nich jest prawdziwa, to to będzie przeskoczyć całą resztą z innym ... IFS. Czy to ma sens? Tak, w ten sposób masz różne poziomy kontroli i gdy tylko jeden z nich jest fałszywe, Reszta to również, że nie będzie nawet sprawdzić. Chłodny. W porządku. Jest to więc Przykładem innego rodzaj instrukcji warunkowej widzimy rzadziej, ale będziemy je widzieć i używać ich. I są one często bardziej skuteczny dla pewnych przypadkach. Więc mamy to, co się nazywa instrukcja switch. Zanim więc pokryte Co to jest inny stwierdzenie, if ... else. Tutaj mamy to, co jest zwane oświadczenia przełączników. Więc kiedy używamy przełącznika Sprawozdanie jest klucz? Tak więc w instrukcji switch, można zwykle, zazwyczaj, w rzeczywistości ci mogą tylko liczby całkowite Input Zmienna, że ​​będziesz zaglądać. Więc gdybym chciał sprawdzić, Jeśli pewna number-- np gatunek, jeśli mam 90. Chcę, żeby zobaczyć, czy to jest typu A, B lub C. mógłbym tutaj przypadek. Jednak sprawa ma być inna stała. Tak więc w tym sensie Instrukcja switch może tylko sprawdzić równość dwóch liczb. Nie sprawdzić na nic innego. Więc to jest coś za bardzo Uważaj, gdy używasz tego. Więc, gdybym chciał sprawdzić, czy moja klasa z 90 równa się 90 lub 80 lub 70 lub 60, a następnie do druku odpowiedni gatunek, Chciałbym móc napisać, że w instrukcji switch. Tak to się dzieje, aby tu przyjechać, kontrola jest Ta liczba całkowita równa tej stałej? Jeśli nie, to będzie pominąć. Czy jest równa stałej dwa, i tak dalej, i tak dalej, aż trafisz domyślne, Jeśli żaden z nich są takie same. Jak tylko jeden z nich ustawiona jest równe to będzie to zrobić linia kodu i przerwy. Co oznacza, że ​​to będzie hit, który uruchomić, złamać, i po prostu całkowicie pominąć w dolnej części kodu. W tym sensie więc rodzaj funkcji jak if else if else if. Więc oto konkretny Przykładem dla was. Więc załóżmy, że chcę utworzyć zmienną o nazwie roku założył. I chcę, aby skłonić użytkownika do wejścia roku, że ich szkoła została założona. Więc mogę utworzyć tutaj instrukcji switch. I powiedzmy, że wejście 1636. Ten kod jest tu zobaczymy przełącznik roku 1636 założył co równa. To będzie zobaczyć sprawę 1636, ach te są równe, printf () nie powinny być w tym szkoły północy? Ponieważ zakładamy, że nie kliknij tutaj, jeśli idą do Harvardu, przerwy i przejść do końca. Gdybym wejściu 1701, które Zakładam, że każdy z nas będzie wejście, byłoby pominąć tę sprawę, przyjdź do przypadku dwóch, które jest 1701, i druku Witamy w Yale! Przerwa, przejść do końca. Jeszcze pewnie są tego kursu on-line, w którym case-- niesamowite powitanie do Yale-- to będzie, aby przejść do domyślne drukowania, Hello Internetu! I złamać. Tak. GŁOŚNIK 12: Czy można używać innego zamiast domyślnie tam? ANDI PENG: Nie, ponieważ sposób, że cała ta funkcja Przełącznik jest zbudowany, składnia ci trzeba użyć to sprawa przypadku domyślnym. To podobnie jak w przypadku innego, jeśli to jednym przypadku sprawa jest domyślny. Tak. GŁOŚNIK 13: Może już to powiedział, ale można mieć więcej niż dwóch przypadkach? ANDI PENG: Tak, mogłeś mają wiele spraw, jak chcesz. Pomyśl o tym, jak po prostu lubię nieskończenie dodając. GŁOŚNIK 14: Jeśli przełączane 1701 z 1636 roku, nie naprawdę prawo różnica? To jest po prostu będzie sprawdzenie tego. ANDI PENG: To bardzo dobre pytanie. A my dotykamy to później, ale po prostu Wiesz, że to przełącznik oświadczenie infinitely-- to bardziej wydajny niż to jeśli else if ponieważ działa za pomocą innego rodzaju funkcji, która pozwala, aby w istocie, po prostu wskoczyć prosto do Sprawa trzeba być. Tak. GŁOŚNIK 14: Spoko. Dzięki. ANDI PENG: Tak GŁOŚNIK 14: i nie można to przypadki, jak i powyżej. ANDI PENG: Nie Tak, to, co się ograniczenie o Instrukcja switch jest to, że masz mieć stałe, tylko, tylko liczby całkowite. Tak. OK. Więc to jest coś, co Cię Chłopaki będzie spotkanie mniej często, ale ja po prostu chciałem wprowadzić go w przypadku. Mamy tu co zwany operator trójargumentowy. W przypadku, gdy w istocie, to jest po prostu jak if skompilowane w jedną linię. Tutaj, pójdę do następnej linii, następna strona, ponieważ łatwiej zobaczyć. Więc wszyscy widzieliśmy to prawo? Jest to dość łatwe do naśladowania. Gdybym chciał zrobić zmienną String o nazwie s, jeżeli pewna liczba I daje to mniej niż 100, I Aby przypisać niskiej do łańcucha, jeszcze chcę przypisać wysokie. To tutaj, robi dokładnie to samo te osiem linii kodu robią. Więc chcę stworzyć zmienną łańcuchową. I to jest warunek, że jestem sprawdzenie, czy liczba jest mniejsza niż 100, następnie przypisać wartość niska, jeszcze przypisać wartość wysoka. Te slajdy będzie online, nie martw się jeśli faceci nie dostać to w dół. To jest po prostu prostszy sposób, bardziej skuteczny sposób pisania kodu. OK. Więc teraz mamy zamiar wejść, co dla większości ludzi są jak bardzo, bardzo mylące co o tym myśleć w pierwszej kolejności. Sekcja pętli. Więc dzisiaj będziemy rozmawiać około trzech rodzajów pętli. Mamy zamiar zacząć czas pętli, a następnie mówić o robić podczas pętli, a następnie rozmawiać o pętli. Tak więc zasadniczo dla bardziej uczniowie wizualne tam, mamy w istocie, graficzny wizerunek, co robi pętli while. Więc w programowaniu, należy zacząć i wprowadzenie pętli, w pewnym momencie. Sprawdzić stan. A jeśli warunek jest prawdziwy, można wykonać kod wewnątrz. I wrócić się i sprawdzić. Jeśli to wciąż prawda, biec Kod dookoła w pętli. Jednak drugi że warunek staje się fałszywy, masz zamiar złamać i kończy pętlę. I jest w zasadzie składnia masz zamiar używać. Podczas gdy pewien warunek prawda to zrobić, jeśli nie jest to prawdą, masz zamiar przejść do końca i iść do przodu z programu. OK. Czy ktoś ma przykład co potencjalnie może się zdarzyć gdy próbuję uruchomić ten kawałek kodu? Przy okazji, SAJ-- to Scaz, Andi, Jason-- będziemy wylogować nasze e-maile, Miłość, Saj. To nas. OK. Ktoś ma przykład, lub pomysł na to, co to będzie drukować? Rodzaj podchwytliwe pytanie. Więc pamiętaj, stan sprawdzamy, jest natomiast prawdą. Tak więc, to jest prawda, to jest do druku, kocham Saj! Czy istnieje punkt, w którym bylibyśmy zmienić na cokolwiek w inny sposób? Nie, prawda? Więc tutaj mamy napotkał, co prawdopodobnie będzie podsłuch dużo programy, nieskończonej pętli. Przekonasz się, że jeśli Ciebie uruchomić ten kawałek kodu, to jest po prostu zamiar utrzymać drukowanie, kocham Saj! Choć doceniamy wsparcie, nie chcemy komputerów do katastrofy, bo Ciebie utrzymać drukowanie Kocham Saj! Więc proszę, proszę, uniknąć nieskończonej pętli dlatego, że nigdy nie będzie do oceny false i nigdy nie będziemy opuścić pętlę. I masz zamiar być zasysane zawsze. Chłodny. OK. Drugi rodzaj pętli porozmawiamy o dzisiaj to robić podczas pętli, robić podczas pętli. I to się nazywa zrobić, gdy w pętli bo masz zrobić i trochę czasu. Więc to jest bardzo podobne do chwili pętli, ale trochę inaczej. Tutaj masz zamiar zrobić co jest w środku tego podczas gdy pewien warunek jest spełniony. Więc gdybym C i komputer jestem spływały ten kawałek kodu, I spójrz na górze. Idę do C, mówię to czynił. A następnie sprawdzić, podczas gdy jest prawdą, muszę to powtórzyć. Ale jednocześnie jest to fałsz, potem ruszyć do przodu i nigdy nie wrócę do tej pętli ponownie. Czy ktoś może zabrać ukłucie przy jakiej różnicy od tej pętli i ten, który tylko spojrzał na praktycznie. Tak. GŁOŚNIK 15: Stan jest po, a nie przed? ANDI PENG: Dokładnie. Więc powiedziała stan jest po, a nie przed. Ostatecznie, różnica między tym i pętli while jest to, że jesteś po prostu zrobić co jest w środku to niezależnie od tego, czy twój stan jest prawda, a następnie sprawdzić stan. Więc w tym przypadku, że jesteś always-- w ten sposób jesteś zawsze upewniając co jest w środku trwa co najmniej raz przed sprawdzając jeśli chcesz go uruchomić ponownie. I to jest przykład kiedy chcemy go użyć. Tak na przykład, jeśli chcę mieć zmienna typu int o nazwie wiek, i chcę, aby skłonić użytkownik dla ich wieku, Mam zamiar zrobić printf () W jakim jesteś wieku? wiek = GetInt (), która jest monitowania użytkownika. A niektórzy ludzie będą naprawdę denerwujące. A ty nie chcesz błędów w twoim Program kogoś wprowadzania podobnych, oh jestem negatywne 4 lat lub cokolwiek innego. W takim przypadku, jeśli zrobić, to ocenia true, co oznacza, że ​​będę musiał wracać i to robi. Tak to się dzieje, aby zachować ponownie monitowania użytkownika dać jak prawdziwy Numer wieku i jest to zamierza wracać i ponawianie że dopóki nie daje prawdziwy wiek większa niż jeden, lub nie zero. Więc podpowiedź, wskazówkę. To będzie bardzo, bardzo przydatne dla jednego z problemów pset. Tak. GŁOŚNIK 16: Oj, przepraszam. ANDI PENG: Tak. GŁOŚNIK 16: Czy nie być dupkiem, ale-- ANDI PENG: Nie martw się. GŁOŚNIK 16: nie --are różne przepisy tutaj, czy po prostu zapomnieć umieścić cytat? ANDI PENG: Oh Yeah. Niestety, jest to całkowicie mój zły. To był zdecydowanie miał być cytat. Dobrze wychwycone. To by nie uruchomić. OK. Tak więc ostatni rodzaj pętli będziemy rozmawiać o, a ostatecznie rodzaj najbardziej Kompleks jest w pętli. Nie martw się, jeśli nie wiesz co to znaczy. Jest to dość mylące na początku. Pójdziemy na przykład. Wszystko, co dzieje się w pętli for jest to, że masz trzy oświadczenia że masz zamiar dołączyć. Tak więc dla pewnej rzeczy, jesteś zamierza zainicjować zmienną. Masz zamiar dodać warunek, aby która to pętla będzie nadal działać. A następnie w krańcach Pętla, masz zamiar go zaktualizować. Możesz zaktualizować zmienną które chcesz śledzić. Więc zazwyczaj korzystają pętle do kiedy chcemy uruchomić pętlę dotyczący pewna ilość razy i już wiemy, Oh chcę pętla do wykonania, jak 10 razy, wtedy do-- pójdę na przykład na następnej stronie. Więc na przykład w Scratch, jeśli Ciebie chciał coś powtórzyć 10 razy, wszystko, co miał do powiedzenia było, powtórz 10 razy kocham Saj! który jest bardziej dopuszczalny pokaż wsparcia dla nas zamiast nieskończonej pętli. Oto, jak będzie Przejście na C i pisać że jest dla int-- Zamierzam utworzyć lub zadeklarować zmienną typu int o nazwie i. Mam zamiar zainicjować jest na 0, więc i = 0; i to będzie mój stan. Tak więc i mniej niż 10. A następnie w end-- ostatnia wypowiedź jesteś będzie musiał to aktualizacja co się dzieje z zmienna i w końcu twój pętli. Więc to trochę mylące, ponieważ różne części tej linii dzieją się różne rodzaje pętli. Ale pójdę ponad pseudokod przykładem a może to wyjaśnić tylko trochę lepiej. Więc tu. To pętla właśnie zobaczył. Zasadniczo w Pseudokod, co dzieje się w tym programie, jest pierwszym tworzę I, inicjalizacji 0. Jestem sprawdzając, czy ja to mniejsze niż 10, przy czym pierwszy raz, to jest ponieważ 0 jest mniejszy niż 10. Tak więc pętla będzie działać. A potem mam zamiar wydrukować tę linię. A następnie na końcu tej linii, tuż tutaj, mam zamiar zrobić, przyrost i, i ++, wszystko to oznacza to, zwiększany o jeden. Więc jest teraz 1. Bo to był kiedyś 0, jeśli zwiększyć to, że teraz jest 1. A potem mam zamiar wrócić rozpoczęciem pętli i sprawdzić stan. Czy warunek wciąż prawda? Tak, 1 jest wciąż mniejsza niż 10. Więc to będzie drukować to jeszcze raz, go, a następnie zwiększyć i, i sprawdzić, warunek w sposób ciągły, nieprzerwanie, aż w końcu się do punktu, w którym jest 10. Masz zamiar wydrukować to 10 razy a potem będzie równa 10. Masz zamiar sprawdzić stan. Czy 10 mniej niż 10? Nie, to jest fałszywe. W ten sposób pętla nie zamierza do pracy, to będzie złamać, i masz zamiar dalej z kodem. Tak jak chłopaki widzą, tego Jest to naprawdę świetny przykład pętli można zaprogramować w które działa na określoną ilość razy. Każdy, jasne? Tak. GŁOŚNIK 17: Jak o przyroście wykładniczo, to jest inne kodowanie? ANDI PENG: Ty can-- pójdziemy nad tym w następnym slajdzie. Dobre pytanie. Czy anyone-- zanim przejdę on-- ktoś w ogóle mylić, ponieważ jest to naprawdę trudne pojęcia. Nie martw się, jeśli you're-- OK. Chłodny. W porządku. Tylko ogólne slajdów. Ta pętla, gdy jest robi dokładnie to samo dla pętli było. To jest po prostu napisane inaczej. Możecie czytać slajdy na Twojej wygody później. Ale po prostu wiem, że jest wielu sposoby pisać to samo stanie z różnych pętli. OK. Tak, teraz mamy na pytanie, co Jeśli mamy do pętli wewnątrz pętli. Dostajemy się prawdziwa Incepcja typu rzeczy tutaj. Gdy chcesz robić rzeczy wielokrotność razy wewnątrz innych rzeczy że robić rzeczy wiele razy, ci chcą czegoś, co nazywa zagnieżdżonej pętli. Dla tych, którzy po raz pierwszy zobaczyć i się bardzo mylić, wszystko, co robimy, jest o pętli for gdzie mamy zmienną rzędu. Ale w jej wnętrzu, mamy też inny pętli kolumny zmiennej nazywa. I gorąco polecam was wszystkich którzy są zdezorientowani najpierw utrzymać track-- zwrócić na to uwagę, zwrócić na to uwagę. Nie próbuj słusznej przyczyny przez to, wyciągnąć go na zewnątrz. W głowie, na tym kawałku papier, lub cokolwiek, napisać wiersz, śledzić, co rząd jest równy. Napisz kolumnę, śledzenie co kolumna jest równa. I śledzić to, co jest drukowanie z każdej iteracji. Każde powtórzenie tej pętli, każde iteracja tej większej pętli, po prostu zachować zgodnie z logiką. I gwarantuję Ci, pokochasz to, co widzisz, bo to bardzo zastosowanie dla swoich zbiorów problemowych. Chłodny. W porządku. Więc to, co najważniejsze że chłopaki są chyba wszystko myśleć o tej chwili, stanowią problem Ustaw 1s, które są spowodowane czwartek / piątek. W programie water.c, podpowiedź będziesz mieć aby skłonić użytkownika do wejścia. W ramach programu mario.c będziesz mieć używać zagnieżdżonej pętli, który jest dla pętli wewnątrz pętli for, wydrukować bloku piramidy, zasadniczo jak co Mario ma przeskoczyć. A następnie wewnątrz greedy-- czy może Dokonywanie zmiany, jeśli ktoś z was chłopaki kiedykolwiek słyszał that-- masz zamiar być bardzo Uważaj na pierwszych wartości zmiennoprzecinkowych. Pamiętaj, pływające po przecinku i liczby całkowite nie to samo. Śledzić, który z nich jest którym. I masz zamiar użyć Instrukcje warunkowe, jak również. Dobrze, ostatnia rzecz. Mam kilka pozostawił minut. Styl. Więc to jest coś, co nie faktycznie wpływać na wydajność, lub rzeczywisty bieg kodzie. Jednak jej skutki nas jako Twoje równiarki, jak czytelników. Działa się, jeśli jesteś starając się znaleźć problem. Wpływa to na czytelność kodu. Więc styl, jak wtedy, gdy starasz się styl esej na angielski, jeśli nie mają paragrafy, masz wszystko rodzaju z pomieszane razem w jednej linii, to sprawia, że ​​bardzo trudne dla każdego przeczytać esej, nawet jeśli Twoje punkty są logicznie dźwięku. Samo w programowaniu. Możesz mieć strasznie niejasne Kod, który obejmie Scaz, i może nadal działać i funkcjonować. Ale dla nas, jak twoje piękne TAs, którzy będą czytać i oceny swoich PSets, to nie jest bardzo miłe. Więc proszę, dla dobra z nas i siebie, kiedy starasz się naprawić problem w kodzie, i starasz się przeczytać swój własny kod, aby należy postępować pewne konwencje które mamy zamiar przejść. Więc po pierwsze. Daj zmienne znaczące nazwy. Jeśli chcesz zapisać liczbę całkowitą zwany wiek, należy wymienić go wieku. Nie nazwać to wysokość. Kiedy starasz się przechowywać wiek wysokości, to sprawia, że ​​wszystko, bardzo mylące dla nas. Nie podoba nam się mylić. Nie podoba ci się mylić. Nikt nie lubi być mylony. Jeśli masz zamiar stworzyć coś, nazwać to coś znaczącego. Jednak w pętli for single Zmienne znakowe są zazwyczaj dobrze. A w pętli, jeśli chcesz po prostu ja, oraz j, k, nie krępuj się po prostu zrobić. Zgodne inicjalizacji. Więc co to oznacza? Oznacza to, że technicznie, teoretycznie, można zainicjować i utworzyć wielu zmiennych na tej samej linii. Tak na przykład, można utworzyć liczbą całkowitą o nazwie scaz_age, i całkowita nazywa andi_age = 20, i liczbą całkowitą o nazwie jason_age na tej samej linii. I mogę przypisać tylko jeden z im, a nie innych do wartości. Prosimy was proszę, nie rób tego. Bo tu już w zasadzie stworzył Trzy zmienne, ale tylko jeden z nich faktycznie ma wartość. I wtedy, gdy jesteśmy próbuje odczytać kodu, lub jeśli starasz się naprawić problem w kodzie, to jest bardzo mylące do naśladowania. Tak tylko dla czytelności, na nasz czytelność, nie rób tego. Spójne nawiasy klamrowe. Niektórzy ludzie lubią umieścić swoje nawiasy klamrowe w różnych miejscach. To naprawdę nie ma znaczenia. Tylko upewnij się, że jesteś konsekwentny w swojej własny kod, gdzie chcesz je umieścić. Zgodne odstępy. Jeśli umieścisz miejsca po pętli, zawsze zrobić. Nie tak jak rodzaj zrobić na niektóre miejsca, nie rób tego w innych. Wystarczy być spójne. Po drugie, jeśli ktoś chciałby do zapoznania się z CS50 Style Guide, oficjalnie mieć przewodnika stylu, że mówi, wszystkie z tych konwencji, plus więcej. To jest online. To jak cs50.net/style~~pobj czy coś takiego. Możesz to google. Spójność jest kluczem. Więc nie martw się, co inni ludzie robią, tylko upewnij się, że jesteś spójne w obrębie własnego kodu. Ktoś ma jakieś pytania, które? Tak. GŁOŚNIK 18: Więc właściwa rzecz, zrobić z inicjalizacji jest tylko mają je wszystkie w oddzielnym linia, jest to, że to, co mówisz? ANDI PENG: Więc ja rzadko się to zdarzyć. Ale jeśli chcesz, jeśli chcesz być jak oszczędność miejsca w kodzie, lub cokolwiek, możesz to zrobić. Pytamy, że po prostu nie zainicjować jedna rzecz, a nie inni. Więc jeśli chcesz zrobić int scaz_age, int andi_age, int jason_age, że jest w porządku. Tylko nie zainicjować jeden a nie inne jest wszystko. Pytania? W porządku. Zamierzam przejść off mikrofon, a wskaźnik laserowy, i baton do Scaz w tym momencie. To jest niezręczne. Tutaj jest. BRIAN SCASSELLATI: Dziękuję. Jak to na dźwięk? Dźwięk jest dobry? , Doskonałe. OK. Tak, cześć wszystkim. Mam zamiar spróbować pracy poprzez praktyczny przykład z tobą. I mamy zamiar używać CS50 na środowisko programistyczne, co nazywa Integrated Development Environment. A widzieliście ten wykazano w wykładzie. Aw Problem Set 1, jesteś będzie miał okazję go używać, i bawić się z Opisz i przyzwyczaić się do tego, bo mamy zamiar go używać przez resztę semestru. Więc w tym IDE, co wygląda jak bardzo tradycyjnej przeglądarki plików na jednej stronie. Masz część się góry, gdzie idziesz aby zobaczyć kod źródłowy, twój Cfile, kod, który piszesz. Iw dół dołu, będziesz mają okno terminala którego będziesz używać do zarówno skompilować program i uruchomić lub wykonać program. OK. Więc po prostu dać nam trochę fundacja, w tym oknie terminala, masz zamiar być za pomocą zestawu rozkazów które są standardowe polecenia całym większość systemów Unix lub Linux. I tak, jeśli kiedykolwiek używałeś każda forma Unix, Ubuntu, lub dowolne z innych smakach to będzie wyglądać znajomo. Jeśli nie, nie martw się. Nie ma nic skomplikowanego w nich. Oni tylko za pomocą innego składni, różne nazewnictwo Konwencja niż ty widziałeś wcześniej. Więc do listy z plików obrębie danego katalogu oni będą używać Komenda nazywa ls lub Lista. Jeśli chcesz zobaczyć wszystko ze wszystkimi szczegółami, musisz użyć polecenia Argument linia z ls -l. I że pokażę wam wszystko Bardziej szczegółowo, w tym uprawnienia do pliku. Aby zmienić katalog, musisz użyć polecenia cd. I będziesz mógł zmienić katalog zarówno w celu przejdź do katalogu domowego. To tylko cd wszystkim Sam, cd z dwoma kropki spowoduje powrót do jednego Poziom do poprzedniego katalogu. I można również płyty CD na podkatalogu wpisując cd i nazwa tego katalogu. Można również tworzyć nowe katalogi. I będziemy chodzić przez to w zaledwie minutę. Ale po prostu umieścić wszystko na ekranie. Tak, że można je zobaczyć. Będziesz mieć również możliwość bezpośrednio manipulować pliki z linii poleceń. Będziesz mógł je skopiować, do przenieść je lub je usunąć, czyli efektywnie, aby je usunąć. CS50 IDE daje pełny siła argumentów wiersza poleceń. A to oznacza, można również to bardzo niebezpieczne rzeczy. OK. Na przykład, można usunąć, lub że jest kasowania, plik bez pytania o potwierdzenie. I można nawet usunąć recursively-- to kreska r flag-- tam całego podkatalog i całą jego zawartość. OK. Są one wymienione w czerwonym, bo Ciebie należy myśleć "niebezpieczeństwo" za każdym razem, widzisz te rzeczy. OK. W porządku. Teraz wreszcie rzeczy, które są będzie bardzo cenne dla Ciebie, są tam kilka dobrych sztuczek wiedzieć, jak jesteś nawigacji przez ten oknie terminala. Po pierwsze, można wyczyścić ekran w za każdym razem, poprzez wpisanie w jasne. I masz zamiar zobaczyć mnie do tego dość często. Możesz też po prostu wyświetlić treść pliku wpisując Więcej, a następnie nazwę pliku. Będziesz wtedy mógł przewinąć do tyłu i dalej z tym tylko spacją i klawiszy strzałek. Jeśli tak, jak my dzisiaj w wykładzie, program, który działa nieprzerwanie w nieskończonej pętli, można można zatrzymać ten program z wykonania przez wpisanie w kontroli, że jest przytrzymując Control-C. A może trzeba zrobić to wiele razy. Komputer staje się daleko przed wami. I czasami trzeba dać mu kilka prób zanim faktycznie przechodzą. Będziesz także być w stanie sortowania poleceń że po prostu wpisane za pomocą przycisku w górę, klawisz strzałki, a następnie klawisz strzałki w dół. A co jest najbardziej przydatna jest zamiast wpisywać się długie nazwy plików, będziesz w stanie karcie stosowania na uzupełni kilka wskazówek. Teraz jedziemy do wykazania wszystkie z nich w ciągu sekundy. Więc jeśli nie pamiętam je, nie martw się. Są to rzeczy, które będziesz podnieść i wykorzystać jako idziemy. OK. Tak więc w przeciwieństwie do Scratch-- C-- C jest skompilowany języka. Oznacza to, że mamy zamiar podjąć źródło file-- to tekst, który piszesz, Polecenia, które piszesz, tym printf () oświadczenia, pętle, wszystko else-- i będziemy wziąć ten plik i przekazać go do programu o nazwie kompilatora. Kompilator następnie że tekst, który napisałeś i przełożyć je na instrukcje binarne że komputer jest rzeczywiście będzie wykorzystanie. To się nazywa przedmiot lub plik wykonywalny. Jeśli spojrzeć na tym pliku, będziesz aby zobaczyć kod, który napisałeś. Jeśli spojrzeć na tym pliku, będziesz zobaczyć losowy ciąg znaków że nie ma sensu w ogóle. To dlatego, że jest to binarny. To nie znaczy, aby czytać. Jednak za każdym razem chcesz uruchomić coś, co masz zamiar być uruchomiony jest plik ten przedmiot. Tak więc, gdy pracujemy z nich Pliki, będziemy pisać do pliku w C Będziemy następnie skompilować go, za pomocą Polecenie jak marki, który będzie wywoływał dzyń kompilator języka C. I że będzie produkować obiektu złożyć, jak out, lub w tym przypadku, nazwa, mój plik, który umieściłem w. W porządku. Więc rzeczywiście spróbować. Więc wpadłem na przykład z tego, co chciałem spróbować. A jedną z rzeczy, które Fascynuje mnie to, animacja. Tak więc mamy zamiar spróbować zrobić trochę animacji używając tylko znaki ASCII. Znaków możemy wydrukować łatwo teraz. Więc tutaj jest mój najlepszy próba stworzenie dla Ciebie animacja króliczka uruchomiony przez wysoką trawę. Tam jest. OK. Więc on nie jest jeszcze uruchomiony, ale jest stoi w wysokiej trawie. Teraz gdybym był animatorem, w starej szkole wersja animacji, co ja zrobi to chciałbym produkować obraz tego bunny w trawie. A potem chciałbym produkować kolejny picture-- innego, co nazywa cell--, że miał króliczka tylko nieznacznie poruszył. A potem trzeci, który miał króliczek przeniósł się trochę dalej. I chciałbym produkować całej karty Kolejność tych komórek. Niektóre gdzie króliczek jest ponad na lewej stronie. A następnie porusza się powoli, jeden przez jednego kierunku środku. A następnie od środka na prawo. A gdybym był wtedy naprawdę szczęście, mogłem umieścić go razem i może je ożywić. I jest mój króliczek przebiegającej przez trawy. To moja wielka PowerPoint oszukać na dzień. OK. Więc to jest tak dobre, jak to robi. OK. Tak, tu jeszcze raz, tu jest nasz króliczek przebiegającej przez trawy. GŁOŚNIK 19: Jeszcze raz. BRIAN SCASSELLATI: Jeden więcej czasu, wszystko w porządku. Oto twój króliczek. OK. Więc dzisiaj, co będziemy zrobić, to jedziemy spróbować zautomatyzować proces wytwarzania tych komórek. Nie będziemy dość dostać się do punktu jest w stanie umieścić je wszystkie razem. Ale mamy zamiar spróbować zautomatyzować Proces generowania tej sekwencji. I to jest dużo co animacja dziś jest podobne. To znaczy, nie robić rzeczy, niekoniecznie rysując wszystko ręcznie. Używamy komputera do automatyzacji Części tego procesu. OK. Więc pozwól mi przełączyć teraz do naszego CS50 IDE. I stworzyliśmy dla us-- i pozwól mi przybliżyć tutaj trochę bit-- skończyłem stworzony dla nas punktem wyjścia. Za każdym razem, prosimy siedzieć w dół i napisać kawałek kodu, co tak naprawdę pytaniem o wykonanie jest, że pytamy, aby rozwiązać problem. A sposób, że zalecana myśleć o robi, że Jest zaczynając od niektórych proste częścią tego rozwiązania. A następnie zbudować z tej części. I to, co mamy zamiar zrobić dzisiaj. Więc zamiast próbować od razu do Napisać całą masę kodu, który jest będzie produkować te 10 komórki animacji, mamy zamiar rozpocząć zamiast z jednego kawałka, który działa. I wtedy będziemy budować trochę dookoła, że i trochę więcej i trochę więcej. Teraz dobre rzeczy na temat rozwiązywania problemów w ten sposób jest to, że pozwoli to na rozpoczęcie zawsze z czymś, co wiesz robót i przedstawić jedno stopniowe zmiany. I to jest to świetny sposób, dowiedzieć się, jak do kodu, bo za każdym razem zrobić Zmiana, widzisz, jaki wpływ ma. OK. Więc tutaj jest nasz punkt wyjścia. OK. Więc na początku mojego pliku, Mam hash #included stdio.h. To jest tak, że mogę dostać printf () do pracy. I wtedy mam głównej funkcji. I to wciąż wygląda trochę Arcane lub niejasne dla niektórych z was. Dobrze. Wszystko to mówi się, że główną funkcją ma nie arguments-- void środki nic w C i to powraca by konwencji liczbą całkowitą. Głównym zawsze zwraca liczbę całkowitą, Zazwyczaj kod mówiąc rzeczy poszło dobrze i nie dobrze. OK. Ale głównym musi mieć, że stanowią dla nas teraz. Mam następnie umieścić w trzech linii kodu. A wraz z każdym wierszu Kod, mam umieścić komentarz. Teraz jedna z rzeczy, które będziemy nalegać, aby to zrobić, i to jest takie ważne Praktyka programowania, jest zawsze skomentować swój kod. Zawsze należy zapisać w sposób Angielski komentarz coś że myślisz Kod ma robić. W ten sposób, później po powrocie do że można spojrzeć na to i można powiedzieć, Och, ja pamiętam, co było stara się zrobić z tym. Albo gdy TA siada z tobą starają się pomóc w godzinach pracy urzędu, mogą patrzeć na to i odejść, zobacz, co staraliśmy się zrobić, lecz jest tego, co się naprawdę dzieje. OK. Więc mam trzy części do mojego kodu, Mam zamiar przede wszystkim drukiem z niektórych punktów na początku. Wtedy będę wydrukować my bardzo fantazyjne króliczek. A nawet nieco kropki na końcu. I te trzy oświadczenia druku powinien wygląda znajomo dla Ciebie w tym momencie. Wszystko, co robię w każdy z nich jest, że jestem drukowanie sekwencję znaków. Nie ma zmienne związane. Wszystko jest płaskie. OK. Więc jeśli zejść teraz do mojego terminal-- Zobaczmy, czy uda mi się to z powrotem out-- i mam zamiar ponownie wpisać jasne. GŁOŚNIK 20: Czy możemy użyć podwójny ukośnik dodać komentarz? BRIAN SCASSELLATI: Czy użyj double-- tak. Istnieje wiele sposobów komentarze w C. One sposobem jest użycie podwójnego ukośnika. Drugim jest użycie slash i gwiazdkę a następnie zamknij gwiazdką i ukośnikiem. W porządku. Przede wszystkim mam zamiar rozpocząć nawigację tutaj. Więc jeśli pójdę do mojego katalogu domowego, Zmieniłem katalogów tam, Będę patrzeć i widzieć, co jest w tym katalogu, ls, wymienić się. Idę zobaczyć, że mam ma dwa podkatalogi. Zróbmy to trochę większe tutaj tak, że wszyscy możemy zobaczyć. Widzę, że mam ma dwa podkatalogi. Zmienię katalogu iść do pracy. I mam zamiar tylko wpisać się część, a potem po prostu wciskamy Tab. I będzie ona zakończyć resztę dla mnie. Fancy. Będę patrzeć i widzieć w pracy. A teraz jestem w pracy na SuperSection że uczysz teraz. Więc pójdę do tego katalogu. I wreszcie, patrzeć i widzieć. A ja mam tego pliku bunny.c. Dobrze więc pozwól mi czysta. I mam zamiar znowu jestem now-- nadal pobytu w tym katalogu i to mówi mi, że jestem w że katalog SuperSection. Mam zamiar iść do przodu i mój program króliczka. I to polecenie, aby króliczka, podczas gdy brzmiące trochę dziwne, również wywołuje kompilator clang. I to jest produkowane przez mi wyjście, które jest wykonywalny funny-- Plik wykonywalny nazywa króliczka. OK. Mogę wtedy, i to brzmi jeszcze gorzej, wykonać króliczka. OK. I zobaczmy, co robi. OK. To trochę czego się spodziewałem. Mam moje zdjęcie króliczka tam, ale rodzaj chciał to wszystko sama. Co mnie ominęło? GŁOŚNIK 21: Slash l lub ukośnik n. BRIAN SCASSELLATI: Slash n. OK. Więc wróćmy tutaj. A ja się z tym. I wrócę do tego. I niech spojrzeć teraz z mojej głównej funkcji tutaj. Więc co powinienem zrobić? Chcę, aby zakończyć linię. Więc będę umieścić w komentarzu. Włożę w printf (). I co mam umieścić w? / n. OK. Co mam do końca go? Średnik. W porządku. Teraz jeden z naprawdę ważne rzeczy, to upewnij się, za każdym razem gdy coś zmienić w kodzie, które go zapisać. Jeśli nie zapisałeś swój kod, jesteś odnotuje trochę gwiazda tam. I mówi, że gwiazda cię nie zapisany ten kod. Jeśli mogę skompilować to teraz, to nie jest będzie odzwierciedlać żadnej z tych zmian, ponieważ kompilator patrzy na pliku to jest na dysku, a nie pliku to otworzyć w edytorze. W porządku. Warto więc zapisać, a potem pójdziemy prawo na dół tutaj, wróć na zewnątrz. Przyjdź do mojego terminalu. I niech jeszcze raz wyczyścić przestrzeń. I możemy iść do przodu i jeden czas, aby nasz program króliczka. I wykonać króliczka. To nie działało. Źle ukośnik. Więc jeśli spojrzeć na to, co mam, mogę umieścić / n tam, ale miałem zły slash. Wszystko, że komputer Czy jest bardzo wyraźne. OK? Jeden mały błąd, interpunkcji i nagle nie dostaniesz, co chcesz. W porządku. Więc znowu widok. Wrócimy. Cóż zrobić, że bardzo szybkie naprawy. Będziemy umieścić ukośnik w prawo. Będziemy go zapisać. Będziemy widok. Z jakiegoś powodu, że nie jest jest szczęśliwy, ale idziemy do przodu i wrócimy do terminalu tutaj. Usunąć ją. Będziemy powiększyć. I jeszcze raz, zrobimy króliczka. A teraz na pewno wystarczy, to działa. Brawo. OK. Więc spróbujmy zrobić to nieco bardziej ogólnie. Zobaczymy, czy zamiast tylko wydruk jednej konkretnej klatki, Zobaczmy, czy możemy zrobić to tak, że możemy uzyskać wszystkie 10 z tych animowanych ramkach że chcieliśmy mieć. Więc jeszcze raz, rzućmy Ten etap w czasie. Niech najpierw uogólnienia, nie tak, aby zrobić wszystkie klatki, ale jak to zrobić w jedno Rama, że ​​może chcę. Więc co za różnica pomiędzy ramami? Czy królik to samo? PUBLICZNOŚCI: Tak. BRIAN SCASSELLATI: Tak. Co za różnica? PUBLICZNOŚCI: stanowisko. BRIAN SCASSELLATI: Jego pozycja, prawda? I jak kontrolować swoją pozycję? Ile kropki jestem umieszczenie na początku i ile kropki jestem umieszczenie na końcu. Więc miałem pięć u poczynając pięć na końcu. Miejmy zastąpienie tego pięć z pętli for. OK. I mam zamiar stworzyć dla Pętla teraz powie, Mam zamiar wydrukować jakiś numer kropek na początku. Zamierzam użyć zmiennej. Powiedzmy, może ja jako licznik w moim pętli. I mam zamiar zadeklarować go góry. A następnie w pętli for I trzeba zrobić trzy rzeczy. Pierwszą rzeczą, którą musisz zrobić, jest potrzebne, aby zainicjować i. Co należy zainicjować go, aby zacząć być? 0. OK. To muszę powiedzieć, co jest stan rozwiązanie? Kiedy powinienem przestać? Cóż, ile kropek prawda Aby wydrukować na ten jeden? PUBLICZNOŚCI: Pięć. BRIAN SCASSELLATI: Pięć ponownie? Jak o zróbmy coś inny, zrobiliśmy pięć. Pokażmy, że jest inaczej. GŁOŚNIK 22: Dwa. BRIAN SCASSELLATI: Dwa. OK. Więc jeśli chcę dwie kropki, co mam umieścić tutaj? PUBLICZNOŚCI: Trzy. BRIAN SCASSELLATI: Trzy. OK. Ile razy jest to, że zamiar przejść? To będzie przejść przez trzy razy, 0, 1 i 2, prawda? Dobrze, wróćmy do dwóch. Teraz mamy dwie kropki. I to, co chcę robić każdego razem idę przez pętlę? Co musi się zmienić za każdym razem przejść? GŁOŚNIK 23: Dodaj kropkę. BRIAN SCASSELLATI: Muszę iść dalej. Mam zamiar dodać kropkę. Mam zamiar wydrukować kropkę, za każdym razem przez pętlę. Ale jak mam śledzenie, jak wiele razy byłem przez pętlę? Używam i, że Zmienna, że ​​licznik. Dlatego za każdym razem dzięki, będę do zwiększamy licznik o jeden. Teraz, to jest taki sam dla mnie jak mówi i = i + 1. Dobrze. Mógłbym zrobić that-- lubię skrót, więc mam zamiar powiedzieć, i ++. OK. Zróbmy to samo tu, na dole. Tylko ja niby zrobiłem tego. Zamierzam niech chłopaki zrobić ten jeden całkowicie. W porządku. Więc co powinienem napisać tutaj? Oto mój pętli. Mam zamiar zrobić printf () i mam zamiar aby tak było, że tylko wydrukować jedną kropkę w tym spodzie. Co powinienem napisać wewnątrz tej pętli teraz? Cóż, przede wszystkim, jakie Zmienne należy użyć? GŁOŚNIK 24: j. BRIAN SCASSELLATI: można używać j. Czy mogę wykorzystać ten sam? Czy mogę używać i ponownie? Tak. To jest OK, bo IS że używam tutaj, I nie trzeba ich ponownie, gdy I dostać się do tego punktu. Więc co należy zainicjować i do? GŁOŚNIK 25: 10. BRIAN SCASSELLATI: 0. Co mam sprawdzić? Ile punktów muszę się teraz na końcu jeśli mam dwie kropki na początku? Muszę w końcu osiem lat, więc to, co należy sprawdzić, ja mniej than-- PUBLICZNOŚCI: Siedem, osiem, dziewięć. BRIAN SCASSELLATI: Słyszałem siedem. Słyszałem osiem. I usłyszałem dziewięć. OK. Więc wszyscy jesteśmy w prawo ball-- Jason mówi 10. OK. Gdybym potrzebował dwie kropki na pierwszy z nich, jak wiele zrobić Ja-- i muszę ośmiu punktów za ostatnia jedno- kładę dwa się wyżej, co należy umieścić na dole? PUBLICZNOŚCI: Osiem. BRIAN SCASSELLATI: Osiem. Bo, że będzie Graf Zero przez siedem. I to jest osiem razy przez pętlę. OK. A co mam zrobić na końcu? PUBLICZNOŚCI: i ++. BRIAN SCASSELLATI: i ++. W porządku. Tak, że wygląda całkiem nieźle tam. Spróbujmy go i zobaczymy, co robi. OK. Więc będziemy go zapisać. Ładne i zapisane. Będziemy się widok. Spróbujemy tu w terminalu. Będziemy powiększyć. Ups. Zaloguj się, jeszcze raz, aby nasz program króliczka. I iść do przodu i wykonywać króliczka. I nie jest to. Więc jest nasz króliczek. Gdzie to ma dwie kropki na początku oraz osiem punktów na końcu. Wszyscy wciąż ze mną? OK. Więc zbudowaliśmy go. Zbudowaliśmy jeden bunny, jeden szczególności ramki. Teraz byliśmy w stanie uogólnić, że do budowy więcej, różne rodzaje klatek. Teraz idziemy do przodu i mieć generować nie tylko jedną ramkę, ale niech generują 10 ramki, gdzie powoli sprawiają, że króliczek przenieść wszystkie sposób w całym zakresie. W porządku. Wracajmy. A my postaramy się teraz. Więc co tak naprawdę trzeba zmienić tutaj? Co muszę zmienić? GŁOŚNIK 26: Najpierw trzeba zmienić liczbę kropek maksimum na początku. Bo jeśli robimy 10 punktów, to będzie musiał się w skali. BRIAN SCASSELLATI: Tak. Więc teraz mam to rodzaj przewodowych zawsze zrobić dwie kropki na początku i zawsze osiem kropki na końcu. Chcę zbudować kolejną pętlę, prawda? Bo nie chcę zbudować tylko jeden obraz króliczka, Chcę zbudować 10 królika zdjęcia. Więc muszę zbudować kolejną pętlę, a jak przejść tej pętli, Chcę zmienić, ile kropki wydrukować na początku i ile punktów drukować na końcu, na podstawie których cykl przez pętlę Jestem w. W porządku. Więc przejdźmy kolejny licznik. Ktoś wcześniej powiedział, j, tak zrobimy kolejny j. A teraz mamy zamiar budować kolejny pętli. To, co dzieje się wewnątrz tej pętli? Ten materiał ma iść wewnątrz pętli, prawda? Czy króliczek ma iść wewnątrz pętli? Czy muszę Zajączek w każda z tych 10 klatek? PUBLICZNOŚCI: Aha. BRIAN SCASSELLATI: Tak. Chcę Zajączek w każdym z 10 klatek, prawda? Jak o kropki w koniec, muszę, że? OK. Więc mam zamiar wciąć wszystkie z nich. Mam zamiar zaznaczyć wszystkie to, i mam zamiar uderzyć Tab. I że będzie pchać je na całym trochę tak, że jest to dla mnie łatwe zobaczyć, co jest w pętli. A potem będę ją zakończyć. Powiedzmy. OK? Teraz, w pętlę Jestem building-- whoops, sprawiają, że tak można see-- Mam mój licznik j. Ja to zaczęło się od 0. Ile razy chcę przejść tej pętli? PUBLICZNOŚCI: 10 razy. BRIAN SCASSELLATI: 10 razy. Więc jaki numer należy umieścić tutaj? PUBLICZNOŚCI: 9, 10. Brian SCASSELLATI: 9, 10, Ktoś musi powiedzieć, 11, prawda? Chciałem dwie kropki przed i umieścić i mniej niż 2. Chciałem ośmiu punktów, Włożyłem i mniej niż 8. Teraz chcę przejść przez 10 razy, więc kładę j mniej than-- PUBLICZNOŚCI: 10. BRIAN SCASSELLATI: 10. No to jedziemy. A co mam zrobić, w końcu do j? ++, Zwiększać ją. OK. Teraz tutaj jest skomplikowana część, co jest stanie się teraz, czy mogę to zrobić? Mam zamiar wydrukować 10 klatek? GŁOŚNIK 27: Myślę, że wszyscy będą takie same. BRIAN SCASSELLATI: Będą wszystkie takie same, prawda? Ponieważ wszystkie z nich są nadal w toku umieścić dwie kropki na początku. Ale ja nie chcę ich wszystkich mają dwie kropki na początku. Ile kropki zrobić I chce na początku? PUBLICZNOŚCI: Zmiana. BRIAN SCASSELLATI: I chcesz to zmienić, prawda? Więc co mam tutaj, to się zmienia za każdym razem, pętla przechodzi? PUBLICZNOŚCI: Liczba punktów, j. BRIAN SCASSELLATI: j, liczba punktów. Więc może to zmienić się j. Po raz pierwszy poprzez pętli, co to będzie? Co mogę ustawić j, aby w pierwszej kolejności? PUBLICZNOŚCI: 0. BRIAN SCASSELLATI: Tak jak wielu razy mam to zrobić? 0. Za drugim razem przez pętlę, j na będzie 1, bo zwiększamy go. Ile punktów mam zamiar drukować? 1. Za trzecim razem przez pętlę, ile punktów mam zamiar drukować? PUBLICZNOŚCI: Trzy. BRIAN SCASSELLATI: j będzie 3. Ile punktów mam zamiar drukować? Oh, przepraszam, j będzie 2. Ile punktów mam zamiar drukować? PUBLICZNOŚCI: 2. BRIAN SCASSELLATI: 2. OK, więc mam zamiar utrzymać zwiększając że idziemy. Jak o na dole? Co się dzieje na dole? Nie chcę 8 zawsze na koniec już? GŁOŚNIK 28: 10. BRIAN SCASSELLATI: Chcę 10 punktów? Chcę to zmienić, też. Więc jak chcę go zmienić? PUBLICZNOŚCI: [niesłyszalne]. BRIAN SCASSELLATI: Cóż, jeśli I mają pięć punktów na początku, Kropka na ile mogę dostać się na końcu? PUBLICZNOŚCI: Pięć. BRIAN SCASSELLATI: Jeśli mam sześć kropki na początku, ile mogę dostać się na końcu? PUBLICZNOŚCI: Cztery. BRIAN SCASSELLATI: Jeśli mam siedem kropki na początku, ile mogę dostać się na końcu? PUBLICZNOŚCI: Trzy. BRIAN SCASSELLATI: Jeśli mam ale j kropki na początku, ile mogę dostać się na końcu? 10-j. OK. Więc spróbujmy to. Więc mam zamiar zapisać nasz program króliczka. Po raz kolejny będziemy pomniejszyć. Pójdziemy do naszego terminalu. Będziemy je wyczyścić. I powiększyć. Zrobimy nasz program króliczka, ponownie. A my ją wykonać. O o. Poczekaj, niech pomniejszyć. Czy mogę dostać 10 klatek? Cóż, jak wiele zające widzę tam? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Mam 10 klatek. Czy wszystkie są takie same? PUBLICZNOŚCI: Tak. Nie. BRIAN SCASSELLATI: Nie To pierwsza z nich, króliczek jest daleko po lewej stronie. A tutaj, króliczek jest daleko na GŁOŚNIK 29: Racja. BRIAN SCASSELLATI: Tak, co zapomniałem zrobić? GŁOŚNIK 30: Rozpoczęcie nowego wiersza. BRIAN SCASSELLATI: zapomniałem aby rozpocząć nową linię, ponownie. Sam błąd zrobiłem wcześniej. Dobrze, chodźmy naprawić. Teraz mam jeszcze kod tam, aby nowy wiersz. Dlaczego nie działa? GŁOŚNIK 31: To nie jest wewnątrz pętli. BRIAN SCASSELLATI: Och, to nie jest wewnątrz pętli. To prawda. To tu siedzi na zewnątrz. A do pętli wszystko że jest w środku tego tekstu. Więc mam zamiar przenieść to wewnątrz pętli for. I będę Tab przed nim do wskazują, że jest we właściwym miejscu. A teraz będziemy go zapisać ponownie. Będziemy pomniejszyć. Będziemy przełączyć się na naszym terminalu. Zbliżenie. Będziemy przerobić nasz program króliczka. A teraz, teraz mamy nasze 10 klatek. [Klaskanie] BRIAN SCASSELLATI: OK. Więc. Tu jest nasz zagnieżdżone pętle. Byliśmy w stanie generować w Wewnętrzna pętla ile punktów chciałem drukować na początku, na końcu. A zewnętrzna pętla sterowany ile klatek Budowałem. Zaczęliśmy jeden mały Jądro problemu, i zbudowany od tego miejsca. W porządku. Zróbmy jeszcze jeden krok. Jesteś gotowy? Jest jedna rzecz, tu, gdzie mamy rzeczywiście rodzaj dostał bardziej złożony, niż potrzebujemy. Spójrzmy. Tak więc w naszym programie króliczka, jeśli pomniejszyć tutaj, I faktycznie niektóre z tych samych rzeczy w kółko. Co mam zrobić, że to coś w rodzaju to samo powtarza się dwukrotnie? GŁOŚNIK 32: Broszura kropki. BRIAN SCASSELLATI: Tak I dwa razy wydrukować te kropki. Naprawdę, powinienem mieć Ten komentarz tutaj. Wydrukować kilka punktów u począwszy, aż tutaj. A następnie wydrukować jakieś kropki na końcu. I robię to za dokładnie to samo. Co mamy zamiar zacząć pracy na w najbliższych tygodniach jest w stanie wziąć te bloki Kod, który używamy w kółko, i w procesie nazywa abstrakcja, mamy zamiar wyciągnąć je i zapisać je kiedyś tak, że możemy to ponownie je w kółko. Warto więc spróbować. Gotowi? Zamierzamy wziąć ten blok kodu. I mam zamiar zabrać go stamtąd. I mam zamiar define-- u dołu, Mam zamiar napisać nową funkcję. Nie będzie powrotu nic. I zamierzam to nazwać printDots. To zajmie jeden Argument, liczba całkowita mówi howManyDots powinienem wydrukować. A teraz zamiast drukować j kropki, będę Drukuj howManyDots powinienem wydrukować. I jest jeden mały problem. Ktoś wie, co to jest? Co mam, które jest wymienione tu, że nie jest zdefiniowane? PUBLICZNOŚCI: [niesłyszalne] BRIAN SCASSELLATI: Cóż, jak wiele kropki definiuje aż tutaj, ale używam tej zmiennej i. Więc mam zamiar podjąć tę zmienną i i mam zamiar go zdefiniować w tutaj Zamiast. Więc teraz to będzie stay-- oops, dostał caps lock na somehow-- jestem zamierza utrzymać I w tutaj. Teraz tutaj jest mój mały funkcja lub sub-rutyny, i mówi, ile punktów mam zamiar drukować? I będzie ona przejść przez tę pętlę i wydrukować je w kółko. Mogę zmodyfikować mój program się tutaj. I co ja nazywam ta funkcja? printDots. Więc zadzwonię printDots. Ile kropki chcę wydrukować Po raz pierwszy przed króliczka? PUBLICZNOŚCI: j. BRIAN SCASSELLATI: j. Ile kropki chcę wydrukować Na koniec, po króliczka? 10-j. I jest jedna rzecz mi brakuje. Jak widzieliśmy w wykładzie dzisiaj, mamy zamiar zadeklarować printDots się wyżej, z wytworzeniem prototypu. OK. Więc to, co zrobiłem jest Próbowałam izolować, że ponownie wykorzystane część kodu które zrobiłem w kółko. I starałem się wyciągnąć go tak, że wszystko to jest zawarty w jednym miejscu. W ten sposób, jeśli mam gdzieś błąd, Mam tylko naprawić to w jednym miejscu. W porządku. Warto więc zapisać go. I niech to upewnić się, że działa. Więc chodźmy się. Pojedziemy jeszcze raz do naszego terminalu. Będziemy powiększyć. Zrobimy ten proces króliczka. Och. I to daje mi ostrzeżenie. Co jest mi powiedzieć? Cóż w żadnej z nich razy, zawsze chcesz aby przewinąć do pierwszej error-- teraz na ten jeden, ja tylko mam jeden. Mówi mi w bunny.c, na linii 8, kolumna 9, pojawia się problem. Mówi pan oświadczył tego zmienne i oraz nie zostały wykorzystane. Teraz normalnie, to nie najgorszy błąd. To jest łatwe do naprawienia. A w rzeczywistości, możemy wrócić. Możemy wrócić zajączek. I w tym przypadku, wszystko, musisz zrobić, to pozbyć i, dlatego, że nie używasz I w terminie głównym więcej. Jesteśmy po prostu go za pomocą w naszym sub-rutyny. Warto więc zapisać, że. Wrócimy. I powiększyć. Będziemy jeszcze raz zrobić króliczka. I znów to nasze 10 klatek. OK. Za każdym razem, dostaniemy procedure-- Tak. GŁOŚNIK 33: Mam A-- jestem zdezorientowany. Można wrócić do kodu? BRIAN SCASSELLATI: Tak. GŁOŚNIK 33: Więc, kiedy napisał Twój prototyp, argument ci gdyby imieniem nazwano howMany? Ale below-- BRIAN SCASSELLATI: O tak. GŁOŚNIK 33: --called im coś inaczej, nie rozumiem. BRIAN SCASSELLATI: Dlaczego są one różne. Więc to jest wielkie pytanie. Więc pytanie było, aż tutaj napisałem howMany, i na dole, napisałem howManyDots. Powodem jest to, że w swoim prototypie, to faktycznie nie jest zwracając uwagę do nazw, że jesteś wprowadzenie. Wszystko tak naprawdę zależy na jest to, że jest liczbą całkowitą. Chce wiedzieć, formularz z tego, co masz wprowadzenie. Teraz stylistically-- oops-- co powinienem nie, to chciałbym, aby te spotkanie. OK. Dlatego, że będę trzymać mi łatwiej zapamiętać. Ale to był mój błąd Tak. GŁOŚNIK 34: I tak dla Prototyp pracować tylko pisząc ten wiersz, pisanie prototyp, Umożliwia to funkcja, która pochodzi tuż poniżej, aby przejść do końca i pobierać co to oznacza? BRIAN SCASSELLATI: Co to oznacza? jest, gdy kompilator przechodzi, przechodzi od wierzchołka kod do dołu. A co to prototyp, Jest to w zasadzie obietnica. Mówi, że będzie funkcja zdefiniowana gdzieś. To będzie tzw printDots. I to zajmie jeden argument że będzie liczbą całkowitą i to będzie powrót nic, nieważne typu. OK. Obiecuję, że będzie zdefiniowana gdzieś w dół drogi. Ale za każdym razem można zobaczyć , że jak idziesz w dół przez resztę mojego Główną funkcją, chcę które można traktować jako funkcję które ma jedno wejście całkowitą. I tak, gdy kompilator idzie w dół przez to, że widzi tę obietnicę. A kiedy robi się w dół, utrzymuje dzieje, ciągle dzieje, stwierdzi się po raz pierwszy printDots wspomina. I mówi, Oh, dajesz mi to j. j jest liczbą całkowitą. Dobrze mi obiecałeś, że jest liczbą całkowitą i to prawda. Dobrze. I w końcu, w dół na samym dole, zanim się do końca mojego Plik, robię dobrze na mojej obietnicy i zdefiniować. OK? GŁOŚNIK 35: Tak, to saves-- Program zapisze spacje że wraca i wypełnia na końcu? BRIAN SCASSELLATI: Nie o alokacji pamięci. Jest to tak naprawdę tylko o to, co Typ oczekujesz zobaczyć. Jeśli to, co masz Argument, lub pięć argumentów? Należy mieć to liczby całkowite być względu na to, czy strun? To wszystko wygląda zrobić, to sprawdzić, dajesz mi odpowiedni rodzaj argumentu. OK? W porządku. Pozwól mi zostawić z jedna nieco patrzeć. ASCII nie jest wielkim wzorem animacji, jak to jest dzisiaj. Ale niektórzy ludzie oczywiście wziąć sprawy i pchnąć go do swoich skrajności. Jest to, jak wykazano, David w wykładzie, kawałek kodu że w żadnym przypadku nie spróbuj odtworzyć siebie. Bo to jest straszne stylistycznie. W rzeczywistości, jest wykonane w taki sposób trudne, jak to możliwe, aby przeczytać. OK. Tak, aby ponownie zrobić, niech przybliżyć tutaj. Mam zamiar iść, katalog zmian. Zamierzam przejść się jedną Poziom, do mojej pracy. Będę wtedy zmienić katalog, w tym inny katalog, który stworzyłem. I to jest międzynarodowa Ukrywane C w Programowaniu Zespołowym. Ukrywane środki jak trudno jak to możliwe, aby zrozumieć. Więc proszę, nie bój się, jeśli spojrzeć w tym i iść, nie mogę przeczytać, że. To jest sens tego. OK? Ale mamy to wspaniały program, że jestem przyjrzymy się poprzez wpisanie więcej. I zobaczmy, czy mogę pomniejszyć tylko trochę, więc można go zobaczyć I to jest program. To się nazywa endo.c. I wygląda na to, tym segmencie z rodzaj liter F-L-U-I-D w nim. To jest rzeczywiście program. Jest napisany w najbardziej niejasne sposób, że autorzy mogli ewentualnie Napisz to. Ale to wspaniały mały kawałek, który generuje modelu dynamiki płynów. I tak mamy zamiar dać ten model wejście, które wygląda tak, znaczny staired zestaw pojemników z jakimś płynem, niektóre cieczy u góry. I musimy symulować co się dzieje z nim. Więc zadzwonię do tej funkcji, endo. A ja go dać, że plik wejściowy, który miałem. I nie jest naszym uosobieniem sztuki ASCII. Pełne płyn dynamiczny symulator uruchomiony w ciągu zaledwie kilku linii kodu. Teraz to, co jest rzeczywiście bardzo niesamowite o tym małym programem jest to, że chcę, aby zatrzymać go teraz, tak, mam zamiar wykorzystać to, co polecenia? PUBLICZNOŚCI: Control-C. BRIAN SCASSELLATI: Control-C. OK. Więc będę używać Control-C. C To będzie go zatrzymać. Będę wyczyścić ponownie. I teraz mam zamiar podniesienia zarzutu Program, uruchomić program, używając siebie jako wejście. I zobaczymy dynamikę płynów symulacja nim topienia. OK. Proszę, nie pozwól tego programu jest rzeczą, że myli cię. To jest po prostu tak, że możemy zakończyć na coś fajne i ciekawe. OK. Powodzenia w swoich zestawach problemowych. Będziemy szczęśliwi, aby odpowiedzieć Pytania po klasie. Dzięki dużo, chłopaki.