Kto jeszcze nie oglądał wykładów Harvardu z podstaw programowania, zapraszam tutaj: https://javarush.com/quests/QUEST_HARVARD_CS50 =)
Wstęp. Struktura kursu CS50
Przyjaciele! We wstępie przypomnimy (lub opowiemy komukolwiek) o budowie CS50. Kurs trwa 12 tygodni. Co tydzień odbywają się dwa wykłady, a także różnego rodzaju seminaria i wyjaśnienia. Artykuły tego typu opublikujemy, gdy tylko wykłady będą gotowe. Będzie zawierał krótki opis wykładów, notatki dotyczące „krótkich” i dodatkowe informacje, a także tłumaczenia zadań praktycznych. Wykłady tygodnia zerowego obejmowały następujące zagadnienia:- Binarny system liczbowy.
- ASCII
- Algorytmy i myślenie algorytmiczne
- Kompilatory
- Język podstaw
- Wyrażenia logiczne
- Warunki
- Cykle
- Zmienne
- Funkcje
- Tablice
- Strumienie
- Wydarzenia
- Zrozumienie, w jaki sposób informacje mogą być reprezentowane cyfrowo.
- Poznaj podstawowe konstrukcje i koncepcje oprogramowania.
- Stwórz własną animację, grę lub interaktywną aktywność za pomocą Scratcha.
- Zaimponuj swoim znajomym =).
CS50 Tydzień 0 (wykład 1-2): notatki
Algorytmy
Mamy nadzieję, że oglądałeś już wykłady i zrozumiałeś, że algorytm rozbija rozwiązanie problemów (różne problemy, matematyczne czy „jak dojechać do stacji metra N”) na etapy. Co więcej, każdy krok musi zostać ukończony w skończonym czasie, a same kroki muszą być określone. Również następny krok zależy od poprzedniego. Więcej o algorytmach możesz przeczytać na przykład tutaj . Jeśli znasz angielski, oto wspaniała animacja TED autorstwa Davida Malana: https://youtu.be/6hfOvs8pY1k Chociaż ogólnie informacje zawarte w filmie powtarzają się w wykładzie =).Binarny system liczbowy
Mamy 10 palców, a system jest dziesiętny. Oznacza to, że możemy przedstawić dowolną liczbę, niezależnie od jej wielkości, używając liczb 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. W zależności od tego, gdzie liczba znajduje się w liczbie, może to oznaczać różne rzeczy: jeśli ta cyfra jest ostatnia, to znajduje się na miejscu jedności, przedostatnia na miejscu dziesiątek, jeszcze dalej na lewo na miejscu setek i tak dalej. Zasadniczo dowolną liczbę można zapisać jako sumę cyfr, z których każda jest mnożona przez dziesięć do określonej potęgi. W przypadku jednostek - zero. Na przykład 1573 = 3*10 0 + 7*10 1 +5*10 2 +1*10 3 . Liczba, przez którą mnożone są cyfry, nazywana jest podstawą systemu liczbowego. W systemie dziesiętnym podstawą jest logicznie dziesięć. Komputer nie ma palców, ale są dwa stany: warunkowo „prąd płynie” i „prąd nie płynie”, zero i jeden. W związku z tym wszystkie liczby (i w ogóle informacje) w pamięci komputera składają się tylko z dwóch cyfr - 0 i 1. Ich położenie, podobnie jak w przypadku systemu liczb dziesiętnych, wskazuje cyfrę. Dopiero teraz liczbę można rozłożyć na sumę cyfr pomnożoną nie przez potęgę dziesięciu, ale przez potęgę dwójki. 0 w systemie binarnym = 0 1 w systemie binarnym = 1 2 w systemie binarnym = 10 7 10 =111 2 Naucz się konwertować z systemu binarnego na dziesiętny. Prawdopodobnie już rozumiesz, jak to się robi - po prostu bierzemy cyfrę liczby zaczynając od prawej, mnożymy ją przez podstawę do potęgi odpowiadającej jej cyfrze i dodajemy wszystko z każdą cyfrą. Przykład: Znajdźmy dziesiętny odpowiednik liczby binarnej 101101 2 Najbardziej na prawo = 1*2 0 Następne zero = 0*2 1 Trzecie od prawej = 1*2 2 Czwarte = 1*2 3 .. i tak dalej 101101 2 = 1*2 0 + 0*2 1 + 1*2 2 + 1*2 3 + 0*2 4 + 1*2 5 = 1 + 0 + 4 + 8 + 0 + 32 = 45 10 Wyobraź sobie osiem żarówek ustawionych w rzędzie. Każdy z nich ma swój własny przełącznik. Każda z żarówek jest wyładowaniem. Co sobie możesz wyobrazić, pamiętaj o pierwszym wykładzie (tam jest takie urządzenie) lub tutaj jest dla Ciebie widget: http://cdn.cs50.net/2016/x/psets/0/pset0/bulbs.html Play razem z nim ćwicz „wyczuwanie” tego systemu binarnego. Konwersja z systemu dziesiętnego na binarny. Tutaj również wszystko jest bardzo proste, jeśli rozumiesz istotę. Tutaj mamy liczbę 57 10 . Aby przekonwertować go na system binarny, musisz określić, jaka maksymalna potęga dwójki nie przekracza tej liczby. 2 6 = 64. To zdecydowanie za dużo. Ale 2 5 = 32. Teraz określiliśmy najbardziej znaczącą cyfrę. 32 10= 100000 2 . Teraz szukamy kolejnej cyfry. 57-32 = 25. Teraz dla 25 szukamy potęgi dwójki, która nie przekracza 25. 2 4 = 16. Oznacza to, że nasza następna cyfra również jest równa 1. 32+16 = 48 10 = 110000 2 . 57 – 48 = 9. 2 3 = 8, to jest mniej niż 9. Oznacza to, że następna cyfra również będzie równa jedynce. 32 + 16 + 8 = 56 10 = 111000 2 . 57-56 = 1, czyli pozostała tylko jedna potęga 2 0 . Zatem 57 10 = 111001 2 . Jeśli nagle coś pozostanie niejasne, możesz przeczytać więcej w Wikibooku, a jeśli jesteś dobry w języku angielskim, oto mały dodatek do wykładu.ASCII
Komputer rozumie tylko zera i jedynki, a jego pamięć można przedstawić jako bardzo długi ciąg żarówek z przełącznikami, jak widzieliśmy powyżej. Wiemy już, jak przedstawiać liczby w komputerze. A co z resztą informacji? Listy, zdjęcia? Załóżmy, że alfabet angielski ma 26 liter. Oznacza to, że teoretycznie możemy reprezentować litery z liczbami od 0 do 25, tylko w systemie binarnym. Powstaje pytanie: jak możemy zrozumieć, czy mamy małą, czy wielką literę? A co ze znakami interpunkcyjnymi? Niewidzialne znaki, takie jak spacje? Krótko mówiąc, potrzebujemy systemu kodowania, Cap! W latach sześćdziesiątych istniało wiele różnych schematów kodowania znaków. Brak jednolitości okazał się problemem i w 1963 roku Amerykański Instytut Standardów ANSI opracował i wprowadził schemat kodowania ASCII (American Standard Code for Information Interchange). Każdy znak ASCII składa się z siedmiu bitów, czyli siedmiu bitów, z których każdy może przyjmować wartość 0 lub 1. 7 bitów może przechowywać liczby od 0 do 127 w formacie binarnym, co oznacza, że mamy 128 liczb do zakodowania znaków. Wydawałoby się, że to wystarczy, aby zakodować pisaną mowę angielską? Policzmy: az - 26 opcji AZ - 26 więcej 0-9 - 10 ,;:~& i inne znaki interpunkcyjne - 32 I jeszcze jedna spacja. Razem - 95 znaków. Pozostałe 33 wolne opcje są używane dla tak zwanych znaków kontrolnych, takich jak przesunięcie wiersza lub powrót karetki: https://ru.wikipedia.org/wiki/ASCII#/media/File:ASCII_Code_Chart.svg Ważne jest, aby rozróżnić znaki 0-9 i wartości numeryczne 0-9. Znaki 0-9 są reprezentowane przez wartości ASCII 48-57. Warto zauważyć, że cztery skrajne na prawo bity tych wartości ASCII to binarne reprezentacje wartości numerycznych 0-9. Upraszcza to nieco sposób konwersji wartości ASCII na ich rzeczywiste wartości liczbowe. Zaczniemy programować?Zadrapanie
A więc Scratch. Na wykładzie powiedziano Ci o tym wizualnym języku programowania i jego podstawowych poleceniach. Aby samodzielnie wypróbować Scratch, kliknij link i kliknij „Dołącz”. Po zarejestrowaniu możesz rozpocząć programowanie online. Tak, nawiasem mówiąc, dzisiaj Scratch jest częściowo zrusyfikowany. Pomoc jest jednak nadal dostępna w języku angielskim. Jeśli chcesz, możesz zagrać, a także przejrzeć kod projektów studenckich, które zostały zaprezentowane na wykładzie. Oto połów ciasta Pikachu . Lub projekt z sortowaniem odpadów do różnych pojemników: https://scratch.mit.edu/projects/71161586/ David i firma proszą Cię, abyś się nie martwił, jeśli uważasz, że nie dasz rady wykonać tak skomplikowanych projektów: ten poziom wymaga już pewnych umiejętności .Ćwiczenia
-
Aby lepiej zrozumieć procesy zachodzące w Scratchu, możesz pobrać kod źródłowy kilku projektów stąd . Pobaw się i zobacz. Nauka cudzego kodu jest bardzo przydatna. Jest to jeden z najlepszych sposobów, aby dowiedzieć się, co kryje się w programach, do których jeszcze nie dojrzałeś. Gdy zaczniesz rozumieć, jak działają te aplikacje, możesz bezpiecznie przejść dalej.
-
Teraz czas zrobić coś samemu. Wyzwanie polega na tym, aby dobrze się bawić, jednocześnie realizując od podstaw mały projekt. Może to być animacja, gra, interaktywna akcja.
- Program musi zawierać co najmniej dwa duszki (postacie, obrazki), a jeden z nich na pewno nie może być kotem =).
- Muszą istnieć co najmniej trzy skrypty (akcje).
- Musi zostać wykonany co najmniej jeden warunek, jedna pętla i jedna zmienna.
- W programie musi znaleźć się przynajmniej jeden dźwięk.
GO TO FULL VERSION