Blog (4)
Komentarze (61)
Recenzje (0)
@WOJEK64Programowanie, algorytmy, logika

Programowanie, algorytmy, logika

30.04.2011 19:24, aktualizacja: 01.05.2011 00:05

Siemka :)

Wpis jest skierowany do osób zaczynających swoją przygodę z programowaniem, które 'zacięły się' pisząc swój pierwszy poważniejszy program. Na potrzeby wpisu założyłem, że chodzi o grę.

1. Mały wstęp

Chciałbyś pewnie pisać gry :) Ok, co robisz? Sięgasz po książkę o C++, czytasz kurs online czy też uczysz się z innych źródeł. Problem jest taki, że gdy po skończonej lekturze robisz sobie kawę i siadasz wieczorem przed komputerem by napisać 'Kółko i krzyżyk', kończysz gapiąc się nieprzytomnym wzrokiem w monitor przez kilka godzin, gdyż, mimo, że znasz język (najpewniej C++), zupełnie nie wiesz jak się do tego zabrać. Możliwe też, że już napisałeś kawałek kodu, ale masz problem natury czysto logicznej i nie masz pojęcia jak zmusić węża do chodzenia w twoim nowym Snake'u ;) Jeśli tak przygotowałem ten wpis (lub serię, zależy jak mi wyjdzie ;) ) specjalnie dla ciebie.

2. Algorytmy

Wszystko co programujesz ma charakter czysto matematyczny, nieważne co - komputer nie rozumie naszego abstrakcyjnego języka i potrzebuje dokładnych instrukcji w jego logicznym (ale to pewnie wiesz), ok musiałem tylko przypomnieć ci teorię :P Problem leży w tym, że większość źródeł dotyczących programowania uczy posługiwania się językiem a nie jego umiejętnego wykorzystania. Przykładowo - mamy planszę do kółka i krzyżyka 3x3, i teraz, jak sprawdzić, nad którym polem znajduje się myszka w chwili kliknięcia? Oczywiście można pisać

// pseudokod:
// 80 - długość boku jednego pola
jeżeli kursor_x < 80 wtedy współrzędna_x = 0
jeśli nie: jeżeli kursor_x > 80 i kursor_x < 160 wtedy współrzędna_x = 1
jeśli nie: współrzędna_x = 2

i tak samo dla kursor_y. Tak zrobiło to kilku moich znajomych, którym dałem to zadanie Ok, wszystko działa, więc o co chodzi? Dajmy na to, że chcesz rozbudować swoją grę tak by plansza miała szerokość 40 pól w każdym kierunku, na pewno teraz bardzo chce ci się pisać 'jeżeli' prawda? ;) A nie prościej:

// pseudokod:
x = 0
powtórz nieskończoność (
jeżeli kursor_x < (x * 80) i kursor_x > ((x * 80) - 80) wtedy współrzędna_x = x i przerwij pętlę

x = x + 1 )

oraz tak samo dla y. Teraz niezależnie od tego ile pól masz, komputer i tak obliczy ci poprawnie w którym polu masz kursor i wstawi tam znak :) Proste? To właśnie jest algorytm. Do dobrego programowania, potrzeba dwóch rzeczy - języka (który zakładam już umiesz) oraz właśnie umiejętności tworzenia, wydajnych, przejrzystych algorytmów i wbrew pozorom to właśnie ta druga rzecz jest ważniejsza.

3. Dalej mi nie idzie, co jest?

No, raczej, bo żebyś tak po prostu po przeczytaniu tego wpisu napisał jakąś super złożoną grę RPG byłbyś geniuszem ;) Proponuję wpisać w Google "zadania logiczne" i spróbować rozwiązywać je pisząc na kartce pseudokody (takie jak moje), do skutku :) Z czasem każdy nabierze wprawy :)

Pozdrawiam, i mam nadzieję, że wpis się przydał :) Jak zwykle jeśli ktoś ma jakieś sugestie co dodać, zmienić niech pisze ;)

Wybrane dla Ciebie
Komentarze (12)