[ODTWARZANIE] -A Triumf matematyczne i mechaniczne umiejętności Jest to wspaniały nowy automatyczne Kalkulator na Uniwersytecie Harvarda. Skomplikowane problemy w matematyce wprowadzony do urządzenia w postaci zakodowanej na taśmie są dokładnie rozwiązane w minut ułamek czasu potrzebnego dla ludzkiej kalkulacji. Zaprojektowane, aby przyspieszyć wszelkie formy matematyczne i naukowe badania, Mózg mechaniczny gigant będzie działać Stany Zjednoczone Navy do końca wojny. [Zakończyć odtwarzanie] David J. MALAN: To jest CS50. Przeszłość była magiczna miejsce, ale jeśli kiedykolwiek zastanawiał się, co to urządzenie jest w Harvard Science Center, rzeczywiście jest częścią Harvard Mark I, i to na wyświetlaczu nie teraz w ciągu ostatnich lat. A co zobaczysz wbudowane w zestaw problemów jedno jest spojrzenie za kulisy na to, co zrobił, że urządzenie, a nie, od profesora Harry Lewis, który jest w Komputer dział tutaj nauki. Więc o tym za tylko trochę. Ale dziś zaczynamy przejścia z ostatniego tygodnia temu a my przynieść wzmianki jednej fotografii tutaj to rzeczywiście dość znany. Czy ktoś wie co to tutaj jest na ekranie? Przynajmniej według mitu. Tak. PUBLICZNOŚCI: Pierwszy wirusów. David J. MALAN: Tak było podobno to pierwszy rzeczywisty błąd w komputerze. Teraz w rzeczywistości błąd słowo, za błąd w programie, jest z nami dla niektórych Czas w świecie fizycznym, i był to jeden z pierwszych, udokumentowane czasy, gdy ktoś rzeczywiście oskubane dużą ćmę z Markiem II komputer, umieścić go w spoiwie, a następnie nagrał ją jako pierwszy znany błąd aby rzeczywiście znaleźć fizycznie. Tak więc została wpisana że w dzisiejszej wiedzy. Wszystko, począwszy od ostatniego Tydzień jest dostępna online. W szczególnych środków, które może nie koniecznie zauważyć, szczególnie jeśli tu przyjechać osobiście. Więc jeden z kolegów nauczania każdego roku sprawia, że ​​kanoniczny zestaw notatek, więc nie musisz się trzymać Twoja głowa w dół, starając rozpisać prawie wszystko tu może się zdarzyć, że w klasie. Tak sobie sprawę, że ci, tak zwany [? Scribd?] Notatki są w Internecie, na pewno slajdy i Kod źródłowy, który używamy w klasie. Wykonujemy pełne zapisy tekstowe również dostępne. Więc jeśli mgliście pamiętam niektóre Termin i chcą szukać go trochę łatwiej, uświadomić sobie, że wszystkie stanowi, że można przeszukiwać w Internecie. A także solucje, jak również. Rzeczywiście, dzisiaj zaczynamy patrzeć na język programowania poziom niższy, wkrótce będzie znany nam jak C, i to jest bardzo łatwe do rodzaju zgubić po kilku razem chwile, a potem coś w rodzaju cudu jak rzeczywiście dostał się trochę więcej Kompleks przykład od najprostszych. I tak sobie sprawę, że będziesz wiśni odbiór w klasie jakiegoś reprezentatywnych przykładach, ale sobie sprawę, że o wiele więcej jest również dostępne w Internecie, dzięki czemu można pracować przez to w swoim własnym tempie, jednak jesteś najbardziej komfortowe. Ale skończyliśmy z Programy, które były po prostu to. Więc kliknij zieloną flagę, i co ten program zrobić? Mówi, hello, world. To sprawia, że ​​kot powiedzieć witaj w swoim małym świecie na górnej stronie lewej interfejsu użytkownika Scratch jest. Ale zaczęliśmy wprowadzać trochę terminologii w zeszłym tygodniu. I tak, takie rzeczy się nazywa, co? Co może być ogólne określenie na to? Tak. Metoda lub oświadczenie. Pewnie, że to działanie. Zrób to. A jednak nie było inne kształty do zera, oprócz tych tak zwanych stwierdzenie, byli również takie rzeczy, które nazwaliśmy co? Tak. Więc pętla. I w tym przypadku to, co powtarza, oczywiście, 10 razy. Istnieje zawsze bloku. Istnieje kilka innych. A dzisiaj mamy zamiar zobaczyć, jak przetłumaczyć na bardziej współczesnego świata, jeśli chcesz, nawet jeśli jest to będzie pojawiać się na pierwszy rzut oka znacznie bardziej zaawansowanych. Ale to były rzeczywiście pętle. A potem mamy takie rzeczy jak To, która miała taki kształt, i zasadniczo zadawane pytania. A my, o których mowa je jako co? PUBLICZNOŚCI: Wyrażenie logiczne. David J. MALAN: Tak. Wyrażenie logiczne. Coś, co jest albo prawdziwe, albo fałszywe, tak lub nie, jeden lub zero, jednak chcesz, aby świat. Ale my nazwaliśmy te Boolean wyrażenia, a my je podłączyć w warunkach, lub oddziałów. I w świecie Scratch, wszystko ładnie Blokady w zakresie jego kształt, jeśli to sprawia, logicznego sensu, aby to zrobić, ale nie trzeba się zatrzymać na tak robi jedną rzecz warunkowo, można mieć przysłowiowy rozstaju dróg i zrobić to czy tamto albo jeśli warunek jest prawdziwy czy nie. I wtedy, jak zobaczysz, jeśli nie masz, Można nawet gniazdem tych bloków. Tak Scratch rośnie do wypełnienia kształtów które możesz włożyć do niego, więc rzeczywiście można wyrazić najbardziej jakakolwiek logika, że ​​możesz to zrobić. Teraz kilka słów o ogłoszeniu zarówno tu i New Haven. Więc cięcia zaczyna się dziś. Adres URL to na kurs na Strona internetowa, na tych zaznajomiony. Sekcje będzie okazja, aby się spotkać w bardziej intymne środowisko niż [? Sanders?] Pozwala, z 10 do 20 kolegów z uczy kolegów na różnych torach, i różne kroki, jeśli tak zdecydujesz. Rzeczywiście oferta kursów różne części dla tych mniej wygodne, bardziej wygodne, a gdzieś pomiędzy, i rola kciuka tutaj, jest nie ma formalnej definicji, ale jeśli jesteś mniej wygodne, Ci rodzaj wiedzą. Jesteś nieco nieustraszony o Pomysł stepping stóp, być może, z powrotem w klasie, lub wyświetlanie aż do w między sekcji. Jeśli już programowania od Ciebie sześć lat, bardziej komfortowe, być może do Ciebie. A jeśli jest to rodzaj Toss-up, to jest dokładnie to, co w między ma być. Teraz, w międzyczasie, dla klasy tej wielkości, zajmuje nam sporo czasu na części wszyscy, więc mamy tak zwane, Super sekcje, wymyślanie tego weekend i na początku przyszłego tygodnia, więc spojrzeć na stronie internetowej kursu jest dla tych, które są oczywiście szeroki, a także nakręcony dla tych, którzy nie mogą uczynić je. I sekcje sami zacząć w tym tygodniu trzy CS50 indeksem zero. Problem ustawić 0 już na stronie internetowej oczywiście za. I okazuje się, że mają dziewięć późno dni w tym semestrze. Więc jest to upgrade z ostatniego roku, kiedy miał pięć zaległych dni. Więc jeśli zastanawiasz się, mamy dziewięć zestawów problemów. Masz dziewięć późno dni, z których każdy można wydać tylko jeden na tydzień na. Który skutecznie sprawia, że ​​wszystkie problem ustawia powodu Piątek, ale celem jest, aby umieścić trochę trochę presji psychologicznej na ciebie, aby spróbować rzeczy w czwartek bo jak wkrótce odkryjesz, na lepsze lub na gorsze, większość wszystko w świecie oprogramowania kończy się trwał dłużej, niż przewidujemy. Tak więc uważam to za rodzaj z okazji, aby pomóc sobie na cel czwartek, ale wziąć komfort, że tak, wszystko jest spowodowane piątek. A jeśli je zgłosić na Czwartek, to wspaniale. Nie ma dodatkowych punktów lub dodatkowa kredyt na dotrzymaniu tego terminu. To ma być tylko podporą. I godziny pracy, zarówno tu w New Haven, osobiście, jeśli chcesz spotkać się z każdym z naszych kursów nauczanie bliźnich i CAS o pomoc. W porządku. Więc teraz, zróbmy to bardziej realne. I przez chwilę to się rozpocznie się trochę bardziej ezoteryczne, ale bardzo szybko w piątek w przyszłym tygodniu będziemy w stanie zrobić o wiele więcej niż mogliśmy do tej pory w Scratch. Więc wprowadzony kod ostatni tygodniu, choć obrazkowe. To było układanki. A my sformalizowane, że jest to coś takiego jak kod źródłowy, ale nie wygląda? Cóż, wyglądało to trochę coś takiego. I w rzeczywistości, po prostu rodzajem drażnić, gdzie możemy pójść z tym. Mam zamiar iść do przodu i otworzyć okno tutaj, a ja po prostu się do wyboru nowego pliku. I mam zamiar zapisać ten plik jako coś w rodzaju komentarzy dot c. Więcej na ten wybór słowa chwilę. I to jest, jak ktoś może go o napisanie programu. Dołącz Standardowe we / wy dot h, int main nieważne, a następnie otwórz nawias klamrowy, blisko nawias klamrowy, printf komentarzy przecinek świecie, odwrotny ukośnik n, średnik, Zapisz, zrobić. OK. Napisałem mój pierwszy Program, ale to się dzieje być bardzo rozczarowany bo gdy w rzeczywistości uruchomić ten program, oczywiście, przez pierwszy piśmie dokonać witam, a następnie dot slash witam, a my przejść przez to bardziej szczegółowo w jednej chwili, to wszystko robi. Nie otwierają wszystkie okna. To nic nie robi szczególnie fantazyjne. Wszystko to nie jest to, co powiedziałem do zrobić, ale w jaki sposób dostać się do tego? A w jaki sposób budować na tym? No cóż, wprowadzić kilka różne koncepcje tutaj. Tak jeden, mamy zamiar rozpocząć za pomocą programu o nazwie kompilator. Kompilator istnieje dla Mac OS, Windows, Linux, dowolna liczba systemów operacyjnych a my wkrótce wprowadzi Cię do środowisko, które będziemy używać, ale kompilator jest tylko ogólne Termin na kawałek oprogramowania że ma kod źródłowy i produkuje kod obiektu od niego. Innymi słowy, jeśli mają jako wejście źródła Kod, coś, co po prostu wpisane, ostatecznie produkuje kod wynikowy. I kod obiektu jest naprawdę fantazyjny sposób mówiąc wyprowadza zera i jeden jest. Innymi słowy, źródło Kod, nawet jeśli jest to będzie wyglądać trochę tajniki, i nieco mniej przyjazny niż Scratch na pierwszy rzut oka, to przynajmniej coś że my, ludzie mogą zrozumieć. To rodzaj wygląda i brzmi jak Angielski, chociaż jest to bardzo zwięzłe. Natomiast programowanie w zer i One, jak nasi poprzednicy musieli zrobić, kilka lat temu, nie był wyzwaniem szczególnie zabawne. A jednak jest to, co się komputer nadal rozumie. Więc kompilator robi nas od Kod źródłowy do kodu wynikowego. To jest jak otwarcie pliku z kompilator, a po zapisaniu go, masz te zer i jedynek. Więc zobaczymy, jak to zrobić że za chwilę. Ale niech teraz starają się zapewnić most pomiędzy ostatnim tygodniu i to, tak, że nawet jak się powiesił na rzeczy, takich jak nawiasy, i średniki i nawiasów i wszystkie te interesujące intelektualnie aspekty programowania, które bardzo zrozumiałe potknąć ludzi się na początku, sobie sprawę, że wszystkie pomysły Obecnie są same jako ostatni. Tak więc ostatnia, widzieliśmy ten przykład tutaj program Hello World. Cóż, począwszy od dzisiaj, jeśli chcemy do realizacji tego samego programu, to będzie wyglądać Trochę coś takiego. A my wyjaśnić przed długim jakim int, i główny, i nieważne, a wszystko to jest, ale przynajmniej widzę tutaj już zaznajomieni Hello World. Tymczasem takie rzeczy jak Funkcja, przywitaj, jest bardzo łatwo będzie bardzo proste stwierdzenie tak. Printf hello world, niektóre cytuje z odwrotnym ukośnikiem, średnikiem, ale Więcej na ten temat w przyszłości. Pętle, tymczasem jest to pętla, Oczywiście, wita świat na zawsze, a ten będzie wyglądać trochę dziwniej niż w ostatnim, ale jeśli mogę coś powiedzieć jak, podczas gdy prawda, Można następnie wydrukować Witaj świecie znowu i znowu i znowu i znowu. A potem, jak można rodzaju od rozpoczęcia wywnioskować tutaj, Niniejsza Konwencja korzystania nawiasy klamrowe jest rodzajem jakby obejmując urozmaiconej linii kodu nie. Linia printf kodu, podobnie jak żółty kawałek układanki się powyżej. Więc nie będziemy mówić na zawsze, będziemy mówić podczas gdy prawdziwe, ale zobaczymy, dlaczego tak jest tylko trochę. Tymczasem, jeśli mamy pętlę tak, gdzie można powtórzyć coś skończonego liczba pomnożona, ten też jest to zajmie trochę przyzwyczaić , ale to będzie powiedzieć na int ja dostaje zero, i mniej niż 10, i ++, a następnie printf ponownie. Ale nie będzie to wzory. A dla tych z was zna z AP Informatyki, lub Java, lub dowolną liczbę innych języków Prawie wszyscy z tych konstruktów do tej pory powinien wyglądać w większości znane. Tak więc zmienne. Więc oto prosty Scratch fragment, który ustawia zmienną licznik do zera, a następnie na zawsze mówi licznik oraz następnie zmienia licznik o jeden. Tak zaczyna się od zera, i jeden, dwa, trzy. Cóż, jak możemy przedstawić, że w ten nowy język trochę podobnie? Licznik int równa zero, natomiast prawdą, która jest to, że sam pomysł sprzed zrobić coś na zawsze, a ja po prostu się do printf. A teraz robi się to trochę dziwne, procent i, ale o tym, aby przyjść, ale pomysły te są dokładnie takie same. Właśnie teraz musimy stosować się do składnia, że ​​komputer jest będzie wymagać od nas. Wyrażenie logiczne, coś jak sx mniej niż y lub x mniej niż y, i y mniejsza niż z. To będzie wyglądać trochę coś jak ten, z nawiasów tylko jak w matematyce na dokładkę po prostu upewnić się, że kolejność operacji jest jak chcemy. A teraz, warunki. Tak więc, jeśli x mniej niż Y, np x jest mniejsze od y, else if x jest większa od y, powiedzieć, x jest większe od y, inaczej Logicznie rzecz biorąc, x może być równe R. Więc może realizować coś takiego w Scratch, lub może realizować to w tej składni. I znowu, nawiasy klamrowe są rodzajem dając nam taki sam kształt jak puzzle sztuk, ale składnia obecnie, jest prawdopodobnie zaczynają przestrzegać pewnych wzorców. Więc, co to da nam tutaj? Więc wracamy wtedy do naszego głównego programu. Niech faktycznie, teraz, coś z tym zrobić. Tak więc w tym pierwszym Linia widzimy ostre obejmują, Standard I / O, kropka h, oraz wtedy jakiś dziwny kąt wsporniki poniżej, że. int main nieważne, a następnie printf hello world. Więc po prostu zrób krok. Ktoś, kto nigdy nie zaprogramowane wcześniej, co najmniej jednego wyjaśnienia tych linii. Korzystanie być może niektóre z żargon z ostatniego tygodnia. Co jest printf, na przykład? Tak. PUBLICZNOŚCI: [niesłyszalne] David J. MALAN: Tak. Jest to funkcja, lub oświadczenie, z zeszłotygodniowym terminologii. I jest to działanie że robi coś. Teraz ta funkcja, lub to stwierdzenie, czy wydaje się podjąć jakieś wejście? I w jakim sensie to robi wydaje się wejście, jeśli tak? Wejście, co mam na myśli? Tak. PUBLICZNOŚCI: [niesłyszalne] David J. MALAN: Tak. Tak Scratch Kilka puzzle gdzie można go parametrize. Można powiedzieć, powtarzanie zablokować, ile razy powtórzyć, tak, aby było wejście rodzaju, i tak jak Scratch miał trochę białego zastępczy dla numeru należy wpisać w, więc nie używamy w tym nawiasy tekst świata aby dać nam, że okrągły kształt do którego możemy podłączyć nasz wkład. Po tym wszystkim, kilkadziesiąt lat temu gdy język ten, zwany C, wynaleziono nikogo Przewiduje się, że jest jednym z nas, te kilka lat później, my mieliśmy chcę funkcję, która mówi cześć. Dobrze? Byłoby miło, gdyby istniała kawałek układanki, lub słowa kluczowe, to się nazywa komentarzy, które dosłownie mówi cześć. Ale nie potrzebujemy tego. Możemy mieć coś znacznie niższy poziom, podobnie jak ogólny druku Polecenie, które ma wejście, i druki, co chcemy. Więc zauważyć obecnie wzór które zaczną się pojawiać. Otwarte nawias, blisko nawias jest najwyraźniej obejmując wejście, i wtedy widzę podwójnie cytuje na obu końcach. Jest jeszcze dziwne odwrotny ukośnik n, ale mam nadzieję, że teraz może zacząć wyobrażać co najmniej, że printf bierze w jakiejś formie wkładu. Nie tak przyjazny dla użytkownika jak Scratch, ale to jest po prostu jak po podłączeniu tam jakąś wartość. W porządku, teraz rzeczywiście coś z tym zrobić. Więc niektórzy z was wie, od mając przed zakupy klasę, rozmawiał z przyjaciółmi, że przez wiele lat kiedyś coś o nazwie urządzenie CS50. Jest to termin opisujący technologii nazywa maszyna wirtualna, która Jest to oprogramowanie, które swój poprzednicy by pobrać się strona kursu za darmo. Oni również pobrać bezpłatną kawałek oprogramowania zwanego hypervisor, coś takiego jak VMware, lub VirtualBox, lub dowolną liczbę innych narzędzi, a na ich Mac lub PC lub cokolwiek komputer mieli w zeszłym roku oraz w latach poprzednich, to wzrośnie dwukrotnie kliknij ikonę uruchomić to oprogramowanie nazywany hypervisor. A następnie wewnątrz tego programu oni otworzyć urządzenie CS50. A efekt, że czy poprzednik Ciebie został uruchomiony system Mac OS lub Okna, on lub ona następnie później miał nowe okno na ich Ekran uruchamiania środowiska CS50 jest. Więc maszyna wirtualna pozwala uruchomić jeden system operacyjny wewnątrz drugiego, i to jest dokładnie to, co zrobiliśmy. Przez większość my oczywiście zastosować system operacyjny o nazwie Linux, specjalnie Ubuntu Linux, a to Jest to bardzo dobry sposób, w ubiegłych latach z upewniając się, że każdy w toku po prostu miał tego samego środowiska. I można użyć dowolnego rodzaju Komputer, który rzeczywiście chcesz. Wśród wad, choć, były to jakby dwa gigabajty ściągnąć tę rzecz. To musi działać nie bardzo dobrze na ludzie, których komputery, które może tylko miał koncert i tak z pamięci RAM, czy też nie zbyt wiele GHz z prędkością procesora, i tak w tym roku, na tego i innych powodów, nie byliśmy przejście do tego środowiska. Tzw CS50 IDE, który jest w oparciu o oprogramowanie open source, i obsługiwane platformy że firma nazywa Cloud9 wspiera w Europie, które pozwala nam na zasadzie dokładnie to samo środowisko, jak w lat przeszłości, ale w tak zwanej chmurze. Więc co to jest chmura? Prawdopodobnie kliknął jego ikona na komputerze Mac lub PC. Czym jest chmura? Tak? Trochę głośniej. Tak. To tylko kilka komputerów innych miejscach, które przechowują dane i uruchomić Oprogramowanie i tym podobne. Więc to naprawdę tylko na słowo de iure opisywania [? do wynajecia?] komputery, które żyją w innym miejscu. To Ty sam niekoniecznie właścicielem. Tak więc, gdy dane, lub zwrot Programy są w chmurze, to po prostu oznacza, że ​​jest się kimś else komputerach gdzie indziej, i nie najprawdopodobniej na swojej fizyczne laptopa lub komputera stacjonarnego. A więc to, co jest teraz IDE CS50. Od tej pory będziesz udać się do pewnego Adres URL, który wprowadzi Cię się w problemu ustaw 1, jeszcze w tym Tydzień, który będzie potem, po zalogowaniu, daje to środowisko. I podobnie jak Scratch miał zaangażowanych kilka różnych paneli, tak nie IDE CS50 mają dokładnie to. Na górnej lewej stronie tutaj, jesteś zobaczymy znajome przeglądarkę plików. Tak więc każdy z plików, które umieścić w tym środowisku po prostu się tam być. Pliki i foldery. Na szczycie tutaj, masz zamiar zobaczyć miejsce gdzie rzeczywiście można napisać kod. Początkowo w C, później w Termin w PHP i JavaScript, i być może na ostateczne Projekty, Ruby lub Python lub Java lub dowolną liczbę języków są obsługiwane w tym środowisku. To nie jest w ogóle związany do CS50 specjalnie. A następnie w dolnym rogu tutaj, zwłaszcza dla tych bardziej komfortowe, masz coś zwane okno terminala. I to okno terminala pozwala można wykonać dowolne polecenie, które Cię chce w tym środowisku chmury. To pozwala na instalację żadnego dodatkowego oprogramowania że chcesz, bo masz tzw korzeniowe lub administratora przywileje. Tak więc, innymi słowy, chociaż ostatecznie hostowane w chmurze, i mimo, że mamy uprościć to w pewnym stopniu domyślnie, dosłownie wprowadzenie, dzięki Dan Armendariz i Dino, i Dan Bradley na zespół CS50 na przestrzeni obok wielu miesięcy, mniej wygodne tryb, który kryje w sobie wiele z początkowo mylące rozrywek. Wszystko, co istnieje, aby reprezentują typowy system komputerowy które można wykorzystać w realnym świecie. Więc co to wszystko znaczy, i co faktycznie możemy z tym zrobić? Miejmy rzeczywiście rzucić okiem na program. Więc mam zamiar otworzyć rzeczywiste środowisko tutaj, która jest po prostu nasza Chrome przeglądarki, które mogą być Firefox może być Internet Explorer, lub inna przeglądarka, jak również. To pełna pokazywany tutaj na chwilę. I chcę, aby faktycznie drażnić poza to, co ten program. Warto więc spojrzeć, przez powiększanie się góry, na to, co zrobiłem, i jak się tu. Więc oto ci, dokładna same linie kodu. Więc to jest stwierdzenie, jak wspomniano wcześniej. Funkcja, która mówi cześć. Nawiasy klamrowe, na Linia linia cztery i sześć, przypuszczalnie rodzaj przydzielonych że linia go skojarzyć z istotą mojego programu. Więc rzeczywiście, to słowo kluczowe głównym, to tam, na linii trzech, można myśleć, że jako odpowiednik stanowi, że po kliknięciu zielona flaga, zablokować w Scratch. Więc to wszystko, co mamy tutaj, to kiedy Zielona flaga kliknięciu, wydrukować lub powiedzieć, Witaj świecie. Ale weźmy domyślać, teraz, na co ten pierwszy, bardziej tajemniczych linii, jest. Firma Sharp to, otwarta kątowe Uchwyt, standard I / O dot h, zamknąć kątowy wspornik. Co to jest, że może robić, zwłaszcza jeśli już zaprogramowany wcześniej w innym języku. Tak? PUBLICZNOŚCI: [niesłyszalne] David J. MALAN: Tak. Dokładnie. Więc to daje ci dostęp do biblioteka, że ​​tak powiem, funkcji. I biblioteka funkcji jest Funkcje, które ktoś inny napisał, albo niedawno czy dawno temu, tak że nie trzeba wyważać otwartych drzwi. Na przykład, my nie trzeba wiedzieć, w 2015 roku, jak napisać kod, który stawia postać na ekranie. Ktoś inny zorientowali, że się z funkcji printf tak, że można sortować abstrakcyjna poza tym, lub warstwa na szczycie jego lub jej Kod, a teraz po prostu wziąć za pewnik, że każdy program piszę można wydrukować coś na ekranie. Więc to pierwsza linia nie w pierwszym kroku obejmuje tzw pliku nagłówka dla standardowej biblioteki. Tak więc widać, język w których pracujemy obecnie miał standardową bibliotekę z dużą ilością funkcji. Printf jest jednym z nich, a że pierwsza linia kodu Oznacza dać mi dostęp do te funkcje, tak że nie muszą odkrywać to koło. Teraz przejdźmy do dołu okna i robić dokładnie to, co robiłem wcześniej. Chwilę temu, kiedy byłem zasuwa za pomocą kodu, wpisując go po raz pierwszy, I bardzo szybko wpisane, aby przywitać. Co w tym wszystkim chodziło by się domyślić? Co ja robię? Tak? Nieważne. Jest ok. Tak. PUBLICZNOŚCI: Kompilacja go. David J. MALAN: Tak. To było po prostu kompilowanie go. Dobrze? Nawet, jeśli jest to zupełnie obce do ciebie, to całkiem angielsku jak. To na pewno nie Zera i te, więc nadal należy uruchomić go przez, że tak zwane Program, kompilator, że będzie wziąć go jako wejście i produkować wyjście. A przynajmniej na razie, w to środowisko Linux, ale nie jest to warunkuje, to jest po prostu gdzie zaczniemy, generalnie wchodzić w interakcje z komputerowe systemy takie jak ten przez tak zwaną linię poleceń. Więc z miganiem szybka i klawiatury, i nie tyle myszkę, i nie tyle okien i ikon i menu, a wszystko jest tekstowa. I mimo, że czuje, najpierw Spojrzenie, być może, jak krok do tyłu, to faktycznie dużo więcej mocny i wyrazisty sposób sterować komputerem szczególnie jak ty, się, stać się bardziej wygodne od mniej. To będzie pozwalają zrobić wiele więcej rzeczy, niż tylko to, co Microsoft lub firmy Apple pozwala zrobić z ich graficzny system operacyjny. Kiedy więc naciśnij Enter, teraz, nic się nie dzieje, tym razem bo podobno Program komentarzy jest aktualne. A co to za polecenie Pobiegłem po tym? Dot slash Witam, i Hello World. Teraz rzućmy krok powrót na chwilę. Okazuje się, że aby przywitać tylko Uproszczony sposób kompilacji programu. Miejmy tylko przedstawić jeden kawałek żargonie, ale potem odejść z niego, ponieważ nie jest wszystko, co ciekawe dla dzisiejszych potrzeb. Kompilator mamy zamiar rozpocząć korzystanie nazywa Clang na języku C. I jest to program, który jest uruchamiany po prostu jak my w wierszu poleceń. I tak, jeśli chcę skompilować program, że Napisałem w pliku o nazwie Hello kropka c, dosłownie po prostu wpisz clang powitania c wchodzić. Zabawne jest to, z powodów historycznych, jeśli nie określić Nazwa programu że chcę wyjścia, jeśli nie określić nazwę pliku dla tych zer i te, bardzo dziwne Konwencja została przyjęta lat temu gdzie to było coś w rodzaju dobra odpowiedź w tym czasie, dobrze niech po prostu arbitralnie nazywamy Pierwszy program musimy skompilować kropkę się. A posiada pierwszą w alfabecie. Się, że to wyjście. Więc będziemy nazywać program domyślnie kropka się. I to jest w porządku, bo jeśli chcę uruchomić program w tym tekście opartym środowiska, po prostu wpisz Dot slash kropkę się wprowadzić. I będzie działać dokładnie tak, jak wcześniej. Zobaczmy więc, że naprawdę szybko. Tak więc, jeśli wrócę do mojego Kod źródłowy w CS50 IDE, a ja zamiast to zrobić, dzyń komentarzy łóżeczko c wejść, zawiadomienie nic się nie dzieje, ale prawie zawsze to środowisko Linux, jeśli nic złego się nie dzieje, że oznacza coś dobrego się właściwie stało. Jeśli nie widzisz błąd wiadomość, wszystko to chyba dobrze. I rzeczywiście, jeśli teraz nie dot slash kropkę z wejść, ja prowadzę sam program. Mam jeszcze program powitania od początku, bo rzeczywiście, jest to będzie o wiele ładniejszy tylko make zamiast pamiętać te zaklęcia polecenia, ale zobaczymy, jak może poprawić na to, mimo wszystko. Tak, to jest polecenie skompilować kod. Jest to polecenie, aby uruchomić skompilowany kod później. W jaki sposób można określić nazwę pliku? Dobrze niech po prostu wprowadzić jeden kawałek żargonie. Kiedy jesteś w tym środowiska na podstawie tekstu, będziesz chciał podać rzeczy nazywane argumenty wiersza poleceń. Która jest tylko fantazyjny sposób na powiedzenie, inne słowa w wierszu, że dostosować zachowanie niezależnie Program używasz. Więc specjalnie program jestem uruchomiony, wpisując nazwę szczęk, to jest program o nazwie Clang. Więc to jest lub stara szkoła odpowiednik podwójnego kliknięcia Microsoft Word lub Ikona jakiegoś programu. Ja zamiast tego po prostu wpisując jego nazwę, ale w tej wersji polecenia, Mam następnie kreska przestrzeń o, witam miejsca komentarzy dot c. Więc nawet jeśli nigdy wcześniej nie grał na tym świecie przed, tylko zgadywać, co jest kreska o cześć zrobić? Albo co to powiedzieć szczęk zrobić? Tak. PUBLICZNOŚCI: [niesłyszalne] David J. MALAN: Tak. To po prostu ustawia wyjście w pliku, być witam zamiast głupsze kropka się. I rzeczywiście, spróbujmy. Więc jeśli mam teraz zrobić, najpierw zróbmy to, r m komentarzy. To usunąć. I to powie usuń zwykły plik komentarzy, które niepotrzebnie arcane, ale to po prostu Środki chcesz usunąć plik, i wpisz y na tak. I zauważyć, jeśli były zerkając na górze w lewo, to nie znikną z tam. Chciałbym teraz zrobić clang kreska O i Mam zamiar iść do przodu i zrobić cześć, we wszystkich czapki, komentarzy dot c. Teraz, jeśli to zrobię dot ukośnik witam, czego można się spodziewać? Może to jest wielkość liter. Może to nie jest. Zobaczmy. Brak pliku lub katalogu. I możemy trochę oszukiwać patrząc na górze po lewej stronie. Co ja oczywiście zapisz program jako? Wszystko czapki komentarzy. Więc rzeczywiście, to będzie coś zmienić. Więc teraz hello world is back. Teraz to wszystko jest w porządku i dobrze, i bardzo paraliżujący umysł, do rodzaju ugrzęznąć w nich szczegóły, ale ich zrozumienie jest dobry. Wpisanie się to coraz bardziej długie zaklęcia nie będzie szczególnie zabawy, więc ludzie na świecie wymyślił inny program, kilka lat temu, zwany sprawiają, że po prostu pozwala wpisać markę, nazwa programu chcesz zrobić, i zrobić jest mądry na tym, że będzie to wyglądało w bieżący folder, alias katalogu, a jeśli masz plik nazywa komentarzy dot c, że jest to plik będzie skompilować dla Ciebie do programu o nazwie komentarzy. Więc jest to znacznie prostszy sposób robi się bardziej tajemnicze polecenia które zrobiliśmy wcześniej. I mamy wstępnie skonfigurowane CS50 IDE wiedzieć To powinno wystarczyć kreska oi wiele inne flagi, lub argumenty wiersza poleceń, że zobaczymy niebawem. Ale niech teraz faktycznie coś bardziej interesujące. Wpisując się Witaj, świecie wszystko czas nie jest wcale tak atrakcyjne. Więc pozwól mi iść do przodu i zmiany ten program i powiedzieć cześć Davida. Teraz mam zamiar iść na dół. Mam zamiar iść do przodu i robią cześć. I znowu teraz widzicie dokonać pokazuje Ci dłużej sekwencja poleceń, że jest to robi, bo my wstępnie skonfigurowane to w ten sposób, ale nie muszą martwić się teraz co robi inna niż jest kompilacją dot slash Witaj, witaj świecie. Co jest nie tak? Tak. PUBLICZNOŚCI: [niesłyszalne] David J. MALAN: Tak. Tak, noobie błąd. Zauważyłem to jest bardzo subtelna, ale gwiazdka tutaj, w zakładce po prostu oznacza, że ​​jej nie uratował, i przeglądarki i inne programy tym czasem. Tak więc kontrola s lub polecenie powinna s go zapisać. Teraz pozwól mi iść do przodu i ponownie uruchomić program. Zrekompilowany. Dobrze, więc jest to proces wieloetapowy. Z których żadna nie jest szczególnie skomplikowane ale za każdym razem możemy zmienić plik, musimy zmienić się wytworzony zer i jedynek, i kropka ukośnik komentarzy. Wow. Więc to jest bardzo rozczarowująca że po prostu drukowane na to. Zróbmy rzeczy, trochę bardziej dynamiczna, teraz. Cóż okazuje się, że podoba Scratch, C obsługuje zmienne. I okazuje się, jeśli chcesz mieć zmienną, która przechowuje, nie wiele jak my zwykle zrobił z Scratch, ale podobnie jak słowa, lub Zwrot lub nazwę, można można określić zmienną być typu string. Więc zobaczymy więcej to za chwilę, ale okazuje się, że C i wiele języków, takich jak to, mają bardzo specyficzne typy zmiennych. To nie jest tak jak algebra, gdzie można uzyskać X, Y i Z i to są po prostu zawsze numery, w języku programowania można zapisywać numery, można przechowywać poszczególne znaki, można przechowywać całe słowa, można przechowywać całe obrazy, całe pliki dźwiękowe, i tym podobne. Więc musimy określić, co rodzaj naszej zmiennej jest. I umownie Idę zadzwonić do Zmienna s po prostu dlatego, że jest zwięzłe, i s oznacza ciąg znaków. A potem idę do przechowywania wewnątrz tej zmiennej, Podobnie jak w przypadku Scratch podczas korzystania z zestawu blok, Zamierzam użyć Operator przypisania w C, które wystarczy ładnie jest równa podpisać, ale znak równości to robi. Porusza się coś z prawa do lewa strona wyrażenia. Więc co mam zrobić, aby być jasne w Linia pięć, to ja zadeklarowaniu zmiennej. Mówiłem komputer, daj mi pamięci dla zmiennej, nazywamy to s, i wiem z góry, że będę być wprowadzenie ciąg w nim. A łańcuch jest tylko Sekwencja znaków. To słowo lub frazę, lub ust, ale jest to ciąg znaków. To nie jest liczba. Co ciąg jestem będzie oddanie do tej zmiennej? Cóż, najwyraźniej cytatem koniec cytatu, "Hannah". Teraz zauważyć wzór, który jest wschodzących. Jest wyrazem lewa. Istnieje wyraz prawej ręki, oddzielone znakiem równości. I tylko zgadywać, jeśli zna jednak, z tego, co robi średnik. Jak to prawdopodobnie robi dla nas? Tak? PUBLICZNOŚCI: [niesłyszalne] David J. MALAN: Tak. To jest po prostu zakończenie linii. Dobrze? Komputery chcę być bez ogródek powiedział, dosłownie, co robić. Podobnie jak masło orzechowe i Przykładem sandwich jelly, jeśli nie podasz dokładnie to, co zamierza, to może być pozostawiona do wyroku lub błędów. Średnik oznacza, to jest to dla tego polecenia. To jest bardzo precyzyjna, a to bardzo łatwa rzecz, aby porzucić. Więc teraz ten program nie wydaje się należy zachowywać się inaczej, dopóki nie stał się bardziej dynamiczny. Więc zamiast ciężko mógł mój własny wymienić, pozwól mi położyć wartość zastępczy. I okazuje się, że i wiem, że to od po zapoznaniu się z dokumentacją, i wykorzystywane funkcję przez lata, że printf został zaprojektowany w sposób dynamiczny. Nie musisz wiedzieć wcześniej jakie słowa, które chcesz umieścić w nim. Zamiast tego można mieć zastępczy, jak procent s, co ma zamiar powiedzieć komputer, umieścić tutaj ciąg. Który ciąg chcemy tam umieścić? Czy okaże się, że pomiędzy nimi nawiasy, które pamiętają, wyznaczyć wejście do funkcji, jeśli masz przecinek listę rzeczy oddzielone tutaj, faktycznie przechodzą w wielokrotności Wejścia do funkcji. Więc tak jak jakiś Scratch bloki, nie może grał z nimi na Twoje projekty jeszcze lub w ogóle, niektóre bloki Scratch mają dwa wejścia. Dwa białe pudełka zdołasz wpisać numery lub słowa w. Tak, aby nie C posiadają funkcje, takie jak printf, że może wziąć dwa wejścia. I znowu, to przecinek jest ich rozdzielenie. Tak więc w języku angielskim, ponownie, nawet jeśli nigdy nie zaprogramowane wcześniej, przez który układ logiczny printf jest funkcja ma dwa wejścia, z których jeden to symbol zastępczy, co masz nadzieję, printf ma zamiar zrobić z tego wejścia? Zapowiada się przywitać Hannah, miejmy nadzieję. Więc to musimy go zapisać zrobić. Mam zamiar pomniejszyć. Mam zamiar wrócić tutaj i powiedzieć, aby przywitać wejść. Och. Coś jest nie tak, i rzeczywiście jest to bardzo przytłaczająca. Mam sześć linijek kodu i podobnie jak 12 linii błędów. Tak, czekam na to. Więc co tu się dzieje? Więc najlepszym zasada tutaj, zwłaszcza gdy zaczynasz, nie daj się rozpraszać rzeczy na dole. W rzeczywistości, bardzo świadomie tylko przewijać się ponieważ bardzo często, komputer jest Nie wszystko, co jasne urządzenia. Zapowiada się mylić. Jeżeli uzna to za jedną rzecz, że nie rozumie, może się pomylić inne linie kodu jako nieprawidłowe, chociaż jest to całkowicie w porządku. Więc zawsze chcą pracować góry w dół przez błędy. A prawda jest to Super Arcane w tej chwili. Błąd, wykorzystanie nierejestrowana ciąg identyfikatora. Czy to znaczy standard? Nie, miałem na myśli ciąg. A to wskazuje na, być może jest to literówka. Coś jak, sprawdzanie pisowni w sposób bardzo naukowy sposób, ale powodem tutaj, a dowiesz się tego tylko przez praktykę, jest że okazuje się, że ciąg nie istnieje w C. W rzeczywistości, C Jest to szczególnie stary język, i to bardzo niski poziom, I nie ma wiele funkcji że może wyrośli ze jeśli w rzeczywistości, zaprogramowany w Javie, jak niektórzy z was, ale można nauczyć go nowych rzeczy. I rzeczywiście, zrobiliśmy to CS50, chociaż do końca semestru, Wszystkie te kółka zostaną usunięte, co robimy w nich Pierwsze kilka tygodni Początkowo to mamy także dołączyć CS50 dot h. Który plik jest nagłówek. Więcej o tym w przyszłości. Jest to plik, który zawiera funkcje że napisałem dla ciebie. A wśród tych funkcji jest funkcje dla uzyskania wejście od użytkownika, jak struny, i cyfry i liczby rzeczywiste, i więcej. Ale ma też kilka skrótów. Definiuje Boolean jako typ danych. C nie jest prawdziwe, czy fałszywe. Ale możemy dać pojęcie prawdziwe lub fałszywe drodze tej biblioteki. A także nie mają łańcuch zbudowany w aż to tej linii. Tak więc ta linia kodu mówi kompilator, hej, Clang, wygląd w tym pliku w całości kilka kodu CS50 Napisał więc, że każdy, kto używa tego pliku może wziąć za pewnik funkcje dodali. Więc teraz pozwól mi iść do przodu i wyczyścić ekran, a jeśli ciekawi Mówię tylko kontrolę l za każdym razem, aby wyczyścić ekran, lub wpisać jasne. Mam zamiar po prostu iść do przodu i teraz Typ dokonać cześć, i wszystko jest dobrze. Wciąż wyjście arcane, ale to nie jest błędna wiadomość. Teraz, jeśli zrobić dot slash cześć, i jako bok, kropka ukośnik jest obca większości. To po prostu oznacza, środki dot katalog bieżący. Więc jeśli kiedykolwiek używałeś DOS lub Linux lub Unix możesz coś zrobić jak cd kropka kropka, gdzie kropka kropka oznacza cofać się Czas, lub udać się do tyłu, lub wyżej w katalogu. Dot oznacza po prostu spojrzeć w katalog bieżący. Chcę cześć, która jest tutaj. I rzeczywiście, teraz mówi hello Hannah. A jeśli jeszcze raz ją zmienić Maria, rekompilacji to by Witam, dot ukośnik witam, program wciąż się zmienia. Ale to nadal jest głupie programu. Jeśli chcę, aby statek ten program, lub dać go do znajomego, lub dać go do Marii czy Hannah o to chodzi, że jest w porządku. Można dostosować go do obu z nich, ale nigdy nie będzie dynamiczna. Nie można go zmienić po jego skompilowany w dół do tych zer i jedynek. Więc to, co zrobiliśmy coś mądrzejszy? Co jeśli zamiast twardego kodowania do programu imię tej osoby, Co jeśli po prostu napis na żądanie? Więc innymi słowy, pozwól mi to zrobić. Mam zamiar ponownie skompilować program. I pozwól mi przybliżyć na dole teraz. Bądź komentarzy dot ukośnik komentarzy. Teraz nic się nie dzieje. Możemy uzyskać szybki ochotnika aby coś się stało? Chodź na górę. Jak masz na imię? PANCHO: Pancho. David J. MALAN: Pacho? Chodź na górę. Gdy pojawi się tutaj, to jest Będzie bardzo rozczarowująca, ale to jest bardziej interesujące ode mnie wpisanie go. Jeśli chcesz iść do przodu i wpisz Nazwa, zrobiłem ten program dla Ciebie. Wystarczy wpisać swoje imię i nazwisko. Wchodzić. Wspaniały. Dobrze, dziękuję bardzo. PANCHO: Dziękuję bardzo. David J. MALAN: OK. [APPLAUSE] To był bardzo miły. Proszę bardzo. Co zrobiliśmy? Tak więc na koniec, co najmniej wykonany program dynamiczny. Teraz to jeszcze na pewno od projektowania rozczarowująca, ale wreszcie mamy możliwość teraz napisać kod z góry, dużo jak autorzy printf, a następnie dynamicznie dostosowanie opiera się na wejściu jesteśmy podał, albo przez programistę, lub przez człowieka, który faktycznie interakcji z programem. Więc faktycznie spróbuj teraz zrobić kilka innych konstrukcji i sprawdzić, czy nie możemy programów się bardziej wyrafinowane. Więc idź naprzód i zamiast Pisząc ten od podstaw, Mam zamiar iść do dzisiejszych Kod źródłowy, a wszystko to jest dostępny na kurs na strona internetowa i można przeciągnąć i upuścić go do własnego środowiska się w piątek, gdy problemu Zestaw 1 daje Ci instrukcje, lub mogłeś zrobić to w wierszu poleceń jako dobrze, ale bardziej przyjść p set 1. Zobaczmy, co jest w tym programie tutaj nazywa, żmija kropka c. Teraz już skomentował to, ale co nowego? Na pierwszy rzut oka, co linia kod jest absolutnie nowa? Prawdopodobnie nie fundamentalnie nieznane teraz. PUBLICZNOŚCI: [niesłyszalne] David J. MALAN: Tak, tak, int x równa się n. Nigdy nie widziałem nic z tego wcześniej, ale int jest prawdopodobnie symbol, jaki rodzaj zmienna [? z?] całkowitej. Więc int do liczby całkowitej. To się po prostu więcej zwięzłe. x jest tylko arbitralne. x i y i z są wciąż dość rozsądne dla liczb, ale generalnie użyjemy słowa raz nasze programy uzyskać bardziej złożone. Pobierz int, oczywiście, podobnie jak pobiera ciąg znaków, prawdopodobnie będzie się int od użytkownika, a następnie jedziemy do zrobić to samo z y. I jak widać, chociaż Ostatnia linia, 24, wygląda bardziej złożone, to będzie powiedzieć, sumę tę i że jest to inna rzecz. I nota procent i Prawdopodobnie oznacza to, co? Jaką rolę procent I podobno służyć? To tylko symbole zastępcze. Dobrze? Procent ów był dla łańcucha, procent i jest liczbą całkowitą. Nie będzie to procent f do wartości zmiennoprzecinkowej, która Jest to tylko numer z przecinkiem. Innymi słowy, liczba rzeczywista. Więc faktycznie kompilacji tego zaprogramować naprawdę szybko i robią żmija. Ups. Dobra okazja. Więc tutaj odnotować, przez cały ten czas mój użytkownika nazwa tego konta jharvard. Jestem w CS50 IDE, aka IDE50. A teraz na niebiesko tutaj, jest wzmianka, ale ze środowiska, z których jestem. I rzeczywiście, jeśli powiększenie do góry tu zauważyć, że mam IDE50 i widzę to słowo, jeśli ciebie rodzaj obróć głowę w bok, do pracy. W skrócie, fakt, że Widzę tyldy ukośnik do pracy Oznacza to, że w niniejszym tekście Środowisko polecenia oparte, Jestem w równowartości tekstu Graficzny folderu tutaj. Więc kiedy robię dot ukośnik żmija, to mówiąc, nie ma mocy aby docelowy przystanek adder. Nie wiem, co to znaczy, ale to jest złe dla jakiegoś powodu. Brak pliku lub katalogu jest jeszcze bardziej wyraźny. Gdzie to jest to? Na podstawie których kliknąłem aby otworzyć plik wcześniej. Gdzie to może być? To chyba w źródła jeden w, w środę, i widzę to, rzeczywiście, jeśli otworzę, że się. Jest żmija kropka c, ale w To środowisko oparte na tekście, znowu, muszę być bardzo wyraźne. Jeśli chcę zmienić katalogi do źródło jeden Środa, muszę wpisać, cd źródłem przestrzeni jednego Środa wejść, a teraz moje zachęty zmiany daj mi wizualną wskazówkę, że Jestem zresztą gdzie indziej w moim otoczeniu, ale teraz mogę robią żmija, wydaje się do pracy, Dot slash żmija, daj mi liczbę całkowitą. Jeden. Dwa. Suma z jednym i dwoma trzy. Ale jeśli nie współpracują, zobaczymy co się int robi. Daj mi liczbę całkowitą. Nie. Spróbuj ponownie. OK. Dobrze. 50. 50. W porządku. Więc w końcu współpracuje. I to niektóre z funkcji, które te funkcje może mają wbudowane dla Ciebie. Więc wewnątrz realizacji z int, co się programowania budowy z ostatniego tygodnia to prawdopodobnie w nie zmuszać to zachowanie ponownej próby, ponownie, ponownie? Tak, nie ma chyba pewnego rodzaju pętli. To będzie wyglądać składniowo różni się od bloków na zarysowania, ale to jest rzeczywiście co znajduje się wewnątrz pliku. A za kilka tygodni będziesz spojrzy w bibliotece CS50 co do tego, co jest w środku, ale nie pętla nakładania dokładnie to. Pobawmy się głupiutką Gra tutaj z tego pliku. Stan zerowy punkt c. Jesteśmy po prostu się do ogólnie rozpocznie odliczanie od zera. A ja wciąż przewijanie przeszłości niektóre rzeczy na wierzchu. W niebiesko tutaj, wydzielona ze wszystkim z tych gwiazd i ukośniki, tych z Was, którzy zaprogramować wcześniej, co to jest? Dlaczego zachowujemy omijając nad nim? Co? PUBLICZNOŚCI: To jest komentarz. David J. MALAN: Tak. To tylko komentarz. To jest komentarz dla ludzi przeczytać, że w naszym przypadku, mówi nam, co nazwę pliku jest, kto to napisał, a to, co robi, tak, że nie trzeba przeczytać kodu wiedzieć, co ten plik chodzi. To tylko opis, ale Funkcjonalnie jest to bez znaczenia. I mogę nawet usunąć go z mój plik i nie ma wpływu. Te soczyste linie są te Pierwsze dwa tu i teraz. int main nieważne jest odpowiednikiem naszego, gdy zielona flaga kliknięciu, więc mamy zamiar opuścić to być na dzisiaj, i wrócimy, W końcu, co int i nieważne jest, ale teraz, zauważyć, co zrobiłem tu też można również, jeśli masz w kolejce komentarz, jeśli masz Myśl chcesz podzielić o określonej linii kodu, Konwencja w C jest zrobić ukośnik slash, a następnie kilka zwięzłe słowa, Nie pełne zdanie, generalnie nie paragraf, Wyjaśnia, że ​​tylko ci, lub zwrot TF lub innych czytelników lub kolegów, co kod robi. Tak więc, zamiast patrzeć w tym i wnioskować z linii dziewięć i 10, co jest to robi, zgodnie ośmiu Ja po prostu dać komentarz zwrócić się do użytkownika liczbę całkowitą, to ja nie myśleć zbyt trudne o czym linie dziewięć i 10 są. Wiem tylko, że to, co wspólnie robią. W jaki sposób? Cóż, tutaj jest szybki. Oto się z int. Oraz w oparciu o poprzednie zachowania, wydaje się, get int jest wystarczająco inteligentny, aby upewnić się, że człowiek współpracuje i daje go liczbą całkowitą. Ale teraz widzimy to. A to przypomina Scratch. Ja twierdzę, że jestem Analizując dane wejściowe użytkownika, ale nieco nieprecyzyjnie. I to podobno w C jest jak wyrażamy if else, oddział, widelec w drodze, ale powiedzieć trochę nieprecyzyjnie. Co to jest błąd w tym programie? O dalsze kopie? Tak. PUBLICZNOŚCI: [niesłyszalne] do zera. David J. MALAN: Tak. Więc jeśli mogę wpisać zera, rozważmy dokładnie to sprawa przypadku, lub rogu, Jeśli będziesz. Więc jeśli mogę wpisać zera, co z Bloki ma najwyraźniej złapał go? If lub innego? Else, a to się mówi, wybrałaś liczbę ujemną. I rzeczywiście, zero nie ma być pozytywne lub negatywne, i tak, że nie będzie mylnie. To byłby błąd. Więc jak można rozwiązać ten problem? Ktoś, kto nigdy nie zaprogramowane wcześniej? Czy chcesz-- PUBLICZNOŚCI: [niesłyszalne] David J. MALAN: Wycofywanie? PUBLICZNOŚCI: [niesłyszalne] David J. MALAN: Och, masz? Ktoś, kto nigdy nie zaprogramowane wcześniej. Chcesz spróbować swoich sił w tego, w czerwonej koszulce? Chodź na górę. O tak, chodź na górę, jeśli nie masz nic przeciwko. Więc nigdy nie zaprogramowany przed, jak masz na imię? LAUREN: Lauren. David J. MALAN: Laura, wszystko w porządku. Tak więc naprawić ten błąd dla nas. Nie widziałem C, przypuszczalnie, i prawdopodobnie żaden inny język. Tak więc rozwiązać ten program dla nas. Miło cię poznać. Nie ma ciśnienia. LAUREN: Tak. David J. MALAN Ale znowu, jeżeli hazard pójdzie zgodnie z planem, wynos tutaj będzie być, po prostu ponownie, aby uruchomić dostrzegać wzorce i wywnioskować z istniejącej składni jak inaczej można wyrazić samodzielnie, gra słów, w celu uchwycić jakiś dodatkowy scenariusz. Więc mówimy else if. printf, dobra. I zauważyć z CS50 IDE i frankly-- IDE oznacza Integrated Środowisko programistyczne. To tylko fantazyjny sposób na powiedzenie to program, który pomoże Ci program. To ma przyjazny dla użytkownika rzeczy jak po wpisaniu jednego nawiasu, automatycznie daje drugiej. Domniemanie jest, że jesteś w końcu będzie chciał wpisać, że i to też robi to z cytatami. Więc chciałbym linii 23. 99% drogi tam. Ktoś chce kurant z końcówką? Słyszałem średnik z widowni. Dobry. Tak, że kończy to. A teraz, mam tylko trochę konsternacja z linii 21. Jak chcemy to wyrazić? Jakie pytanie czy chcemy zapytać, jak myślisz? Więc wcześniej prosiliśmy na pytanie, jeśli n jest większe od zera, to zrobić. Innego, zrobić. Musimy więc wybrać zadać pytanie tutaj. PUBLICZNOŚCI: [niesłyszalne] David J. MALAN: Dobra. Tak więc, gdy n jest równe zero. Doskonałe. Warto więc zatrzymać się tutaj. Dziękuję bardzo za koniecznosc tego. Podam trochę zasłużony Piłka stres, być może nie. Tak więc jesteśmy prawie na miejscu. W rzeczywistości, Laura, jeśli nie umysł, pozwól mi zrobić jeden dostosować tutaj, po prostu być spójne, nawet co widzieliśmy w Scratch, co chcę zrobić z liniami 21 i 24, po prostu ponownie oparte o tym, jak zrobiliśmy to w Scratch, być może? PUBLICZNOŚCI: Ruszaj się. David J. MALAN: Tak, przesuń go w górę. Tak więc stan innego, trzeciego lub czwarty lub piąty, a końcowy gałęzi, rzeczywiście powinien przyjść później, i to tylko umownie, tylko dlatego, że jeśli będzie. Więc trzeba wprowadzać ten uszczypnąć. I muszę umieścić moje nawias klamrowy tutaj. A teraz, to program skompilować. Jesteśmy tak blisko, ale nie bardzo, bardzo subtelny błąd. Zobaczmy co się stanie. Po pierwsze, pozwól mi iść do przodu i pomniejszyć. Mam zamiar iść do przodu i make stan zerowy. Och, skłamałem. Teraz kompilator rzeczywiście bardzo inteligentny. A ja naprawdę nie rozumiem to komunikat o błędzie. Z wykorzystaniem wyniku cesji w stanie, bez nawiasów jest najwyraźniej źle. Ale co to znaczy? Cóż znowu, szukając wzorów w kodzie, które widzieliśmy wcześniej, Linia 17, co jest rzeczywiście robi, mimo, że Laura ma lekko w inny sposób? Tak. PUBLICZNOŚCI: [niesłyszalne] David J. MALAN: Tak. Więc pamiętaj, znak równości, najwyraźniej jak już ją wcześniej, nie jest równa. Jego zadanie, od prawej do lewej. Tak więc linia 17 w momencie Jest to stan, a to wykonywania kodu w nawiasach, ale gdy kod wykonywany, co dzieje się na wartość zera? Co się dzieje z wartością n? Staje zero. Tak więc, jeśli n staje się zerem, i znowu, jak w ostatnim tygodniu, na ogół mówią, że do zera jest fałszywe, a jedna jest prawdziwa, i tak jest jeden i nie jest zerem. Tak prawdziwe i fałszywe, jeden i 0. Jeśli n od linii 17 został biorąc pod uwagę wartość 0, jest zerem prawda? Nie. Z definicji, zero jest fałszywe. To konwencja jesteśmy zamiar trzymać się naprzód. Więc będą linie 18, 19 i 20 zawsze stosować się teraz, logicznie? Nie mogą. Zapytaliśmy więc pytanie ale nie dość precyzyjnie, i nie wiem, to chyba widziałem go, roztwór w C jest, gdy chcesz wyrazić równość, mówisz sobie równi równa. Więc znak równości był już wykorzystany w drodze cesji, od prawej do lewej. Równa jest równa środki równe. A jeśli naprawdę chcesz, żeby Twój umysł jest wygięta, w JavaScript i PHP, jest równa równa równych, które oznacza zupełnie coś innego, ale my się do tego niebawem. Tak więc jest to prosty fix, ale uświadomić sobie, bardzo proste, aby ten błąd, i zastanawiam się, i walka w minutach, jeśli nie za godzinę, Dlaczego mój kod nie wykonanie jak zamierzam? To dlatego, że nie powiedziałeś to właśnie to, co masz na myśli. Tak, że był prawie doskonały, i to było wspaniałe że natknęliśmy się na te dwa małe rzeczy, bo teraz, gdybyśmy je naprawić, i robią Condition Zero Dot slash stan zero, Chciałbym liczbę całkowitą proszę. Zobaczmy. Nie. To zmusi mnie do tego. Tak więc 42. Wybrałem liczbę dodatnią. Więc teraz jak mam udowodnić, ten program jest prawidłowy? Jeśli jesteś matematykiem, nie można naprawdę udowodnić metodą prób i błędów, dobrze? Można nie tylko dowód przez Przykładem, ale przynajmniej jako programista nie jesteśmy Spróbuję udowodnić teraz że jest to faktycznie poprawne, ale prawdopodobnie powinien przetestować kilka reprezentatywnych przypadków. Przetestowałem 42. Mogłem przetestować 43. Mogłem przetestować 44. Test 45. Dobrze? Ale mogę to naprawdę długi czas zrobić. Co byłoby trochę więcej interesujących przypadków, aby spróbować? PUBLICZNOŚCI: [niesłyszalne] do zera. David J. MALAN: Czyli zero. Na pewno. I dobrze, że mamy to w ten czas, dzięki nowym kodem Lauren. Co znajduje się kolejna dobra sprawa, aby spróbować? PUBLICZNOŚCI: negatywny. David J. MALAN: negatywny, a może coś trochę większe, tak może być ujemna 42, a ogólnie, gdy testując swoje programy do przodu, jesteś będzie chciał myśleć do siebie, jak to, co są podstawowymi różne przypadki. I śmiem twierdzić, że negatywny przypadek, pozytywna sprawa, a sprawa zera prawie zaokrągla je na zewnątrz. Spójrzmy na wariancie tego jednak. Warunki jeden. Jest to właściwe rozwiązanie tutaj, tak, że zobaczysz dwa i on-line, jeśli idziesz przez solucje, będzie na ogół zwiększyć te stopniowo aż uzyskać dokładnie odpowiednie podejście. Co zrobić, jeśli chcemy zapytać dwa pytania na raz? Pozwól mi otworzyć to się zamiast. Nie Przełącznik względów zobaczymy inny czas. Co nowego składniowo tutaj? Jestem obecnie na grze gdzie komputer mówi mi, daj mi liczbę całkowitą od jednego do 10, a potem osądzam wejście użytkownika. W języku angielskim, na podstawie kod można zobaczyć tutaj na niebiesko, co robi ten program? PUBLICZNOŚCI: [niesłyszalne] wybrał duża lub mała liczba. David J. MALAN: Tak. To tylko orzekając, czy Wziąłem duży lub nośnika, lub niewielka liczba w oparciu o bardzo dowolna definicja małych, średnich i duże tutaj, ale uwaga składnia to nowy jest taki. Nie ma mniej niż int lub równe znak lub większe niż lub równe do podpisania gdzie jeden jest nad innymi, że Ciebie może wyrazić jak Microsoft Word. Więc w języku programowania można zazwyczaj po prostu zrobić dwa znaki, jedna po drugiej. A co to prawdopodobnie stanowią, ampersand znaku handlowego. PUBLICZNOŚCI: [niesłyszalne] David J. MALAN: Tak. Oznacza to tylko, i dlatego, że Okazuje się, że autorzy C używane jednego znaku handlowego, które można by pomyśleć, byłby idealny do pojęcia i jest już wykorzystane, tak ampersand ampersand rzeczywiście oddaje sprawę, że rzeczywiście chcesz. Więc teraz natknąć dwóch rzeczy. Pozwólcie mi iść do przodu i otworzyć jedną. Coś, co jest trochę niepokojące. Nieścisłości dot c. Pozwolę sobie przedstawić dwie rzeczy. Jeden, zawiadomienie, że możemy zrobić matematyka, tak jak wcześniej, kiedy zrobiliśmy plus dwa numery, X i Y. Co to jest ten program najwyraźniej robi? I już nie skomentował tego jeszcze, a ja już wprowadzone procent f, ale szybko powiedział wcześniej procent f oznacza zmiennoprzecinkowe Wartość, która jest liczbą rzeczywistą. Coś z przecinku Temperatura, która jest liczbą całkowitą. Co sądzisz ten program jest próbuje mi pokazać na ekranie? Tak? PUBLICZNOŚCI: W wyniku jednej na 10. David J. MALAN: Tak. Co znajduje się wynik jednego dzieli się przez 10. Racja, bo wszyscy z was ma pewnie dorastali wiedząc, że jedna na 10 jest co? Tak, to tylko 1/10 lub 0,1. Dobrze? Zobaczmy więc, co to właściwie jest. Więc pozwól mi iść do przodu i zapisać to. Puść mnie tutaj. Bądź nieścisłości dot ukośnik nieścisłości, a informacja, zbyt, w środowisku Linux, nie musisz trzeba wpisywać się niedokładności i podjąć cały dzień. Generalnie, jeśli trafisz Tab, to Twoje myśli będą skończyć dla ciebie, w oparciu o słowa, które dostępne w bieżącym katalogu. OK. Tak, masz rację. Jedna dzieli się przez 10 jest w rzeczywistości 0,1. Ale jestem trochę ciekawa. I okazuje się, printf obsługuje niektórych funkcji przy czym można podać więcej niż domyślną liczbę miejsc po przecinku. Więc jeśli chcę zobaczyć 10 po przecinku Punkty można zrobić, procent, symbolu zastępczego, kropka 10 za, daj mi 10 punktów po przecinku, a potem jeszcze zmiennoprzecinkowych wartości, a na marginesie, co to jest odwrotny ukośnik n najwyraźniej trzymamy za pomocą? Okazuje się, że jest to symbol nowej linii. Jest to bardzo wyraźne sposób mówić do komputera, przesunąć kursor do następnego Linia po gotowe. I zobaczymy, co się stanie, kiedy tego nie robię. Pozwól mi skompilować dokonać niedokładności. Teraz dot slash niedokładności. OK. Mimo to prawo. Jeden dzieli się przez 10. Teraz jestem coraz mało ciekawy, chociaż. Co zrobić, jeśli patrzę 20 po przecinku zwraca uwagę, skompilować, powtórka, i tak na marginesie dla prędkość, można także użyć Twój górę iw dół strzałek, aby przewijanie historii, więc nie musisz zachować przepisywanie tych poleceń, wpisz. Huh. Nie dowiedziałem się, że w szkole podstawowej. W porządku, więc niech mnie zobacz jak 29 miejsc na zewnątrz. Może to tylko fuks. Może mój komputer zachowuje się dziwnie. To nie jest coś, prawda? To się robi coś deterministyczny. Tak aby niedokładności. OK, to się zawiedli. Więc co się dzieje? Więc najwyraźniej twoja Nauczyciel został leżąc ci cały ten czas dla Powody, które zobaczymy niedługo. Ale niech skończy z innym programem. To jest trochę programy ktoś napisał kilka lat temu, i to jest w rzeczywistości częścią konkursu. Nikt właściwie pisze kod tak, a jeśli nie, to jest stylistycznie problem. Ale ludzie robią to dla praw do chwalenia się. Aby napisać najbardziej mylące Program patrząc, że jednak robi coś ciekawego. I uwaga Myślałem, że zostawi na dzisiaj, przed Colton odgrywa nas tutaj, jest, aby uruchomić ten program, które, nawet w tylko przy użyciu C w tym tekstowe środowiska, daje nam to. Cholera. [Śmiech] Czekaj. [Niesłyszalne] c kreska l m. Będziesz zobaczyć magiczne Zaklęcie, które zobaczymy niedługo. [Niesłyszalne] W porządku. I teraz można nawet robić takie rzeczy. To jest. Dla CS50 my, zobaczymy się w piątek. [MUZYKI] [APPLAUSE]