Witamy ponownie na Harvardzie! Oto CS50 i CodeGym. Nowy wykład już na Ciebie czeka!
W tym filmie kontynuujemy rozmowę o strunach i wskaźnikach:
- Jak już wiesz, ciąg znaków (string) w C bez biblioteki CS50 to po prostu znak (char) *
- Co się dzieje, gdy kopiujesz ciąg (string) i zmieniasz kopię? Czy oryginalny ciąg znaków i kopia są skierowane na ten sam adres? Jak zrobić kopię, która ma swój własny adres?
- Co to jest strcpy w C?
- Funkcje malloc() i free(): więcej o pracy z pamięcią
- Jeśli nigdy wcześniej nie programowałeś, możesz nie wiedzieć, jak ważny jest proces debugowania. W C. jest specjalne narzędzie do debugowania o nazwie valgrind i teraz dowiemy się, jak ono działa.
- Czy kiedykolwiek słyszałeś o przepełnieniu bufora? Jeśli nie, to będzie Twój pierwszy raz z tym problemem.
Ta część wykładu z czwartego tygodnia jest poświęcona strukturze pamięci i sposobom jej wykorzystania w różnych częściach programu. Dowiesz się:
- Jak działa pamięć komputera. Gdzie znajduje się kod maszynowy i zmienne globalne, jak używać sterty (heap) i stosu (stack) oraz jakie istnieje między nimi połączenie. Przepełnienie sterty a przepełnienie stosu.
- Jak funkcje C wykorzystują kopiowanie danych wejściowych i jak sobie z tym radzić we właściwy sposób. Posługując się funkcją swap jako przykładem, David Malan pokaże, jak funkcje w C współpracują ze zmiennymi i jak ich poprawnie używać.
- Funkcje działają z kopiami zmiennych. Jeśli potrzebujesz (a na pewno potrzebujesz!) pracować z oryginałami, możesz to naprawić za pomocą wskaźników!
- Skąd wziąć pamięć? Co to jest przepełnienie sterty i w jaki sposób jest to połączone z funkcją malloc()
- Jaka część pamięci jest używana przez funkcje w programach podczas ich wywoływania?
Ostatnia część 4. tygodnia wykładu CS50 podsumowuje naszą wiedzę na temat pamięci komputera.
- Pamiętasz zestaw kół szkoleniowych w bibliotece cs50.h, na przykład funkcję get_int? Wszystkie mają do czynienia ze wskaźnikami. Nic dziwnego! Teraz możesz samodzielnie zaimplementować analogię tej funkcji, używając scanf ze standardowej biblioteki C. stdio.h.
- Co to jest wskaźnik NULL i do czego się go stosuje.
- Wróć do przykładu książki telefonicznej i rozwiąż problem wyszukiwania w nowy sposób, korzystając z zewnętrznych plików i wskaźników.
- Czy zastanawiałeś się kiedyś, jak komputer definiuje typ pliku? Czy to tekst czy obraz i jaki to rodzaj tekstu lub obrazu? Jeszcze jeden fascynujący i naprawdę korzystny przykład: David napisze program do otwierania pliku i sprawdzania, czy jest to JPEG, czy nie. Dowiesz się więc, jak komputer „widzi” ten format.
- Na koniec wykładu David zademonstruje „nie-science fiction” niektórych filmów. Być może widziałeś jeden z nich: specjalista komputerowy próbuje rozpoznać niewyraźne zdjęcie o niskiej rozdzielczości zrobione kamerą uliczną, aby złapać przestępcę. A potem raz po raz powiększa obraz i nagle, przy takim powiększeniu, najdrobniejsze szczegóły stają się nagle widoczne! Uważamy, że ukończyłeś już wystarczająco dużo kursu CS50, aby nie wierzyć w taką fikcję. Dlaczego to tutaj napisaliśmy? Ponieważ w niektórych krajach publikowanie klipów filmowych jest zabronione i możesz tego nie zobaczyć w wideo CS50. Więc może nie zobaczysz go na wykładzie, ale dowiesz się jakie jest pointa i o co w tym wszystkim chodzi.
// uwaga: jeśli pojawi się slajd lub podtytuł:
Oto ujęcia z filmu, w którym mały obraz był powiększany w nieskończoność, aby znaleźć dowody. Zapamiętaj! To jest nierealne =)
***
Kolejny wykład pojawi się na polskiej grupie CodeGym. Nie przegap!
Jeśli chcesz, żebyśmy do Ciebie wołali, kiedy pojawi się następny odcinek - zaplusuj ten wpis.
Bądź na bieżąco i powodzenia w nauce!
Komentarze (101)
najlepsze
@nserdon: a ja się nie zgadzam, uczenie się nowej rzeczy jest trudne a uczenie się nowej rzeczy w języku innym niż ojczysty ekstremalnie trudne.
Można mówić po angielsku na B2 łamanym przez C1, czytać bez większego problemu ale nie zmienia to faktu że przyswoisz wiedzę
Praca w IT polega na wydajnym uczeniu się, fakt. W jaki sposób uczenie się w obcym języku ma tu pomóc?
Język i tak przyjdzie z czasem, natomiast przebicie się przez pierwsze 3-6 miesięcy nauki czyli ten okres w którym jest najtrudniej (nic nie wychodzi, a nawet jak wychodzi to uczeń nic nie rozumie) jest kluczowe. Potem już z górki i jak ogarniesz o co
Mam 5000zl oszczednosci i moglbym je przeznaczyc na kursy by zostac informatykiem.
Komentarz usunięty przez moderatora
Komentarz usunięty przez moderatora
XD
Komentarz usunięty przez moderatora
Komentarz usunięty przez moderatora