ROB BOWDEN: jest bardziej komfortowe sekcji, ale to nie znaczy, że jeśli czujesz, że nie jesteś bardziej komfortowe nie dowiesz się tutaj rzeczy. Więc zaczynajmy. Czy masz slajdy będzie prawo do rzeczy. Mam zamiar po prostu wziąć go teraz? Przełączanie laptopów. ALLISON: Nie chcesz, aby przedstawić się, Rob? ROB BOWDEN: Och, Rob. To jest mój piąty rok TF-ing CS50. GABRIEL: Jestem Gabriel. Jestem głowa TF z CS50. Byłem w zeszłym roku i TF w tym roku. ALLISON: Jestem Alison, i to to mój drugi rok TF-ing CS50. ROB BOWDEN: W porządku, więc to coś po lewej stronie, miejmy nadzieję, że widziałem go wcześniej. Jeśli nie z powodu Ciebie pobrać go na własne oczy, trzeba było widzieć go w wykładzie. Jest to więc urządzenie CS50, a on zrobił się nieco od jej opis w wykładzie. Ale w zasadzie to tylko ty prowadzisz eksploatacji System w ramach swojej działalności operacyjnej System tak, że możemy dać ci programy bez konieczności się martwić, o to będzie działać w systemach Windows i Mac, czy niektórzy z was są już z Linux, Linux. To tylko ma być wspólne granie pola, więc każdy ma dokładnie taki sam środowiska. Więc jeśli nie ma pobrać to już, należy go ściągnąć, bo jesteś będzie potrzebował go do zestawu problemów. I to dwa gigabajt pobrać, więc może to chwilę potrwać. Na Harvardzie będzie to go szybko. Więc CS50 urządzenie. Teraz na początku, będziemy mówić o tylko kilka linii poleceń rzeczy, a więc przez to, mam na myśli pracy w tym małym środowisku tutaj. I zauważyć wszystkie rzeczy Mówię tu teraz idą do pracy, jeśli jesteś wewnątrz Terminal wewnątrz urządzenia, lub jeśli jesteś wewnątrz gedit okno terminalu wewnątrz urządzenia. Więc te środowiska są identyczne. Ale mam zamiar iść trzecią drogą. A tu to zauważysz trochę tu adres IP. Więc nie musisz się to zrobić, ale to IP address-- teraz jeśli ja-- wyjątkiem to zablokowane przez to coś. OK, tak, że adres IP powyżej w terminalu here-- więc zacisk na tutaj jest terminal w komputerze Mac. Tak więc to nie jest w żaden sposób aktualnie związane z urządzeniem w ogóle. A jeśli jesteś na Windows, to jesteś będzie trzeba coś ściągnąć specjalnie do tego celu, w szczególności ludzie mają tendencję użyć Putty, P-U-T T-Y. Więc co mam zamiar zrobić, to rodzaj SSH, a potem, że adres IP. Cóż, jharvard pod tym adresem IP. Więc 192.168.24.220. Ta przerażająca wiadomość, zignoruj ​​go. Wystarczy wpisać tak. Jest CS50 w pudełku. Prosi o podanie hasła. I tak w wielu tych kontekstach gdzie prosi o hasło, [niesłyszalne]. Mamy wiele pytań gdzie mówi, że to nie jest rzeczywiście wpisując. Nie pokazać znaków hasło podczas wpisywania, jeśli cokolwiek, dla funkcji bezpieczeństwa, ponieważ jeśli ktoś patrząc przez ramię i widzą star star star, potem wiedzieć, że hasło to cztery znaki. Więc pomysł jest zapyta o hasło, typ. To nie będzie pokazać Ci bohaterowie, ale to faktycznie przyjmując je. W tym przypadku, w dowolnym momencie kiedykolwiek zobaczysz monit o podanie hasła do czynienia z urządzeniem, Hasło będzie karmazynowy. Więc Crimson. A teraz tutaj, w środku tego Okno to jest w moim Mac, Jestem w zasadzie o dokładnie taki sam widok jak wewnątrz terminalu w urządzeniu. Więc nie musisz tego robić. Możesz zrobić wszystko, co ma wewnątrz urządzenia. I prawie nigdy nie robić coś w urządzeniu. I prawie zawsze minimalizować, że i teraz Jestem SSH działa w urządzeniu. Jeśli coś, jeśli ty wolniejszy komputer, można zauważyć różnicę. Robię to, bo ja wolę to okno terminala. Ma kilka funkcji, takich jak Mogę podzielić okno, i teraz mogę w SSH przez urządzenie. Mam dwa SSH dzieje się naraz. Jeśli komputer jest szczególnie powolny i pracujesz w urządzeniu, i zdajesz sobie sprawę, jest to naprawdę laggy, cokolwiek. Zazwyczaj znacznie szybciej jeśli jesteś SSH-ed w. Ale w przeciwnym razie można pracować w obu kierunkach. Publiczność: Co SSH oznacza? ROB BOWDEN: Bezpieczne muszle, coś w tym stylu? Co SSH oznacza? GABRIEL: Secure Shell. ALLISON: To jest po prostu bezpieczna powłoka. ROB BOWDEN: Secure Shell. Jest to protokół, który you-- to bezpieczny protokół, więc szyfrowane. Ludzie nie mogą podsłuchiwać sieć i zobacz, co mówisz do niczego jesteś SSH-ed do. I rzeczywiście, w dawnych dni CS50, więc w 2009 kiedy byłem studentem pierwszego roku, tak, że pracowałeś na zbiorach problemowych CS50, ty SSH-ed do jakiegoś serwera że daliśmy dostęp do, i pracował tam. Więc nie ma to Urządzenie graficzne. Nie masz gedit. Nie wszystkie te rzeczy, które można wizualnie wskaż i kliknij. Trzeba było pracować w tym interfejsie. Wolę pracować w ten interfejs. Tak więc część z tego, co mamy zamiar się będzie na teraz to banda Polecenia, które powinny rozpocząć do zapoznania się z jak iść na kurs. I szczerze mówiąc, po przyzwyczaić się do nich, to jest tak dużo szybciej pracować w tym środowisku niż jest do pracy z wizjera, przeciąganie i klikając rzeczy. Więc jesteśmy. Teraz tylko SSH-ed w, i tak Domyślna miejscowość-- Cię widziałem niektóre z tych poleceń w klasie, ale pójdziemy na wszystkie z nich ponownie. Domyślna lokalizacja jesteśmy Katalog jest w domu. I katalog, po prostu inne słowo na folderze. Więc jesteśmy w katalogu domowym. Wpisz ls, listę plików w tym katalogu. Widocznie stworzyłem blah.c wcześniej. Więc mamy katalogu pulpitu. Można zauważyć, podświetlanie składni? Światło niebieskie podświetlenie wskazuje Katalog i prosty biały wskazuje tylko zwykły plik. Więc nie będą inne kolory widoczne. Plik wykonywalny prawdopodobnie będzie być zielone lub coś w tym stylu. OK, więc jesteśmy w katalogu domowym. Teraz, jeśli chcę, aby przejść do innego katalog, cd jest polecenie chcę. Więc zmiana katalogu, a następnie podać nazwę katalogu że chcesz iść do. Więc tutaj mamy cztery opcje. Mogę iść do pobrania, a teraz widzimy, tutaj zaktualizowała ten nawias powiedzieć, że jestem w ~ / downloads. Więc co jest tyldy? Jest to skrót od Twój katalog domowy. Więc prawie wszystko, co ma robić być w stosunku do swojego katalogu domowego, i pwd jest tylko polecenie Używam raz w roku, po prostu drukuje bieżący katalog. I tak można zobaczyć tutaj ~ / Pliki do pobrania naprawdę rozwiązuje do / home / jharvard / pliki do pobrania. Tak / home / jharvard jest mój katalog domowy. Więc możemy cd kropka kropka. Teraz kropka kropka jest specjalny katalog, który odnosi się zawsze do jednego katalogu w górę. Więc jeśli jestem w ~ / pliki do pobrania, a następnie cd kropką kropka przyniesie mi tyldy. Co myślimy cd kropka kropka przyniesie mi teraz? To będzie doprowadzić mnie do / home. Więc tyldy przez druku katalogu roboczego, Jestem w obecnie / home / jharvard. jeden katalog się z tym, teraz mówi tutaj / home. Teraz cd kropka kropka. Teraz jestem w katalogu głównym, i nie można zrobić to jeszcze raz. Musisz po prostu pozostać w katalog zawsze korzeń. Katalog główny ma całą masę rzeczy, które, jeśli chcesz, aby przyjrzeć się można. Na przykład, jeśli pójdę w pojemniku, który zawiera wszystkie te pliki binarne, takie jak ls, i CD, a wszystkie te rzeczy. Więc te polecenia muszą istnieć gdzieś w systemie i to jest w katalogu / bin. Ale prawie wszystko można zrobić, to będzie z katalogu domowego. I cd bez żadnych argumentów w ogóle, można powiedzieć, cd ~, nie trzeba. cd przyniesie Państwu z powrotem do swojego katalogu domowego. Jeden ostatni. cd - przyniesie powrót do ostatni katalog, że jesteś w. Więc po prostu cd'd dwa razy z rzędu, więc moje ostatnia katalog był katalogiem. Jeśli pójdę do slash bin, a teraz chodźmy się i do użytkownika. Akcji użytkownika. Chodźmy do udziału użytkownika. Teraz jestem już w akcji użytkownika. cd - z powrotem w pojemniku. Więc to dostaje szczególnie przydatne kiedy have-- i będzie to włączyć. Tak akcję użytkownika, z powrotem bin, bin zakładowego. Więc to dostaje przydatne. Może znaleźć się o wiele, wiele, wiele zagnieżdżonych katalogów. I chcesz zrobić coś bardzo szybko w górnej katalogu. Idziesz do tego katalogu, aby zmiany i takie tam, a teraz chcesz iść tam, gdzie jesteś. cd -. Zawsze jestem sfrustrowany kiedy zdarza mi się iść I do tego katalogu chciał do pracy w. Zawsze się sfrustrowany kiedy nie to w dwóch etapach zamiast jednego kroku bo to oznacza, że ​​cd - będzie wprowadzić w tym miejscu pośrednim zamiast, gdzie chcę iść. Widzimy więc, wszystkie pliki na liście. Wiemy, jak się poruszać tak daleko. Teraz porozmawiajmy o edycji plików. Więc w tym oczywiście, że jesteś prawie zawsze oczekuje się użyć gedit. Jeśli chcesz, możesz zrobić następny krok i zacznij się uczyć tekstu wiersza poleceń redaktor. Tak więc istnieją różne opcje. I te, które są prawdopodobnie będzie odpowiednie dla Ciebie, mamy Nano Vim i Emacs. Więc Nano jest początkujący linii poleceń edytora tekstu. Więc Nano chodźmy na blah.c stworzyłem wcześniej. To jest po prostu standard ten plik C. I widzisz całą masę rzeczy dzieje się w dolnej części ekranu i najwyraźniej blah.c zawiera ten kod C. Tak więc w tym konkretnym edytorze to, co mówi na bottom-- teraz ten daszek symbolem, widzimy to ^ G ^ X, ^ O. Tak, że w prawie wszystkich Kontekst, który widzisz, można zobaczyć w ten symbol daszka innych miejsc online, na przepełnienie stosu, coś w tym stylu. Prawie zawsze odnosi się do kontrolowania. Tak, aby wyjść chcę zrobić Kontrola X. Kontrola X wychodzi. I mogę korzystać strzałkę klucze do poruszania się. Zauważ, że nie można wskazać i kliknąć łatwo. Musisz użyć strzałek klucze do poruszania się. Nie może być ustawienie wskaż i kliknij. Ale zróbmy pewne zmiany. Teraz sterowania X iść wyjście. To będzie powiedzieć bufor zapisu zmodyfikowanego. Teraz szybka, y na tak, n na nie. Kontrola C anulować. Powiem tylko tak. Nazwę pliku do zapisu. Domyślnie jest to plik że już jest. Naciśnij Enter. OK. Teraz już tylko edytować ten plik, zapisane to, i to zostanie zmienione. Tak jest najłatwiej Nano edytor tekstu przyzwyczaić. Alternatywy są Vim i Emacs. Są edytory tekstu wyższy poziom że mają bardzo stromą krzywą uczenia. Więc moje osobiste preferencje jest Vim. I ma wiele możliwości. A gdy się przyzwyczaić do niego, nigdy nie chcę iść do każdego innego edytor tekstu, bo was po prostu tak wiele rzeczy, dostępne w nich, ale to trwa naprawdę długo się uczyć. Więc może po prostu chcesz, aby wymusić się teraz, aby przyzwyczaić się do tego, ale chciałbym powiedzieć, że warto. Ale trudno. I wtedy Emacs. Ja zawsze walczą w Emacs, ponieważ Wiem, jak to zrobić absolutnie nic. Najwyraźniej Emacs nie jest domyślnie zainstalowane w urządzeniu. Prawdopodobnie dodać, że jako instalacji domyślnych. Gdy nauczysz się jednego z Vim lub Emacs, nie nie powód, aby kiedykolwiek nauczyć innych, ale to zupełnie inny styl. OK, więc to edycji plików tekstowych. PUBLICZNOŚCI: Jeśli utknęli w Vima teraz, w jaki sposób we-- ROB BOWDEN: Jest wiele trybów w vim, i istnieje cała tutoriale dotyczące nauki Vima. Więc, jeśli zdarzy ci się być w trybie wstawiania w porządku wpisz tekst, który można który wchodzi na różne sposoby ale i to, w jaki sposób dostać się do trybu wstawiania. Lub wyjść z jakieś specjalne Tryb, że jesteś, po prostu uciec. I po prostu uciec, aby bash z jakichkolwiek zagnieżdżonych trybów twój w. Po prostu OK, teraz jestem z powrotem w normalnym trybie. I tak, w trybie normalnym, jelita grubego. Widzisz, że pojawiają się na dole. A następnie q. Więc q wyjdzie jeśli już dokonane zmiany, które ja-- mieć zrobiłem zmiany? Zrobiłem zmiany najwyraźniej. Więc jeśli już dokonała zmian, to będziesz powiedzieć można umieścić wykrzyknik. Mam zamiar nazwać huk. Tak więc można postawić zakaz do tylko rzucić, nie robiąc nic, lub wq okrężnicy uratuje i wychodzi. Tak w ogóle to w pisać. Więc zapisać plik. Mogę pisać i zamknąć. Albo może masz po prostu qx slam, q huk tuż się stamtąd wydostać, niezależnie o wszelkich zmianach, które zostały wykonane. Dobrze, więc teraz niech go-- możemy tworzyć pliki. Zacznijmy usuwanie plików. A ja po prostu rzucić w jednym szybkie nowe polecenie, dotyk. Więc dotykać foo. Dotykowy pasek. Dotknij baz. Gdybym ls, teraz widzimy, że istnieją te pliki. Oni są zupełnie puste. Dotykowy jest po prostu tak łatwo sposób jeden, [niesłyszalne]. Dwa, tylko do stanu technicznego to, że aktualizuje znaczniki czasu. Więc każdy plik, który ma stworzyć datownik z nim związane. Tak powstał na baz 14 września na 16:21. Jest teraz 16:22, więc jeśli I znowu dotknąć baz, mamy zobaczyć, że był najbardziej baz Ostatnio modyfikowane w 16:22. Ale poza tym prawie nigdy spojrzeć na znaczniki na plikach. Więc dotyku, tutaj jestem tylko przy użyciu to stworzyć kilka szybkich plików. Dobrze, więc teraz jest rm Polecenie to dbamy o tutaj. I możemy rm boo. Powiedz usunąć regularne pusty plik boo. I możemy wpisać y, a teraz to Usuwa. rm baz. Usuń regularne pusty plik baz i typu n dla nr. Teraz to nie jest usuwany. Więc bar i baz nadal istnieją. Foo nie ma. GABRIEL: Mów. ROB BOWDEN: Świetnie. Tak irytujących wiadomości tutaj, usunąć regularne empty-- Co ty tam robisz? Usuń regularne pusty plik. Jeśli więc nie chcesz być przeszkadza tej wiadomości, możemy rzucać w -f flagi, a więc to jest siła. A teraz, jeśli rm -f, to nie będzie powiedzieć chcesz usunąć ten plik. To będzie po prostu to zrobić. I ls, nie widzę już tam bar. Teraz to potencjalnie niebezpieczne polecenie. To raczej nie jest tak źle. Wrócimy w drugim, jak to może się naprawdę niebezpieczne. I stwórzmy jakiś katalog tymczasowy. mkdir, inne polecenie. Więc jest polecenie mkdir sprawia, że ​​katalog. A teraz przez ls widzimy ten miły światło niebiesko podświetlone tymczasowym katalogu. Mogę cd do temp. I mogę mkdir foo. cd do foo. bar mkdir. cd do baru. Widzimy więc możemy łatwo dostać do jakiegoś bardzo głębokiego zagnieżdżenia. Teraz jak mogę usunąć katalog? rmdir. Więc jeśli tylko prosto spróbować rm, jak my z zwykłego pliku, Pasek ma rm powiedzieć nie można usunąć pasek. Jest to katalog. Istnieje specjalne polecenie usuwanie katalogów, rodzaju. Więc rmdir bar. Teraz pasek znika. OK, więc rmdir I prawie nigdy nie używać. Powodem being-- Teraz regularnego tu plik bar. Więc rmdir boo. rmdir. Nie udało się usunąć foo. Katalog nie jest pusty. Tak więc nie można używać na usunięcie reż Katalog, który ma wszystko w nim. Więc masz kilka opcji. Możesz przejść do tego katalogu, usuń wszystko ręcznie, a następnie wyjść i RMDIR katalogu. To oczywiście brzmi irytujące. Co jeśli nie tysiące plików w nie? Cóż, można rm *. Porozmawiamy o * w drugim. To w zasadzie oznacza wszystkie rzeczy. Ale jeszcze lepiej, więc rm -r. Więc rm -r-- w wielu konteksty, -r oznacza rekurencyjne, których będziemy rozmawiać o tym, co rekurencyjne środki w kilka tygodni. Ale to w zasadzie oznacza trawers Całość katalogu i usunąć wszystko. Rm -r foo tak powie zejść do katalogu foo? Tak. Usuń regularne pusty plik foo / bar? Tak. Usuń katalog foo? Tak. Więc teraz wszystko foo w niej została usunięta. Teraz to może się szczególnie irytujące when-- niech dotknąć jeden, dotknij dwa dotknij 3. Może mieć całą masę plików. Gdybym chciał, mógłbym stworzyć tysiące plików w tutaj. A rm -r foo będzie być dość irytujące. Tak, tak, tak, tak, tak, tak. O wiele więcej plików szybko zobaczyć, jak wiele razy Będę musiał tak pisać. Cóż, po prostu zobaczył, jak to możliwe przed pozbyć się konieczności wpisywania tak, -f. Więc mkdir foo cd foo dotykowy 1 2 3. OK, więc rmdir foo będzie ślepo usunąć foo całkowicie. Nie monit. Nie wszystko. Foo nie ma. Więc staram się korzystać z tego polecenia przez cały czas. Powiedział, że jest bardzo niebezpieczne polecenie, bo jeśli robię coś to nie poprosi. Będzie on zniknął. I zdarza się dość często, a nawet wyższy poziom kursów CS. Czasami zobaczymy gdzie ktoś coś mówi przypadkowo nasz rm rf-ed mój dom katalog i wszystkie moje P zestawie nie ma. I to jest katastrofalne, ale nie ma kosza. Nie ma nic , aby pobrać. To jest po prostu nie ma. Jeszcze gorzej będzie coś jak rm -rf /. Więc po prostu omawiane że katalog główny. Posiada wszystkie pliki w systemie. Rzeczy stają się bardzo brudny po usunięciu rzeczy takie jak ls, i CD, a wszystkie z nich. Publiczność: Jaka jest różnica pomiędzy rm, rf, rm * ROB BOWDEN: Tak rm * - ALLISON: Pytanie było, co jest Różnica pomiędzy rm, rf, rm *. ROB BOWDEN: Tak rm *. Gwiazda w ogólnym oznacza wszelkie zawartość tego katalogu. Starając się myśleć o innych sposoby pokazując gwiazdę. Cóż, rzeczywiście zwykle gwiazdy Oznacza pasuje do żadnego wzorca. Więc jeśli mam plik o nazwie dog1, dotykać dog2 dotknij CAT1 dotknij cat2. Więc ls * 1 będzie drukować i CAT1 dog1, bo gwiazda może być wypełnione w with-- trzeba tam być, ale gwiazda może być albo kota lub psa. To dzikie karty. To słowo szukam. Dzika karta. Albo mogę ls psa * i Ja dostałem zobaczyć dog1, dog2. To są pliki aukcji które odpowiada ten konkretny wzór. Ls można używać w ten sposób. Ls * gwiazda pasuje wszystko. Więc to będzie drukować wszystkie zawartość tego katalogu ponieważ wszystkie z nich pasuje. To nie będzie nic do wydrukowania w katalogach górnym poziomie. Jeśli mam katalog sub, bla, i dotykaj 1 2 3-- więc teraz, jeśli rm * gwiazdy, usunąć CAT1, cat2, dog1, dog2. Nie można usunąć foo. Jest to katalog. Tak gwiazda rozszerza się wszystko pliki w katalogu. Więc technicznie rm * jest jak powiedzenie rm CAT1, cat2, dog1, dog2, bla. Natomiast rmdir, technicznie gwiazda osiągnąć to, co chcemy, ale rm -rf-- jeśli pójdę z tym katalogu, rmdir temp, że pójdzie do temp i rekursywnie usunąć wszystko. Więc gwiazda jest w tym, że oddzielne rozumie by-- tak tej rzeczy że biegnę w to, co która skłania mnie do poleceń a następnie wykonanie i robi je, nazywam to moja skorupa. A więc ta sama powłoka jest Program. A gdybym chciał, to może uruchomić w / bin / bash. Powłoki bash jest nazywany. A teraz widzimy coś został nieznacznie zmieniony, a to dlatego, że moje ustawienia powłoki są nieco inne. Ale teraz jestem technicznie działa w moim oryginalnej powłoki powłoki, i mogę wyjść z tej powłoki, a teraz Wracam do mojej górnej skorupy poziomu. Celem mówiąc że is-- gwiazdę. Więc gwiazda jest czymś rozumiane przez bash. Więc rmdir, -rf flaga jest zrozumiałe tylko rm. Wie, że kiedy zdać -rf że cię chcesz go usunąć rekursywnie wszystkie pliki bez monitowania. Gwiazda jest coś rozumieć przez bash, że kiedy mówisz rm *, bash nie powie hej rm *, usuń gwiazdkę. Bash powie rm * usunąć CAT1, cat2, dog1, dog2. To automatycznie będzie poszerzyć wszystkie pliki w katalogu. I podobnie jest kolejnym tyldy Symbol, że bash rozumie. Kiedy mówisz cd ~ bash rozszerza że do katalogu domowego. Inne pytania do tej pory? OK, więc mamy zamiar zacząć chodzić szybko. Zakończenie Tab. Wystarczy wrzucić go tam. Wiele osób nie sobie z tego sprawy istnieje. Więc jeśli mam wpisać cd dow, ja chcę iść do pobrania. I nie trzeba wpisywać nloads. Mogę po prostu wciskamy Tab. Uznaje, że tak dow prefiks, który jest niczego nie pasuje jeszcze w tym katalogu, więc będzie wykonać to za Ciebie. Teraz mogę wejść. Ja też zrobić rekurencyjnie. Więc mkdir foo. Chodźmy do foo. bar mkdir. Więc wracając do mojego domu katalog, widzę pobieranie. Teraz kartę ponownie uderzenie, automatycznie będzie wypełnić foo. To tylko katalog. Kartę ponownie uderzając, automatycznie będzie wypełnić bar. Więc teraz jestem w (~ Downloads / foo / bar). Więc to zakończenie zakładka, gdy dostałem się do godzin pracy, i stoję nad czyjeś ramię, i oni będą rm D-O-W-N-L-O-A-D-S, ja umieram. Tylko zakładka, zakładka, zakładka, zakładka. Więc na pewno wykorzystane kartę. I podobnie się i w dół, wiele osób tylko, że stało się nigdy nie uderzył w górę iw dół. To będzie przejść przez poprzedni polecenia, więc jeśli po prostu zabrakło czegoś, i chcesz go uruchomić ponownie, tak trzymać, aż się do niego. OK. Tak szybko, kilka innych rzeczy. Wróćmy do temp. Stwórzmy kilka plików. Więc tutaj, jestem po prostu zamiar wymienić kilka słów. pies, kot, meow. Zróbmy psa, ryby. Więc teraz jest bardzo rep przydatne polecenia, które użyć, aby szukać w całym pliki dla danego tekstu, i technicznie można zrobić naprawdę wyrażenia złożone do niego dopasować. Więc, jeśli grep, a co chcę szukać? Powiedzmy, że szukam dla kotów i Chcę, aby wyszukać wszystkie pliki. Więc jak to zrobić wszystkie z tych plików? Gwiazda. Tak więc, w jednym pliku, mam kota. Prawdopodobnie może mieć nazywa to coś lepszego, dlatego, że wygląda na to, numery linii, czy coś. Ale w jednym pliku mam linię z kotem. W pliku dwa mam linię z kotem. Więc teraz mogę zajrzeć do środka i jednego pliku zobaczyć, o tak, że plik nie ma kota. Zawiadomienie plik nie został dopasowany trzy bo kot nie jest tam. Mogę grep dla meow. Plik ma meow tylko dwa. Tak to można połączyć, znowu z -r, które jak powiedziałem wcześniej często oznacza rekurencyjne. I tak mogę się tu, grep -r za każdy przypadek of-- niech edytować to, po prostu wyrzucić kota tam. Więc grep -r dla każdej instancji kot w niniejszym katalogu. I będzie rekursywnie szukaj żadnych podkatalogów. Więc w baz, nie kot. W temp / 2, nie kot. A w temp / 1 nie ma kota. Więc to jest wyszukiwanie w plikach. Teraz możesz również użyć znalezisko. I tak znaleźliśmy się konkretnie o szuka plików o podanej nazwie. Więc zróbmy trochę więcej. Chodźmy do pobrania. Dotknij dog1. Dotknij cat2. Dotknij cat_dog. Dotknij catcat. Tak, chcę dowiedzieć się więcej Pliki z psem w nazwie. Więc znaleźć, i najdłużej Czas nigdy nie pamiętał jak znaleźć pracował, aż w końcu czytać coś, co jest tak oczywiste. Więc znaleźć, automatycznie rekurencyjnego. Nie musisz zdać -r. Więc znaleźć kropkę. Nie rozmawialiśmy o kropce jeszcze. Natomiast kropka kropki zawsze oznacza o jeden katalog wyżej. Dot zawsze oznacza katalog bieżący. Mogłem więc rm -r kropkę sam sposób mogę rm -rf *. Ostatecznie oni osiągnąć to samo. rmdir kropka będzie usunąć Cały katalog bieżący. OK, co nie chcę tam robić. Ale znaleźć kropkę. Więc prąd rekurencyjnie wyszukiwania katalogu, a teraz wszystko po to są kilka flag, które użyć do wyłączenia rzeczy z powrotem. Więc znaleźć wszystko, kropka to powraca można znaleźć z bieżącego katalogu. To są wszystkie pliki rekursywnie wyszukiwania. Zobaczymy, niektóre z nich w drugim. Ale w przypadku, gdy zastanawiasz się, jak to zrobić że, tak Dowodzenia K, co najmniej w moim terminalu w Mac ściąga piłkę. Kontrola L zwykle czyści to dla każdego rodzaju terminala. Możesz również wpisać jasne. I jeśli kiedykolwiek w dziwnym scenario-- to zdarzyło mi się para time-- gdzie kolory swoich monitów są pomieszane, lub ci nie są w stanie zobaczyć niczego jest wpisane podczas pisania, ponieważ czasem jak kolor tła jest ustawiony sama, jak kolorem i teraz nie widać czcionki. Reset jest coś, co po prostu resetuje do domyślnej czarnym tle, białe z przodu, czy cokolwiek można je ustawić. Więc gdzie byliśmy? Znajdź punkt. Więc teraz to wszystko przeszłość punkt ogranicza wyniki do czegoś, co pasuje dany wzór. Więc chcę szukać wszystko z imieniem kota. Nie mam nic. Dlaczego jest to, że tak jest? No cóż, jestem po prostu szukają coś z dokładnie nazwą kota. Jeśli chcę, aby szukać czegoś który posiada pewien wzór, i cat-- cytaty technicznie nie są konieczne, ale Rzucam je tam. Więc teraz znajdzie catcat ponieaz to jest jedyna rzecz, która ma pewne arbitralne wzór następnie kota. Mogę umieścić kota *, a teraz znaleźć catcat, cat_dog, cat2, bo to są wszystkie rzeczy z kotem na początku, a następnie wszystko. Możesz połączyć to. Jeśli chcesz wyszukać wszystkie pliki C że masz, możesz zrobić * .c. Mamy blah.c tutaj. Więc to prace znajdzie. Możesz szukać. Ma całą masę flag dla dalszych ograniczeń. I jeden na nich, powiedzmy, -d. Tak przestarzałe. Och, to nie jest to, co chcę. Nie -d. Wpisz d. Więc znaleźć kropkę - wpisz d. Więc co, że po prostu nie jest Szukam dla wszystkich plików w bieżącym katalogu z A-- d oznacza directory-- typu katalogu. Przywraca wszystkie katalogi w bieżącym katalogu. I typu C jest wszystko regularne Pliki, wszyscy nie katalogi. Więc to tylko Przykładem innych sposobów można Można ograniczyć wyszukiwanie innych nie tylko nazwę pliku. To było 30 minut. Wciąż trwa. ALLISON: Będę wiatr przez. Będzie dobrze. ROB BOWDEN: Więc kilka innych rzeczy. Teraz huk, wykrzyknik. Tak, że generalnie means-- dobrze, zobaczmy przykład. Tak! F, co jest, że zamierzasz zrobić? Otóż ​​wydaje się, że powtarzane znalezisko dot -type f. A co! G? To właśnie grep -r kota *. Tak walić można użyć do powtarzania niedawno wykonane polecenie. Więc jeśli wpisuję! Gre, to będzie ponownie uruchomić polecenia, które rozpoczęły się gre najbardziej niedawno. I można zobaczyć wszystko Polecenia z historii. Więc historia. Wszystko to są Polecenia Zabrakło mi dziś. I dobrze, to nie jest dosłownie ogranicza się do dziś, ale użyłem tego tylko urządzenie na dzień dzisiejszy. To twoja całość Historia twojej powłoki bash, oprócz tego, że odcina w pewnym momencie. Publiczność: Co się dzieje, jeśli nie Historia [niesłyszalne] polecenie i błąd w rezultacie nadal będzie drukować the-- ROB BOWDEN: Tak, jeśli istnieje błąd w jednym z tych commands-- więc powiedzmy, że jest Nie znaleziono polecenia błąd. Wciąż pojawia się w historii. Dobrze. Inne pytania o cokolwiek? Więc to jest huk. Teraz bardzo przydatne polecenia, człowiek. Tak, że daje Instrukcja dla danego polecenia. Więc powiedzmy, man ls, więc to pokazuje mi ls. Jest to lista zawartości katalogu. I to jest, gdy widzę, że nie są te różne flagi, które istnieją. Widzimy więc, że ls -l istnieje gdybyśmy przeczytać, że. ls -l daje mi to pełną listę Katalog z kto jest właścicielem pliku, rozmiar pliku, modyfikowany znacznik czasu. Więc ls -a jest jeszcze jeden, który mógłby faktycznie korzysta nieco częściej. -al jest moim najczęstszym flaga Miniony ls. Tak -a, zauważysz wiele więcej plików niż tylko ls. ls -a. Co wspólnego z wszystkich tych plików? Zaczynają się od kropki. Tak to jest, że konwencja w Linuksie pliki zaczynające się od kropki są ukryte. Więc to po prostu oznacza, że kiedy po prostu proste ls, czy jesteśmy tego katalogu przy użyciu wyszukiwania Wyszukiwarka odpowiednik, lub z systemem Windows Równowartość Explorer, że my nie chcesz widzieć te pliki dot. Oni po prostu zanieczyszczają widok rzeczy. Tak więc są one ukryte chyba że wyraźnie zwrócić je z czymś -a. Więc mogę cd do .local, i widzę, że jest sam katalog z udostępniony katalog i aplikacji i bla bla bla. Więc kropka, oni tylko pliki ukryte. OK, więc inne ważne nich. Mam kilka mogę pominąć. Po prostu szybko mówić o prawdziwej rzeczy plik przekierowania. Więc nie cały kompleks serii rzeczy, które możesz zrobić z nich ale po prostu je zobaczyć, powiedzmy, echo. Innym poleceń. Naprawdę głupie polecenie. Wszystko to nie jest druk, co mówię do. Tak echa komentarzy. To po prostu echem cześć do ekranu. Witaj świecie. Echa hello world. Więc jedno polecenie lub jeden Symbol, że bash rozumie Jest to większa niż symbol i to wyjście do symbolu pliku. Więc jeśli mi się to wyjście bla, nie teraz plik nazwie foo, wewnątrz co jest hello world. Więc zauważyć, że kiedy echo cześć rury świat do foo, nie echo Hello World. Zamiast tego został wprowadzony do pliku foo. I jeszcze tylko polecenia rzucić go na ciebie, kota. To łatwy sposób, aby po prostu całkowicie wyświetlić zawartość pliku tak, że nie mam do otwarcia edytor tekstu, żeby go zobaczyć. Tak więc zawartość plik foo są hello world. I mogłem kot blah.c, zawartość jest to. Ponownie, to polecenia, które ich nie spełniają oczekiwać, masz je wszystkie na pamięć. Pomysł jest, że widziałem je. Może pracujesz na coś, a ty jak jestem chory otwarcia tego pliku. Szkoda, że ​​tylko patrzeć na zawartość bardzo szybko. Można to zrobić, a następnie spojrzeć wstecz i powiedzieć, oh Pamiętam coś takiego że istnieje, i to kot. Tak, że będzie do pliku. Teraz nie jest to nic dobrego Przykład odczytu z pliku jeszcze. Co znajduje się coś, co ma coś od standardu w? Wszelkie proste polecenie Linux? Kiedy się do niego, w ciągu kilku tygodni wszyscy piece-- dobrze, w tym tygodniu masz kawałek, w którym rozpocząć przyjmowanie danych od użytkownika. I tak zazwyczaj podczas pisania że wejście w klawiaturze. Zamiast pisać, że Wejście na klawiaturze możesz zamiast rur z pliku tak, że kiedy robisz Mario, ./mario, Rura z dowolnego danego pliku, a że zamierza uruchomić program mario. Wejście na nie spodziewa klawiatura, a nie jest to po prostu się czytać wiersze z pliku foo. Tak więc większa niż bla umieszcza je w plik bla, bla, a mniej niż bierze rzeczy z pliku foo i używa tego jako wkład do tego programu. I po prostu ją zobaczyć, możemy również echo foo bar baz, a następnie zamiast jednego większa niż, zróbmy dwa do foo. Co to robić? To tylko dodaje do pliku. Więc zamiast zauważyć, jeśli do echo bla do bla bla i kot, to tylko bla. Gdy więc wyjście do pliku go, całkowicie nadpisuje ten plik. Jeśli chcesz po prostu dodać, dwukrotnie [? równiarka. ?] I ostatni jest rura. Rura Pobiera o wiele bardziej skomplikowane, gdzie trwa wyjście jednego polecenia i przekazuje go do następnego polecenia. Więc niektóre często rzeczy, historia. Tak, och, nie chcę patrzeć na to. Pokaż mi wszystkie polecenia w mojej historii gdzie grep-ed za coś. Nie, to jest mylące. Pokaż mi wszystkie polecenia, gdzie znaleźć. Wszystko znaleźć polecenia kiedykolwiek prowadzili. Więc historia. Teraz wyjścia historii Ekran ten listę poleceń, ale ja nie chcę wyjście do ekranu. Zamiast tego mam zamiar go do rury grep. Więc grep dla wszystkich wystąpień znaleziska. Więc teraz, zamiast podejmowania grep wejściowy, zamiast of-- grep jest w stanie obsłużyć tak input-- jesteśmy za pomocą grep nieco inaczej tutaj. Więc zamiast pisać listy rzeczy chcieliśmy szukać i powiedział grep bierze jako wejście. Więc jeśli ja po prostu znaleźć, to grep czeka na mnie typ rzeczy. Więc kot cześć znaleźć. Witam. Znajdź. Zauważ, za każdym razem wpisać znaleźć uznaje, że wpisałem znalezisko. Więc zamiast tego, będzie Pliki wyszukiwania znaleźć. Historia jest teraz tak będzie Wyjście lista wszystkich poleceń. Jesteśmy wprowadzanie tego wyjścia, a my karmienia to grep, i tak to wypluwa wszystkie przypadki znalezienia. Powodem Powiedziałem, że być mylące jest jeśli ja-- to nadal niejasne. Gdybym grep dla grep. Zauważ, że to prawie zawsze pokazując polecenie po prostu prowadził, bo tego polecenia Sam ma grep środku. OK, więc wszelkie pytania na cokolwiek? A ja przenieść go w tym momencie. Mam nadzieję, że jest to miłe Przegląd wszystkich poleceń że nie musisz mieć zapamiętane, ale te stanowią stałe 95%, co zrobić w linii poleceń. Należy także pamiętać, że z linii poleceń Sam bash jest językiem programowania, a więc kiedy się do niego, to Może chcesz zrobić naprawdę skomplikowanych rzeczy. A więc ma takie rzeczy jak pętle i IFS, i wszystkich tych, że będziesz się przyzwyczaić ze swoich języków programowania. Ale to jest poza Zakres niniejszej sekcji. OK, więc nie ma pytania? ALLISON: Brak? GABRIEL: Idziesz to-- ALLISON: mogę to zrobić na kopalni, jeśli chcesz. Widzimy, co się dzieje. ROB BOWDEN: Off, aby Allison. ALLISON: Woo. Jesteś trudne do naśladowania, Rob. Czy chcesz mnie, aby przełączyć się z tobą? Albo masz, OK. Zamierzam spróbować i nie bardzo być tam jak długa. Zobaczymy, czy to będzie działa tak, jak chcemy. Może? Haha! Tak. Więc jestem po prostu się bardzo szybko przejść przez zmienne, pętle, warunkowych, i trochę na kompilator. Jeśli masz pytania na za każdym razem, proszę mnie powstrzymać. Te chłopaki przypominają mi powtórzyć Twoje pytanie w przypadku zapomnę, ale nie powinno być tak źle. Tak zmiennych, tak. Nie mamy jeden z twoich Kawałki tutaj nowa. Jestem pewien, że większość z was, jeśli miałeś jakieś gry utworzony z Scratch, trzeba było śledzić coś jak wynik, lub czas, czy coś takiego. Tak więc ci, jasny pomarańczowy Kawałki, które widzimy tam to tylko forma zarysowania zmienne, i to na pewno za pomocą zmiennych waszych programów. Jeśli nie jesteś, ja naprawdę nie jestem wiesz, co robisz. Ale i tak, wielka rzecz, definiowania zmiennych. Z C każda zmienna ma mieć rodzaj oświadczył, więc dałem wam bardzo Ogólnie jeden na wierzchu. Więc będziesz miał swoje wpisać, a następnie co zdecydujesz się zadzwonić do zmiennej. Więc w tym przypadku, typu na liście zmiennych. Mamy trzy przykłady. Char pewnego stopnia, o A, która jest co Jestem pewien, że wszyscy chcą aby w tej klasie. Można zdefiniować wiele zmienne w jednej linii tak długo, jak są one tego samego typu, który jest naszym drugim przykładzie nie gdzie masz trzy Zmienne, x, y i z. Są wszystkie pływaki. A potem można również w tym ostatnim Przykładem z int i liczba punktów zespołów, można zainicjować je właśnie tam. Tak więc na przykład, w którym środkowy Wystarczy pływak z X, Y i Z, tych, którzy nie są jeszcze zainicjowana. Oni nie mają żadnej wartości. Albo mają wartości śmieci. A jeśli spróbujesz i używać ich, kompilator będzie krzyczeć na ciebie. Musisz zarówno zadeklarować i zainicjować zmienne. Tak więc w tym ostatnim, robimy jedno i drugie. Jesteśmy deklarowania zmiennych o wynik i liczba zespołów, a my ich inicjowanie, dając im ich początkowe wartości 7 i 4 odpowiednio. Fajne. Każdy dobry? Niesamowite. OK, więc pewne konwencje. Jeśli macie przeczytać poprzez stylu 50, to są tylko rzeczy, które chcielibyśmy dla do wdrożenia w swoim stylu. Tak znaczące nazwy. Jeśli zaczniesz nazywając rzeczy tylko x, y i z, a zwłaszcza jak masz na dłuższe Programy, jesteś prawdopodobnie będzie mylić się i być jak to, co jest ta zmienna odnosi się do. Nie mam pojęcia, co to oznacza. Więc jeśli to ma trzymać wynik, nazywają to zdobyć. Jeśli to ma trzymać jakieś odpowiedzi lub spowodować, nadaj mu nazwę takiego. Pętle, które będą dostać się do następnego slajdu, pojedyncze zmienne nas są w porządku. ROB BOWDEN: I, J i K są tylko konwencje pętli że każdy oczekuje od nich nazywać i, j, k. Możesz zadzwonić them-- widzę wiersz Kolumna lub połączenie rząd czasem dla dwóch zagnieżdżonych pętli i to również swego rodzaju standardem. Ale i oraz j jest całkowicie zrozumiałe. ALLISON: Tak, ja i j jesteś całkowicie w porządku. Dla jasności, jak w niektórych swoich zbiorów P, może warto byłoby mieć więcej opisowe rzeczy nie tylko śledzić niego. Ale myślę, że i, j oraz k myślę Zdecydowana większość z nas wszystkich wykorzystanie. ROB BOWDEN: Z tych konwencje, więc styl jest ważny. Jest to jeden z czterech osi na których jesteś oceniany, i to jest tak łatwo po prostu przejść nad Twój P ustawić na końcu i upewnij że nie są błędy stylistyczne. Więc upewnij się, że tabulatorem poprawnie. Upewnij się, że zmienne są nazwane. Zostaw kilka uwag. Jest to bardzo proste, aby te punkty. Nie musisz myśleć o wszystko, aby zdobyć te punkty. Nie musisz się dowiedzieć niczego. To właśnie dzięki czemu wyglądają dość. ALLISON W rzeczywistości, mają styl 50, które powie Ci, gdzie masz brudząc nawet jeśli brudząc się na stylu i powie dokładnie to, co ci trzeba naprawić i jak trzeba to naprawić. To też po prostu dobra wspominając że to jest polityka kursu że jeśli jesteś w biurze godziny i kod jest bałagan, możemy odmówić pomocy Ci, aż wygląda ładniej. Tak zaczynają się dobrze, zachować spójny styl, ty też po prostu się do Twoje życie o wiele łatwiejsze, gdy próbujesz przejść debugowania. Jeśli próbujesz dowiedzieć się, gdzie jesteś brakuje nawias klamrowy i są w każdym miejscu, jesteś tylko co swoje życie trudniejsze. Więc być zgodne ze stylem. Obiecuję, że ułatwi Ci życie. To będzie uczynić nasze życie łatwiejszym. Każdy będzie znacznie szczęśliwszy. I to jest to, co chcesz. GABRIEL: Twoja klasa będzie wyższa. ALLISON: Tak, a twoja klasa. Jeśli TF jak ty, wydaje się być korzystne. Wszystko w porządku, a potem po prostu Drugi punkt tutaj. Spójne inicjalizacje. Tak jak widzieliśmy, można zadeklarować i zainicjować rzeczy. Wiele zmiennych na tej samej linii. Jedną z rzeczy, nie chcemy was Wystarczy zadeklarować kilka zmiennych i nie zainicjować je same linii, które są inicjowania innych. Tak więc w przypadku, wykonana nie ma sensu w ogóle, mamy tu przykład dokąd deklarując ints w zmiennych kwartałach dimes i grosze, ale czwarte i grosze nie mają wartości początkowej. My ich nie zainicjowany, ale tam w prawo w środku mamy już zainicjowany dziesięciocentówki do 0. Więc albo zrobić kwartałach dziesięciocentówki, grosze. Czy czwarte równa 0. Dimes równa 0. Groszy równy 0, lub cokolwiek te wartości początkowe. Wielka rzecz ze stylem, być spójne. W przypadku wątpliwości, być spójne. Ale naszego przewodnika styl też. Fajne. Wszyscy tam dobrze? Publiczność: Gdzie przewodnik styl? ALLISON: przewodnik redakcyjny jest on-- co strona internetowa? GABRIEL: Myślę, że to manual.cs50.net/-- ALLISON: Styl? GABRIEL: Styl. Tak. ALLISON: Tak. Więc pytanie, gdzie jest w formie 50. manual.cs50.net/style. Tak? Publiczność: Jeśli mamy definiowania zmienne, to jest OK jeśli stawiamy jak [niesłyszalne] jak int wynik i int celem. Więc można powiedzieć, że teraz mamy ma zdefiniować ich razem? ALLISON: Więc pytanie, należy masz kodu nadmiarowego podczas definiowania Zmienne takie jak int wynik i na następnej linii int gry? ROB BOWDEN: Na pewno są przypadki, w których zbędny kod jest zły. Nie uważam że zbędny kod. I prawie nigdy nie deklarują wielokrotnego Zmienne na tej samej linii w historii. A jeśli już, to dlatego, zwykle zostawiam jakiś komentarz wyjaśniając, co zmienna jest dla. Więc powiem int wynik ukośnik ukośnik. Śledzi cokolwiek. W ogólnej slash slash. Więc jest dużo grubsza w ten sposób umieszczenie ich na tej samej linii. Ja po prostu nie umieścić je na tej samej linii. ALLISON: Czuję się jak to jest osobistych preferencji w tym momencie. Publiczność: Czy to idź do pętli i rzeczy też? ROB BOWDEN: Podobnie jak w środku? Jak int i równa 0 przecinek długość równa się coś? Że nie mam wyboru. Z pętli inicjalizacji dla part-- więc mógł tylko widziałem int i równa 0 średnik i mniej niż cokolwiek średnik ja plus plusem. Że int i jest równa 0, można także technicznie robić to, co widzieliśmy przed ze składnią przecinkami. int i równa 0 j przecinkami wynosi 3 przecinek k równa się pięć. Nie mają wyboru, aby podzielić że się na wiele linii, i to jest norma. Widząc to nie jest w porządku. ALLISON: Awesome. Cóż, wygodne segue w pętle. Więc tak, mamy tutaj kilka przykładów z pętli, że chłopaki widzieli w Scratch. I oczywiście wszystkie te może po prostu zostać odtworzony w C. I w zasadzie pozwalają powtarzać jakiś fragment kodu do pewnego warunku jest spełniony, co my będziemy dostać się do prawej po rozmowie o pętle z warunkowych. Mamy więc trzy główne typy. Dla, while i do chwili, która wszyscy będziemy przejść teraz. Tak więc pierwszy jest dla pętli. Więc od jakiegoś warunku, wykonanie tego fragmentu kodu. Mamy to fajny mały Schemat tu na dole. Ale w zasadzie masz Twój na, że ​​pierwszy wiersz, masz zamiar zainicjować zmienne. Tak jak mówiliśmy, i to równa 0 lub równa 10. Cokolwiek potrzebujesz, że Zmienna jest to będzie nie zainicjowany, zadeklarowana i zainicjowana jakąś wartość. Tak więc mamy pewne warunkiem, że będzie być sprawdzenie naszej zmienna przed czymś. Tak więc w przypadku typowy przypadek, w którym może chcesz ten fragment kodu wykonać pięciokrotnie. Więc musielibyśmy int i jest równa 0, a my ma to być, kiedy jest mniej niż pięć. Tak, że warunek jest tylko będzie sprawdzić, że za każdym razem. Jeśli tego warunku wartość true, to zamierza uruchomić kod, który jest dokładnie to, co ten mały schemat pokazuje. I tak to wykonuje go. Aktualizuje zmienną, czyli to, co widzimy, w ostatniej części naszego, na inicjalizacji nie pętli. Więc po prostu dalej robić to dopóki ten warunek nie jest spełniony, i to będzie zamknąć pętli i dalej przejściem z resztą programu. Wszyscy tam dobrze? Fajne. Więc oto przykład, bardzo podobne do czegoś po prostu rozmawialiśmy. Więc po prostu chcesz wydrukować CS50 jest 10 razy. Więc widać tutaj mamy nasz za, a potem zainicjować zmienną i powinna być równa 0. Naszym warunkiem jest sprawdzenie że jest to mniej niż 10. Więc ocenić na true, kiedy pierwszy raz uruchomić, a następnie aktualizuje naszą zmienną za każdym razem, że to faktycznie wykonuje i drukuje to CS50. I zakończy się po 10 godzinach. Fajne. Tak więc, podczas gdy pętle są w przyszłym. I jak widać tutaj, musimy po prostu niektóre natomiast to condition-- pytanie? Odbiorcy: Jak mogę skakać w rzeczywistości po prostu nie jeden numer, ale dwa numery [niesłyszalne] ja plus Plus Plus? ALLISON: Więc pytanie, jak można aktualizacji zmiennej przez więcej niż jednego w czasie. Więc ja plus Plus zmiana o jeden za każdym razem. Jeśli chcesz zaktualizować go przez dwa, można zrobić i Plus wynosi 2. ROB BOWDEN: Widzieliście oraz odpowiada na wykładzie jeszcze? PUBLICZNOŚCI: [niesłyszalne]. ALLISON: To skutecznie samo jak i ja plus 2 równa. Tak to się go wziąć i aktualizować go przez dwie za każdym razem. Plus równa jest po prostu coś, nazywamy cukier syntaktyczny. ROB BOWDEN: Tak, istnieje dla tych, prawie wszystkie operatory arytmetyczne. Więc czasy równej podwoi liczbę. j podzielić równy 3 jest taki sam jak j równa j podzielić przez trzy. ALLISON: minus 2 będzie równa zmniejszyć I przez dwie za każdym razem. ROB BOWDEN: Nawet mod równi. Nie widziałeś operatory bitowe, ale daszek równa oraz handlowego równa, wszystkie te istnieją. ALLISON: Tak wiele razy, zwłaszcza z kilku pierwszych zestawów P, będziesz prawdopodobnie zwiększając przez jeden, więc ja plus plus, j oraz oraz to wszystko masz zamiar się zazwyczaj za pomocą. Ale warunek jest aktualizacja całkowicie w kontroli. Możesz go zaktualizować za pomocą dowolnych odstępach lub w jakikolwiek sposób zdecydujesz się. Może nawet ma to być liczb losowych czasem. Ale tak, jest wiele rzeczy, które możesz zrobić z tym. Nie jesteś ograniczony do ja plus plus. ROB BOWDEN: Właśnie tak Ciebie wiem, że istnieje, to również istnieje w innej formie, oraz plus i. Więc jeśli kiedykolwiek szukają w internecie i stanie zobaczyć oraz plus i, praktycznie oznacza to samo. ALLISON: Fajne. Dobry? Niesamowite. Tak więc, podczas gdy pętle. Bardzo podobne. Masz jakiś warunek. Najważniejsze, aby zauważyć, o to zamiast trzy różne części założyć, mamy jeden. Musimy tylko trochę kondycji która jest sprawdzana. I w taki sam sposób, tak długo jak że warunek jest spełniony, Twój kod będzie działać. A jeśli to fałsz, to zakończy, ruch do następnej części programu. Tak więc jest to rodzaj like-- co Dobrym przykładem sprawdzenia z jakiegoś normalnego stanu? GABRIEL: Choć prawda. ALLISON: Można to zrobić, podczas gdy prawda. No 1 jest równe 1. ROB BOWDEN: Można zrobić while-- tylko zamiast za pomocą pętli for, zawsze można zakodować do pętli w pętli while, więc większa niż 0 lub Podczas gdy mniej niż 10. ALLISON: Awesome. A potem mamy zrobić, gdy pętle, które jest dobre dla użytkownika, gdzie walidacji chcesz dostać coś od Twój użytkownik, sprawdzić, czy jest ważny, a następnie kontynuować stamtąd. Tak więc jedną z rzeczy, wiedzieć, z zrobić, gdy jest to, że to będzie do wykonania, a następnie ponownie uruchomić jeśli warunek ten jest spełniony. Więc prawdopodobnie najlepszym sposobem, aby to zrobić jest tylko, aby zobaczyć przykład tutaj. Tak jak już wspomniałem, użytkownika walidacja jest naprawdę useful-- czy chwilami są naprawdę przydatne przy weryfikacji użytkownika. Tak więc jest to po prostu będzie ponownie zapyta jakiegoś użytkownika aż wprowadzić liczbę dodatnią, które mogą być przydatne dla P zestawie w tym tygodniu. I tak w tym przypadku, gdy początkowo uruchomić ten program, to będzie drukować wpisz liczbę dodatnią. Zapowiada się niektóre Wejście od użytkownika, i wtedy to się sprawdzić że wejście na stanie które zostały ustawione dla niego. Więc w tym przypadku to będzie sprawdzić. To będzie powiedzieć, OK, to nasz wkład negatywny, czy jest to 0 lub ujemny, które byłyby nieważne. Tak więc byłoby to ponownie monit. Pytanie? Publiczność: Czy to samo wtedy jak podczas pętli, jeśli po prostu kopiowane tego kodu i umieścić go [niesłyszalne], podczas gdy pętla? ALLISON: Więc pytanie będzie to być taki sam, jak tylko chwilę Pętla gdybyśmy tylko skopiować pętli while powyżej. Więc w tym przypadku, gdy jest twoja pętla będzie najpierw sprawdzić stan. Tak więc w tym przypadku, jeśli próbuje pisać jak tylko pętli while, to znaczy czasu wejście jest mniejsza niż jeden. Ale nie mamy wejście do niego. PUBLICZNOŚCI: Jeśli [niesłyszalne] pętli while tym ten kod, ale potem poradził sobie kod powyżej pętli jednocześnie. Po prostu miał ten kod [Niesłyszalne], podczas gdy pętla. ALLISON: Byłoby to samo, tak. Więc może po prostu write-- zamiast mieć do-- tak. GABRIEL: Ale to jest bardziej elegancki. ALLISON: Tak, to jest bardziej elegancki. Możesz dostać się do projektowania i etażerka, ale tak, można całkowicie zrobić. Jeszcze jakieś pytania? OK, fajnie. Więc rozmawialiśmy dużo o warunkach z tych pętli, które mamy, więc jesteśmy rzeczywiście dostać się do warunki wyrażeń logicznych. Ponownie, można z nich korzystać w C, tak po prostu rodzaj przejścia z graficznym interfejsem więcej faktycznie kodowania. Fajne, tak duży jeden, jeśli. W zasadzie tylko pozwala nam na wprowadzenie niektóre logiki do naszego programu i kontroli sys warunki. Tak więc w tym przypadku, OK, n jest większe niż 0? Tak to jest, więc można wykonać to. To jest po prostu sprawdzanie niektórych warunkiem, że masz ustawić, które myślę, że wszyscy jesteśmy wygodne sprawdzanie warunków. Fajne. Więc jeśli jeszcze jest twój drugi, można powiedzieć, OK, jeśli to prawda, zrobić to pierwszą rzeczą. W przeciwnym razie chcę ci domyślne i zrobić coś innego. Jak w tym przypadku, albo wybrać liczba dodatnia lub ujemna. Masz tylko dwie opcje. Musisz to wykonać bez względu co twoje wejścia użytkownika. Więc można powiedzieć, dobrze, jest większa niż 0? Fajne. Wydrukuj liczbę dodatnią. Jeśli nie jest, drukowanie negatywne. Każdy dobry? I wtedy jedna rzecz uznania jest że jeśli jeśli warunek jest spełniony, jeszcze nigdy nie będzie również wykonać. Tylko jeden z nich będzie wykonać w czasie. Więc jest to kompromis. Nie dostaniesz się mieć obu. Trzeba albo pierwszy warunek. Trzeba albo jeśli lub innego, nie oba. Które następnie mogą dokonać rzeczy jeszcze bardziej skomplikowana, bo można zrobić, jeśli, w przeciwnym wypadku, a następnie innego. Tak więc w tym przypadku trzy warunki. I znów, tylko jeden z nich jest skończy wykonywane. Więc można się zastanawiać, A co, jeśli ty mieć coś, co może spełnić dwa z nich. Może co masz wprowadzania spełnia zarówno warunek bo jeśli i else if. Jedyne, co się dzieje, aby uruchomić ALLISON: Jak tylko znajdzie coś że spełnia warunek, że wartość true, to co to będzie działać i nic więcej. Więc jeśli miał to liczba między 0 i 5 dla pierwszego, czy jest to liczba z zakresu od 3 i 5 do innego, jeśli części, i wejście number-- Powiedziałem, 0 i 5 and-- 4. To będzie hit pierwszej. To będzie powiedzieć OK, to liczba jest pomiędzy 0 i 5. Uruchom i zostawić. To nigdy nie trafi do tej drugiej opcji. Cool? Niesamowite. OK, mamy także sprawozdania przełącznika, jeśli chcesz dostać nawet more-- lub przykro, Przełącznik jest obok. Jestem coraz dalej od siebie tutaj. Ponownie, jeśli wielu bloków gdzie, jak właśnie powiedziałem jest jak najszybciej znaleźć warunku że jest spełnione i jeśli inny jeśli inny, pozostawia. Jeśli potrzebujesz, aby sprawdzić wiele rzeczy, jesteś będzie chciał korzystać z tego, ponieważ to sprawdzić za każdym razem tutaj. Tak więc będzie przebiegał przez i po jest większa niż lub równa 90, to będzie drukować, które. I to będzie działać przez i sprawdzić każdy jeden z nich. Publiczność: Tak to będzie więcej buggy niż [niesłyszalne]. Będzie to jak [niesłyszalne]? ALLISON: pytanie będzie to buggy czy ma to zrobić, co chcesz. To naprawdę zależy od tego, co chcesz z programu. PUBLICZNOŚCI: To znaczy jak, jeśli umieścić 90 w. ALLISON: Jeśli umieścisz 90-- PUBLICZNOŚCI: [niesłyszalne]. GABRIEL: Będziesz się dwie rzeczy. ALLISON: Będziesz się dwie rzeczy. Tak, dwa. ROB BOWDEN: Dwa? ALLISON: Nie ROB BOWDEN: Cztery. Jeśli umieścisz 90, to ci powie dostał A, masz B, masz C, masz D. PUBLICZNOŚCI: [niesłyszalne]. ALLISON: Prawo. Tak więc w zależności od tego, co chcę od Ciebie programu. Czasami trzeba sprawdzić kilka rzeczy. Dostaniesz znacznie głębiej w to, co Dobry projekt to jak iść do przodu. Ważne jest, aby zdaje sobie sprawy, że to sprawdzi tutaj wszystkie cztery warunki. Zważywszy, że gdyby to było w przypadku innego, jeśli inny jeśli jeszcze, że będzie to pierwszy przypadek uderzył, to wydrukować masz piątkę i zrobić. ROB BOWDEN: Nawet jeśli postanowił to zmienić, aby w przypadku i większa lub równa 90, jeśli większy lub równy 80, i mniej niż lub równa się 89, o ile n większy niż lub równy 70, i n mniejszy lub równy 79, tak że będzie prawidłowy. Że będą robić to, co chcemy, ale nadal sprawdza każdy to. Tak więc, podczas gdy w pierwszym scenariuszu, jeśli wprowadzić 90 z tylko jeśli else if else if, i wprowadzić 90, a następnie to będzie poprawić. Sprawdzi pierwszy jeden, druk masz piątkę, pominąć wszystko, bo to już znaleźć taki, który działa. Wszystkie przypadki wzajemnie się wykluczają na podstawie, jeśli else if else if. Więc to wykonać pierwsze, jeśli to się robi. To będzie go do końca. Natomiast jeśli zmienimy to jest to, co było mówiąc, mniej niż lub równa się 89. To będzie sprawdzić pierwszy. To będzie drukować. To będzie sprawdzić drugi. To nie będzie drukować. Sprawdź trzeci. Nie będzie drukować. Sprawdź czwartą. Teraz do druku. Więc w tym przypadku, innego, jeśli wersji, ponieważ te przypadki wykluczają się wzajemnie, to lepsze wykorzystanie jeśli else if else if, dlatego, że będzie miał mniej kontrole warunków od tej wersji. ALLISON: Awesome. Tak więc kolejna rzecz, możemy Oświadczenia nie jest przełącznik. Zasadniczo instrukcja switch bierze w pewnym zmiennej, w tym przypadku jest to n i określa wówczas wykonać. Więc to jest również jednym gdzie swoje sprawy powinien być rodzaj wzajemnie się wykluczają. Tak więc w tym przypadku, jeżeli my mamy jeden, to zamierza dopasować cokolwiek to zmienna-- cokolwiek wartość n jest, aby jeden z tych przypadków, tak 1, 2, lub 3, i wydrukować odpowiedni wiersz. A potem, jeśli zauważy się tutaj, mamy także domyślne, które można z myślą o jak twój indziej. Więc jeśli wybierzesz inny numer Poza 1, 2 i 3 w tym przypadku to jest po prostu do druku nieważne. Podejmowanie decyzji, kiedy należy użyć IFS kontra jeśli elses kontra przełączników będzie być coś, że chłopaki będą zobacz projekt mądry jak zacząć pisać bardziej skomplikowane programy, a nie ma żadnych sztywnych zasad od kiedy je stosować. To naprawdę zależy od kontekstu. ROB BOWDEN: I tylko rzucić go tam ponieważ jest bardziej komfortowe sekcja. Przełączniki, mają tendencję do być: więc jesteś ograniczony w liczbie sposobów można Można z nich korzystać, ponieważ IFS, Choroba ta może być dość dużo cokolwiek chcesz. Z przełącza przypadki muszą być liczbami lub technicznych mogą być znaki, ale znaków, jak zobaczymy, są numery tylko. Więc muszą być liczbami, ale przełączniki są rzeczywiście bardziej skuteczne, niż gdyby else if else if, bo nawet biorąc przykład before-- dobrze, Przykładem klasy wydaje się dobre. No powiedzmy, że tutaj, że zamiast robić to jak, jeśli else if else if scenariusz. Więc jeśli n jest równa jest równa 1, wydrukować wybrałeś małą liczbę. Jeśli inny, jeśli n jest równa jest równa 2, wybrałeś numer średniej. Else if równi wynosi 3, na wysokim poziomie. Jeszcze nieważny. Więc powiedzmy, że był nasz scenariusz. Więc powiedzmy, że wchodzimy 4, więc spodziewamy się nieważne. Sposób, że jeśli inny jeśli inny jeśli podejście będzie działać to sprawdza pierwszy warunek. To nie jest spełniony. Więc sprawdzić drugi warunek. To nie jest spełniony. Sprawdź trzeci warunek. Nie zadowolony. Więc idziemy do innego i wydrukować nieważne. Przełącznik działa tak to kompiluje się do tego, co mamy zamiar zadzwonić tabelę skoku. Ideą istota że po wprowadzeniu 4, może natychmiast przejść do ustawień. To nie musi się sprawdzić, ja mam sprawę jeden? Nope, że nie o to chodzi. Przypadek 2? Nie. Przypadek 3? Nie. Domyślnie. OK, to musi być tam, gdzie ja chcą, a następnie wykonać to. Nie, to od razu przeskakuje do domyślnie. Albo wprowadzić dwa, to natychmiast pójdzie do 2 bez konieczności przechodzenia przez przypadku 1. Tak więc w ten sposób Obecnie to realistycznie nie, że wiele z przyrost wydajności. Zazwyczaj komputery są dość szybko, a to nie jest tak wielka. Ale to jest tak, że Przełączniki są szybsze. Jeśli jesteś naprawdę próbuje optymalizację, należy użyć przełącznika. ALLISON: Fajne. A potem mamy operatora potrójny. Więc wiem, że wspomniane wcześniej Słowo cukier syntaktyczny. Więc to tylko rzeczy, które sprawiają, kod o wiele bardziej zwięzłe. Tak więc jest to jeden z tych przypadków. Więc operator trójoperandowy jest znak zapytania jelita grubego, jak widzimy, w ciągu linii s jest równa n większy niż 100 znak zapytania niskie wysokie jelita grubego. Więc w zasadzie, jak to działa jest to n większy niż 100 warunek. Więc myślę, że to może mieć sens. To jest jak zadawanie pytania. To mówi o, n jest większa niż 100. Kto wie? A jeśli ocenia się prawda, to będzie ci Pierwszą rzeczą, która jest wymienione tam, który jest wysoki. W przeciwnym razie to się daje niskie. Więc to jest po prostu bardzo proste i skuteczny sposób to zrobić, jak w przypadku innego. To wszystko to jest. A jeśli były to napisać a jeśli jeszcze warunkowe, byłoby jeśli n jest większe niż 100, powrót wysokiej. Innego, wrócić niskie. To jest po prostu o wiele bardziej zwięzły sposób pisania. ROB BOWDEN: Więc to szczególny przykład jest kiedy robisz coś w ten sposób, to jest wzór których używam bardzo często trójskładnikowej. Więc nie mamy jeszcze rozmawiali o zakresie, ale nienawidzę widząc łańcuch s średnik. Jeśli n większe niż 100, s równa wysokości. Indziej, s równa niska. Tak, że wzór, te pięć linii Kod dosłownie 100% czasu mogą być przeniesione do co był tam z trójskładnikowych. Więc trójoperandowy jedna linia kodu. Jeśli jeszcze, pięć. To przykład wskazuję na każdy czas. Byłoby to świetne miejsce dla operatora potrójnego. To jest tak czyste. Ale ludzie mają tendencję, aby nigdy nie używać go. ALLISON: Zabierz to Gabe'a. GABRIEL: Więc teraz wy wszyscy nauczyłem się w tym tygodniu wykład że wszystko w Komputer jest binarny, prawda? Podobnie jak lampy tutaj. Możesz być włączane i wyłączane. I wszystko, co mam na myśli dosłownie wszystko. Niektóre cyfry i znaki i łańcuchy, a nawet kod, który piszesz, kiedy jest kompilowany do maszyny Kod i takie tam, tak, to wszystko sprowadza się do 0 i 1 ". I tak, gdy mamy do czynienia z liczb całkowitych, które jest coś, co jest technicznie bardzo prosta, powinniśmy być w stanie zrobić rzeczy jak dodanie ich, co jest prawdopodobnie jedna z najprostszych rzeczy można zrobić, aby dwóch liczb całkowitych, tak? Więc dodawanie i odejmowanie działa tak jak to działa w systemie dziesiętnym, wyjątkiem tutaj jest to binarny, prawda? Więc jest to w bazie dwóch. Więc dodać 1 plus 1. To daje 0, a 1 przenosi. I po prostu robić to, więc teraz jest bardziej interesujące pytanie. Wiemy, jak do reprezentowania wszystkich dodatnich liczb całkowitych w komputerze, ale zróbmy to ćwiczenie. Udawaj, że chłopaki są w 1960 roku lub coś próbuje stworzyć komputer, i trzeba wymyślić od sposób przechowywania minus 1, na przykład, lub minus Liczba całkowita o to chodzi. Jak to zrobić? Jakieś pomysły? Wystarczy rzucić wszystko na mnie. Tak? PUBLICZNOŚCI: [niesłyszalne] wyznaczyć Specjalny jeśli twój [niesłyszalne]. GABRIEL: Możesz wyznaczyć specjalny bit, który będzie wynosić 0 lub 1. Powiedzmy, że jeden, czy to pozytywne i 0, jeśli jest ujemna. A następnie reszta bitu jest tylko, aby zapisać numer. Fajne. Więc to jest bardzo dobry pomysł. Mamy, nie wiem, 200. A jeżeli pierwszy bit jest włączona, to jest oraz 200. Jeśli jest wyłączona, to minus 200. Fajne. Istnieje tylko jedna mała Problem polega na tym, co jeśli spróbujemy Podsumowując rzeczy. Więc wyobraź sobie, mamy 11111 tutaj, i jesteśmy zsumowanie to z 00.100 cokolwiek. Jeśli te dwa są pozytywne, to w porządku. Jednak wówczas, gdy jeden z im jest ujemny, podobnie jak powiedzmy, że to trochę tutaj to taki, który jest odpowiedzialny for-- Zamierzam zrobić separate-- więc ten oznacza, że ​​liczba ta tutaj jest dodatni. Ten oznacza, że liczba tutaj jest ujemna, prawda? Ale wtedy, gdy jesteś zamierza je podsumować, to potrzebujesz if mówiąc: och, czy to jest 0, to suma będzie moja coś innego, prawda? Więc nie ma lekko bardziej sprytny sposób zrobić to, co jest nazywane uzupełnienie dwójkowe. Więc w zasadzie to, co zrobić, to definiujemy minus 1 jest rzeczą, że jeśli dodamy do 1 daje nam 0. Powtórzę, że. Więc powiedzmy, że to tutaj jest jeden. Co to jest rzecz, która naturalnie w dodatnich liczb całkowitych dodać do tego daje nam 0? Co zrobić, jeśli staramy się go dodać do tej liczby? Jedziemy do have-- OK, więc dodajmy. Mamy zamiar mieć jeden plus 1 oznacza 0, a następnie przenosi się. A potem będziemy się 0 ponownie. Dostaję mylić. I masz zamiar się 0 i 0 i 0 i 0 i 0 i 0. Dużo 0-tych. W ostatniej jednej, nie jesteśmy będzie zdolny do przeprowadzenia go, bo powiedzmy, że mamy do czynienia tylko z jednego bajta, więc tylko 8 bitów. Więc to, co komputer robi domyślnie jest po prostu zapomina o tym [niesłyszalne], OK? Więc to jest to, co nazywa się uzupełnienia do dwóch. My po prostu zdefiniować minus 1 za coś tutaj, że jeśli dodać, że do 1 nie daje 0. I to jest bardzo fajne dlatego, że tak naprawdę nie trzeba późno do wdrożenia Inny rodzaj sumy w zależności od tego, czy jest to liczby ujemne lub dodatnie. Czy to ma sens? Więc jedna rzecz, co robimy tu w celu przekształcenia pomiędzy dodatni i ujemny całkowita jest wtedy odwrócić wszystko, a następnie dodać 1 do tej liczby. Jeśli spróbujesz zrobić to sam na kartce papieru, masz zamiar zobaczyć, że ma sens. Ale jeśli wziąć pod ten numer Tutaj jest to pięć. Więc jeśli odwrócić wszystko Tu tak 1, 1, 1, 1, 1. Flip, flip, klapki. A następnie dodać 1 do niego. Mam zamiar dokładnie minus 5 mają. OK? Ten rodzaj ma sens, bo jeśli spróbować podsumować ten z numerem że mieliśmy wcześniej, co was-- niech odwrócić tego ponownie. To było 101 i mnóstwo 0 na. Jeśli spróbujesz dodać te dwa numery razem, będziesz dokładnie 0 mają. OK. Jakieś pytania? PUBLICZNOŚCI: [niesłyszalne] GABRIEL: Co masz na myśli? Publiczność: Negatyw na pozytywne [niesłyszalne]. GABRIEL: Nie, klapki i zawsze można dodać jeden. Tak. OK, więc znaki zakodowane także pliki binarne. Mamy tabeli ASCII, jak ty również widział w wykładzie, prawda? Więc to w zasadzie odwzorowanie rzeczy. I tutaj nie mogę podkreślić wystarczająco że na komputer, a 65 dosłownie to samo. Więc jeśli piszę coś char c jest równa, to może jednocześnie wystarczy napisać 65 tutaj, i to byłby dokładnie taki sam, ok? Nie ma żadnej różnicy. Zwykle mają tendencję do wprowadzenia znaki w zmiennych typu. Char, a nie dlatego, że są w zasadzie się do tego, ale ponieważ ludzkich konwencji. Ale może po prostu do czynienia z liczbami całkowitymi zamiast zmiennych typu char, i wszystko będzie w porządku. Tylko rzeczywista różnica między c char i int i jest to, że int ma cztery bajty w najbardziej systemy, a char ma jeden bajt. Są zasadniczo To samo w odniesieniu do danych. Więc co będzie drukować tutaj? Tutaj mamy do drukowania cyfrę za pomocą printf z plusem 1 i podobnie jak liczby całkowite, znaków można podsumować tak, Znaki mogą być sumowane. Tak to jest dokładnie 65. Więc nie będzie 66, i tutaj mamy 65 oraz mały minus duży, co będzie, ja naprawdę nie wiem. Ale to będzie dokładnie luka między literami i oraz mniejsze litery, więc będziemy się mała, prawda? Tak. Więc to będzie drukować znak, który jest dokładnie ten. Dobry? Jakieś pytania? Tutaj mamy kilka różnych typy zmiennych liczbowych. Już mówić o int. Pływak jest tylko sposobem to-- to jest naprawdę zabawne, bo kiedy pierwszy raz dowiedziałem się zaprogramować z powrotem w dzień z Python, pierwszy program kiedykolwiek próbował pisać, zobaczyłem, że nie było typ nazywany w nazwie typu i pływak. I pływak był dla wszystkich liczb rzeczywistych. Więc zapytałem, dlaczego Kiedykolwiek używać int wtedy? Bo jeśli mogę użyć wszystkich liczby rzeczywiste z pływaka, Chciałbym po prostu przestać używać ints, prawda? Ponieważ są liczbami rzeczywistymi podobnie jak bardziej ogólne. Okazuje się, że jest to nie w przypadku komputerów bo są zasadniczo różne rzeczy. Tak więc całkowite i pływaków, Operacje, które możesz zrobić z nimi są zasadniczo różne, ponieważ na sposób, że są one przechowywane, w porządku? Idziemy porozmawiać trochę nieco więcej o tym za chwilę. Tak właśnie jest dwukrotnie większy pływak. Zazwyczaj w większości systemów, pływak to cztery bajty, podobnie jak int. I podwójne jest osiem bajtów. Dawno to właściwie tylko symbol że dołączenie się do rodzaju, jak int. Mówisz, że długo długo int tak. Long long int x, aby go dłużej. Tak więc w większości systemów, które dadzą osiem bajtów zamiast zwykłej czterech. I rzeczywiście można upuścić w, więc może po prostu powiedzieć długo długo, i że działa też, OK? Możesz też robić inne rzeczy, takie jak unsigned int, lub ponownie tylko niepodpisane będzie działać. I która stałaby być zmienną x jak wszystko jest pozytywna, tak naprawdę nie można mieć negatywne numerów w sposób, który widzieliśmy tutaj. Więc po wspaniałym punkt i precyzji pływających. To jeden z powodów, dla was użyć ints zamiast pływaków, bo ints są w 100% dokładne, prawda? To jest dokładnie to, że liczba. Dla punktów pływających, jeśli Ciebie powiedzieć, odpowiedź jest równa 1 przez 10-- Zdarza mi się mieć dokładnie ten Program tutaj, float.c. Która drukuje do 20 miejsc po przecinku. 1 podzielone przez 10, a zazwyczaj wynosi 0,1, prawda? Ale tutaj, jeśli robimy unosić się, a potem go uruchomić, widzimy, że nie jest to dokładnie 0,1. To 0,149 coś. A to dlaczego? Bo tak naprawdę nie można reprezentować każdy Możliwe rzeczywista liczba pojedyncza w pamięci ponieważ istnieją uncountably wielu z nich. Więc jesteśmy tylko w stanie technicznym stanowią skończoną ilość nimi o skończonej ilości danych. Ale to jest naprawdę interesujące. Teraz błaga kwestia, w jaki sposób będzie go o reprezentowanie to z bitów, prawda? Więc jak pływaki przechowywane? Z liczb to było łatwe. Ale w pływaki chcesz w celu maksymalizacji zasięgu, i chcesz być w stanie reprezentować Bardzo duże cyfry i numery, jak małe 0.000001 w tym samym czasie. Więc znowu, sama gra. Czy ktoś ma jakiś pomysł, jak się dało go o reprezentowanie pływak w pamięci? Wystarczy rzucić wszystko. Tak, proszę. PUBLICZNOŚCI: [niesłyszalne] jako jeśli to dwa ints i jeden jest [niesłyszalne] i jeden byt wszystko po przecinku. GABRIEL: OK, fajnie. Tak więc dwa różne liczby całkowite. Możesz mieć 12,45, więc to 12 i 45. Nicea. Co Ere powiesz? Samo? Tak? PUBLICZNOŚCI: [niesłyszalne] notacja gdzie można oddzielić bazy. GABRIEL: notacja naukowa, tak to jest zwykle to, co się dzieje. Więc to jest to, co nazywa mantysa. To, co jest w rzeczywistości numer, a następnie wykładnik tylko gdzie przecinek jest, prawda? Więc to będzie coś w postaci 1, 2, 3, 4, 5 razy po 10 do minus 4. Właśnie uświadomiłem sobie that-- tak, dokładnie. I wówczas 10 do minus 4 jest będzie określić, gdzie przecinek jest OK? W Brazylii używamy przecinka. Tutaj chłopaki używać kropki. Więc kropka. I to jest fajne, bo wtedy można koncentrować wiele swoich bitów na tego faceta tutaj, na mantysy, a następnie, że jest będzie rzeczywisty precyzja. I można to zrobić albo w postaci dziesiętnej lub układu opartego na binarnym. Istnieją różne sposoby realizacji tego. Pytania? Tak? Publiczność: Ile miejsca po przecinku [niesłyszalne]? GABRIEL: To skomplikowane pytanie, bo to nigdy nie 100% dokładny, bo jak widać tutaj, na niektóre numery to jest w 100% dokładny. Wierzę, że jeśli stawiamy 0,5 tutaj, to będzie w 100% dokładny. To będzie 0,500000. Więc w tym przypadku, jest to idealne. Jednak w innych przypadkach to o wiele mniej doskonałe. Z mojego doświadczenia, jak się do czterech, pięciu miejsc po przecinku jest dość precyzyjne. Jeśli używasz dwukrotnie, to będzie być sposób bardziej precyzyjny niż, OK? ROB BOWDEN: Tak po prostu rzucić trochę więcej kontekst na pływaków, Nigdy nie pamiętam, jak w 100% Spec od pływaków faktycznie działa, ale ja zawsze pamiętać że pływaki zaczną się bałagan. Więc chodzi o to, że kiedy się naprawdę, naprawdę wielkie numery lub naprawdę małe liczby, zaczynamy coraz gorzej na różnicowanie między dwoma bliskimi pływaków. Tak jak lubię myśleć o z zmiennoprzecinkowej niedokładności, są dwa pływaki, które gdy próbuję je określić w ° C, pomimo faktu, że są różne numery, że będziemy mieć interpretowane jako taki sam numer, ponieważ nie możemy przechowywać je w różny sposób. Musimy korzystać z tych samych bitów. I tak, gdy mamy do bardzo, bardzo duża liczba, mówić jak 10 do 300 lub coś, to w tym momencie że od 10 do 300 lub 5 razy 10 do 300 Nie można odróżnić z 7 razy 10 do 300. Więc to jest bardzo duża różnica dwustronnie. Ale wtedy, gdy pojawi się w dół do normalnych rzeczy zasięgu, Ci wydają się być dość dobry w różnicowaniu. I wtedy, gdy pojawi się w dół bardzo małe, ty też się bardzo źle ponownie. Tak jak cała masa 0,0000, robi się bardzo źle. GABRIEL: Tak, tak, szybkie notatki. Nie wolno tego robić. Nigdy nie próbować porównać pływaków używając równych równa, bo nawet jeśli są one niemal tym samym, prawie tak samo nie jest taka sama. Tak więc to, co zwykle robią to odjąć je, wziąć wartość bezwzględną, że i sprawdzić, czy to jest mniejsze niż 0,0001 lub coś w tym stylu, OK? I fajne. Wiem, że wiele osób niektóre tła w Javie, zwłaszcza tych, którzy zrobili Informatyka AP, prawda? I Java to język że w większości oparte na C, ma kilka bardzo duże różnice. Ale dla pętli i IFS, i takie że są one wszystkie tę samą składnię. Mam kilka programów, żeby pokazać. Tak na przykład, proste hello world. To hello world w C, który cię faceci są z pewnością znane, i ten i ten jest w Javie. Tak więc mamy w tym Java public class, hello world, i public static void args głównym i smyczkowych. Args smyczkowych będą do stawienia się w C bardzo krótko. Ale nie idź tam jeszcze. Teraz mamy tutaj nieważne, co oznacza, że głównym nie podejmować żadnych argumentów. A potem mamy System.out.println, i to rodzaj ekwiwalentu dla printf. Tu naprawdę nie trzeba backslash n, ponieważ druk ln robi to za Ciebie. Dołącza odwrotny ukośnik n na końcu linii. Ale jeśli się do coś jak Bo ty Można zobaczyć, że są one prawie to samo. Tak inicjującego oraz stan i aktualizacja is-- brakowało mi miejsca here-- są prawie to samo, z wyjątkiem języka Java ma kilka więcej jak wysoki poziom rzeczy. Tutaj możemy zrobić oraz I i Java automatycznie zrobić to i tutaj, co jest całkowita, do łańcucha, a następnie dodać dwa ciągi razem. Tutaj w C musimy zrobić i% d. Linia tutaj, na wygląda dokładnie tak samo. A jeśli spojrzymy na razie, IFS również wyglądać dokładnie tak samo, prawda? Tak więc prawdziwe są duże różnice w tych rzeczach, które można zobaczyć tutaj. Public static, nieważne, i następnie public class jeśli. Więc co to jest Java ma nazywa maszyna wirtualna. I to jest bardzo mocno oparty na co nazywany jest programowanie obiektowe, co jest bardzo, bardzo często paradygmat programowania w dzisiejszych czasach. A ta klasa jest to, co widzisz, coś z orientacji obiektu, jest utworzyć klasę, a potem ci może pochodzić obiekty z tej klasy. Nie będziemy mówić zbyt wiele o tym w CS50, ale to na pewno coś naprawdę super, zwłaszcza, jeśli chcesz, aby przejść do bardziej zaawansowane tworzenie stron internetowych Na koniec kursu jak złożyć ostateczny projekt i jakieś fajne ramy i rzeczy. Więc w zasadzie chodzi o to, że ty nie chcą, aby ponownie wdrożyć coś, więc stworzyć coś, co jest bardzo ogólne, takie jak kształt, a następnie utworzyć różne kształty z niego, a następnie od każdego z te kształty, tworzyć niektóre bardziej konkretne kształty w trzech wymiary lub coś w tym stylu. Mają one tę hierarchię dziedziczą od pozostałych, więc wszystkie funkcje i zmienne, kształt ma tu duże, wszystkie z nich będziemy mieć, a wszystkie z nich są będzie miał, i tak dalej i tak dalej. Więc to jest idea. C nie ma, ale C ++ ma tego rodzaju funkcji. I Java jest pod silnym wpływem o orientacji obiektu, więc dlatego widzisz Klasa tutaj cały czas. A druga rzecz jest to maszyna wirtualna Java. Więc to, jak sądzę, jest bardzo inteligentny pomysł. Tak więc to, co ludzie, którzy Java nie jest wymyślona oni nie chcą skompilować kod dwa razy gdyby mieli go uruchomić w systemie Windows, lub Mac lub Linux, więc to, co robią prowadzony jest dosłownie coś takiego urządzenia, ale ty nie widzisz, że się dzieje. Więc biegną maszyny wirtualnej wewnątrz komputera, który jest w zasadzie jak mini system operacyjny. I że robocze Celem systemu w życiu jest tylko do uruchomienia tzw kod bajtowy. Więc zamiast w C, sposób, w jaki będzie skompilować to zrobić, jeśli, a następnie uruchom ./if. Zapomniałem backslash. W Javie, należy zrobić w pierwszej kolejności Java C, aby go skompilować, if.c. To nie jest punkt C. Za java. A potem trzeba uruchomić nie ./. Masz ten nowy plik if.class, ale naprawdę nie można Teraz wystarczy uruchomić if.class tak jak to robiliśmy wcześniej. To nie jest wykonywalny. Musisz uruchomić. Musisz podać go do Program o nazwie Java, i że program jest maszyna wirtualna, a następnie zrobić if.class, czy. Tak. I to działa. OK, więc jest to swego rodzaju Maszyna wirtualna dzieje. C nie ma tego, więc jeśli miałbym umieścić ten program w komputerze z systemem Windows, to nie będzie działać w C. W Javie robi. Pytania? Fajne. To, czy dla Super sekcji dzisiaj.