Naucz się programowania na Harvardzie za darmo, siedząc na kanapie - W. 4 Cz. 2

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!