Część 2: http://torg.pl/showthread.php?429529...=1#post6857110
Część 3: http://torg.pl/showthread.php?429529...=1#post6863691
Część 3, zadanka: http://torg.pl/showthread.php?429529...=1#post6870136
Otrzymałem papieskie namaszczenie od Plutona, że mogę stworzyć tego typu temat w tym dziale.
Z racji tego, że zainteresowanie dot. programowaniem jest dosyć spore, chciałbym trochęWam pomóc i stworzyć dobry i ciekawy temat, gdzie wspólnie nauczylibyśmy się trochę programować.
Dla kogo jest ten temat?:
Jeżeli:
- Lubisz kombinować, myśleć nad ciekawymi, logicznymi problemami i nie boisz się korzystać z matematyki
- Interesują Cię komputery, jak działają i do czego można ich kreatywnie użyć
- Chcesz zająć się dziedziną, która jest bardzo satysfakcjonująca, a przy tym może przynieść Ci trochę hajsu
- Umiesz mówić po angielsku. To niestety będzie spora przeszkoda, jeżeli nie będziesz tego potrafił
- Jesteś w stanie dać temu trochę wolnego czasu
To programowanie jest spokojnie dla Ciebie. Ogólnie, tworzenie programów to fajne i ciekawe zajęcie. Niestety, niektórzy nie wiedzą jak zacząć i postaram się Wam w tym trochę pomóc.
Przede wszystkim, zaczniemy od rozwiązywania prostych logicznych i matematycznych zagadek, korzystając z różnych języków programowania. Po drugie, postaram się wrzucić Wam kilka zadań. Po trzecie, będę wrzucał sporo (dobrych) materiałów. Po czwarte doradzę trochę, korzystając z mojej wiedzy. Jeżeli możecie, wrzucajcie też tutaj jakieś ciekawe zadania.
Zacznijmy więc.
- Jaki język programowania wybrać?
Język programowania jest tak naprawdę jedną z najmniej znaczących rzeczy w programowaniu. Dobry programista jest raczej niezależny od technologii - bardzo dobrzy potrafią być nawet niezależni od komputera i korzystać tylko z kartki papieru ;). Niemniej jednak, musicie stawić pierwszy krok, aby stworzyć pierwszy program w życiu.
Na start polecam jeden z tych trzech języków (wybierz dowolny):
- C - bardzo prosty, popularny i stary język programowania. W tym języku można tworzyć bardzo szybkie programy, kosztem tego, że musimy zajmować się technicznymi szczegółami - sami zarządzamy pamięcią komputera, musimy mówić czym jest obiekt, na którym operujemy (typ). Składa się z bardzo niewielu elementów i nauka go jest bardzo szybka. Niestety, jest prosty, ale nie łatwy - potrafi sprawić duże kłopoty. Języki takie jak C nazywamy językami niskopoziomowymi. Ten kierunek polecam osobom, które bardziej interesuje to, jak działa komputer "technicznie".
- Python - popularny język programowania, który jest łatwiejszym odpowiednikiem C. Nie trzeba się przejmować technicznymi szczegółami (jest na o wiele wyższym poziomie niż C), jest bardziej intuicyjny kosztem wydajności. Ten kierunek polecam ludziom, którzy bardziej są zainteresowani rozwiązywaniem problemów, niż technikaliami.
Generalnie, jeżeli nie możesz się zdecydować, wybierz Pythona. Będzie Ci na początku troszkę prościej. - Jak przygotować sobie środowisko do pracy? (Windows):
Aby programować w dowolnym języku, będzie nam potrzebne środowisko. Składa się ono zazwyczaj z edytora tekstu, dodatkowych narzędzi do pracy z językiem oraz kompilatora (C), lub interpretera (Python).
Z racji tego, że większość ludzi tutaj korzysta zapewne z Windowsów, postaram się wytłumaczyć w prosty sposób, jak zainstalować sobie środowisko do programowania w którymś z tych języków.
Dla C, zainstaluj Code::Blocks (http://www.codeblocks.org/downloads/26). Wybierz wersję mingw, ponieważ tylko ona instaluje kompilator wraz ze środowiskiem (bez tego nie przekształcisz kodu z C w program EXE). Instalacja jest bardzo prosta i sprowadza się do Next -> Next -> Next...
Dla Pythona, zainstaluj instalkę interpretera (http://python.org/download/). Po tym fajnie by było, żebyś zainstalował sobie jakiś edytor tekstu dla programistów. Dobrym pomysłem będzie http://www.sublimetext.com/2 lub http://notepad-plus-plus.org/. Python ma tzw. REPL, czyli malutki programik, który bierze Twój kod i od razu pokazuje Ci wynik każdej z operacji. To bardzo przydatna rzecz podczas nauki. - I co teraz?
Teraz warto sobie powiedzieć, w jaki sposób możemy sobie myśleć o tym, czym jest program.
Bardzo upraszczając, program to ciąg instrukcji, które przetwarzają wprowadzone przez użytkownika dane i zwracają jakiś wynik. Program operuje na pamięci komputera. Możemy sobie o niej myśleć jako o ogromnej szafie, w której mamy miliardy małych szuflad. Do tych szuflad wkładamy różne rzeczy - w programach będą to jakieś liczby, znaki (a, b, c) i tak dalej. W każdym razie, pamięć przechowuje informację. W technicznym sensie, pamięć dzieli się na bity - słynne zero-jedynki. Niemniej jednak, będziemy myśleć o tym jako o szufladach, bo tak jest o wiele prościej.
Instrukcje mówią nam, w jaki sposób zmieniamy pamięć naszego programu. Na najniższym poziomie, sprowadzają się one do instrukcji typu "Ustaw 8 do szuflady nr 28192". My jesteśmy jednak ludźmi, nie maszynami. Dlatego też, naszą pamięć modyfikujemy, stosując znane nam z podstawówki operacje - dodawanie, odejmowanie, dzielenie, mnożenie. Pozostaje jednak pytanie co mamy dodawać, odejmować itd.
(Prawie) każda instrukcja jest wyrażeniem w języku programowania. To oznacza, że taka instrukcja bierze nam kawałek kodu i daje nam jakiś wynik. Instrukcje w języku C są oddzielone średnikami ";". W przypadku Pythona, każda instrukcja jest w nowej linii.
Jeżeli jesteś Pythonistą, uruchom swój interactive shell i spróbuj napisać:
Kod:2+8 3*4 1*2*3*4*5 "Maciek" "Mama" "Pluton nie umie parkowac rownolegle"
W językach imperatywnych (takich jak Python czy C), modyfikujemy zmienne. Zmienna to taka nalepka na naszą szufladę - my mówimy w programie "chcemy szufladę i będziemy o niej mówić jako szuflada x)", a system daje nam taką szufladę. Teraz kiedykolwiek będziemy chcieli pogrzebać w naszej szufladzie, będziemy mówić "zrób coś z [szufladą] x". Takie coś nazywamy deklaracją zmiennej. Dopiero, gdy powiemy programowi co w tej szufladzie jest, będziemy mogli mówić o definicji zmiennej.
W C dodatkowo musimy wraz z szufladą określić jej rozmiar. Mówimy to nie wprost - czyli mówimy "chcemy szufladę, która pomieści nam <coś>". Kompilator (czyli nasze magiczne urządzenie zamieniające kod na EXE) wie, jak dużą szufladę (ile bajtów pamięci) potrzebujemy, żeby pomieścić nasz typ zmiennej. W Pythonie nie przejmujemy się takimi szczegółami.
Praktycznie, w językach programowania to o czym mówię wygląda tak:
C:
Kod:int x; // "Daj mi szufladę, która pomieści liczbę całkowitą i nalep na nią etykietkę x." - deklaracja x = 12; // "Do mojej [szuflady] x wrzuć liczbę 12" - definicja // możemy też to połączyć - int x = 12; Jest to deklaracja z definicją zmiennej.
Kod:x = 12 # W Pythonie nie ma samej deklaracji - jest tylko deklaracja z definicją.
Ogólnie, definicja zmiennej ma postać:
Kod:<zmienna> = <wyrażenie>
Czyli, np. w C:
Kod:int x = 12; int y = x * 2; // Zdefiniuj y jako wartośćx razy dwa.
Kod:x = 12 y = x * 2
Zadania:
Żeby nauczyć się programować, należy... programować. To bardzo proste stwierdzenie to niestety deklaracja bólu i krwi. Podrzucę Wam kilka zadanek, które powinniście zrobić na sam początek, a potem sukcesywnie będę dodawał nowe.
- <C> - Zdefiniuj zmienne typu int (liczba całkowita). Nadaj im nazwy x, y, oraz z. Korzystając z magicznego zaklęcia, które wypisuje na ekran:
Kod:printf("%d\n", <wyrażenie zwracające int>);
Program w C dla Ciebie ma teraz wyglądać tak:
Kod:///////////// Magiczne zaklęcia: #include <stdio.h> int main(void) { <tutaj wpisz swój kod> return 0; }
- <Python> - To samo zadanie, przy czym pomińmy część odpowiedzialną z niezdefiniowanymi zmiennymi (nie da się ich stworzyć w pythonie). Dla Pythona magicznym zaklęciem wypisującym na ekran jest:
Kod:print <wyrażenie>
Jeżeli okienko konsoli mignie i zniknie, dodaj na końcu pliku py magiczne zaklęcie:
Kod:input()
- <C/Python> Wyciągnij kartkę papieru. Spróbuj pomyśleć nad zadaniem:
[code]
Pluton jeździł po wrocławskim rynku swoim samochodem. Wcześniej, parkując równolegle naczynił szkód na łączną kwotę 69873 zł. Dzisiaj jest poniedziałek. We wtorek Pluton dorzucił do rachunku 891 zł, w środę zaś skasował BMW miejscowego gangstera z Opola (ksywa Torg User) i musiał dać 67332 zł każdemu z 8 gangsterów, którzy przyszli spalić mu chatę po tym incydencie. W czwartek umarła jego ciotka, więc jego dług zmniejszył się czterokrotnie. W piątek postanowił podliczyć koszty. Z racji tego, że nie umie programować, poprosił Ciebie o pomoc. Dla ułatwienia dodajmy, że zniknęły wszystkie kalkulatory we Wszechświecie. (Zaraza jakaś, czy coś.)
Zaczynając od instrukcji:
Kod:
int dlugPlutona = 69873;
Kod:
dlugPlutona = 69873
Zapraszam do dzielenia się rozwiązaniami, ale proszę je zaciemnić, żeby nie spojlerować ;). Proszę też wymieniać się pytaniami - ogólnie będę starał się pomagać, ale też nie mam wiele czasu, także fajnie by było, żebyście sobie pomagali nawzajem.
Temat będzie rozwijany, powodzenia! Proszę też o ewentualne opinie ;).
Pozdrawiam
Killavus
Zakładki