User Brian
Brian
Poziom 41

Legendarny kurs Harvard CS50 po polsku: Wykład 4 Część 2

Opublikowano w grupie Poland
Legendarny kurs Harvard CS50 po polsku: Wykład 4 Część 1 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 =)
Legendarny kurs Harvard CS50 po polsku: Wykład 5 Część 1
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION