Algorytm

dodoxx6

Były Moderator
Dołączył
Luty 15, 2011
Posty
252
Dla tych którzy niewiedzą nic o programowaniu a chcą nauczyć się w jeden dzień tworzenia gier, pisania programów komercyjnych i robienia wszystkich możliwych udogodnień komputerowych w stopniu perfekcyjnym, to jest niemożliwe.

Jeśli wiesz cokolwiek na temat programowania nic nowego tu nie znajdziesz, piszę to dla tych którzy chcą zacząć pisać programy. Możesz spokojnie dalej nie czytać.


Jak to już wiemy to przejdę do kolejnej informacji tych którzy chcą nauczyć się programowania w dwa dni, to też jest niemożliwe.

Jeśli nadal się nie zraziłeś i nie myślisz że nauczysz się programowania w tydzień to ten poradnik Ci się przyda.

Dodam jeszcze że zanim napiszesz cokolwiek "ładnego" będziesz siedział w wielkich kodach tylko po to aby wyświetlić jakąś "głupią" liczbę, czy nawet cyferkę jeżeli to ciebie nie przeraża to śmiało czytaj dalej.


Zanim nauczysz się jakiegokolwiek języka programowania musisz nauczyć się myśleć w specjalny sposób. Sposób "0" i "1". Tak lub nie nie ma tu rozwidleń na trzy możliwości co najwyżej jedno rozwidlenie a z powstałej drogi kolejne rozwidlenie.

Aby zacząć tak myśleć musisz nauczyć się tworzenia algorytmów. Jeżeli kiedyś ktoś powie Ci że prawdziwy informatyk nie tworzy algorytmów, olej go. Albo nie jest informatykiem albo bardzo kiepskim informatykiem. Właśnie to czego informatyk może nie pisać (tak naprawdę tylko w prostych kodach, ew. skrótowo) jak już nauczy się myśleć w odpowiedni sposób to jest algorytm. Algorytm to sposób w jaki coś funkcjonuje/działa. Może być przedstawiony na tysiąc sposobów ale zasada działania programu nieważne jak nazwana to będzie algorytm.

Aby nauczyć się myśleć musisz nauczyć się tworzyć algorytmy, najprościej będzie bez żadnego języka programistycznego po prostu w języku sztucznym(przez niektórych zwanym "opisowym").

Dobrze zacznijmy od początku:
Co to jest Algorytm:
Algorytm jest to ciąg czynności, które są oparte na warunkach. Podstawowym warunkiem jest wywołanie algorytmu i każdy algorytm musi go posiadać. Ten warunek to np. włączenie programu w języku sztucznym "Start".

Co to jest język sztuczny:
Język sztuczny, to język opisów. żaden komputer go nie przyjmie, ale zrozumie go każdy człowiek.

Jeśli nadal się nie zniechęciłeś czytaj dalej, w innym wypadku porzuć pomysł programowania.

Aby nauczyć się języka sztucznego musisz nauczyć się komend, a oto i one:

Start-Początek programu

Zadeklaruj-tworzy pustą zmienną powinno się pisać zadeklaruj(typ) gdzie jako "typ" podajemy rodzaj zmiennej. A po spacji nazwa tej zmiennej.KAŻDA ZMIENNA MUSI BYĆ ZADEKLAROWANA

Typy zmiennych czyli np. liczby a bardzie konkretnie(czyli tak jak powinno się pisać) liczby całkowite, zmiennoprzecinkowe(jak ktoś używa?), liczby dziesiętne, stringi(zmienna która przechowuje ciąg znaków), tablice rozmaitego typu i co kto wymyśli, w końcu to sztuczny język i jedyny warunek to, to żeby był zrozumiały dla twórcy. Niestety nie będzie już tak prosto w konkretnych językach programowania.

Pobierz - pobierz z klawiatury, zmień na żądaną. Chodzi tu o to że zmienna ma być taka jak chce użytkownik programu. UWAGA! zmienna musi być zadeklarowana.

Wypisz - wypisuje tekst lub zmienną. Jeśli ma wypisać tekst radzę brać go w cudzysłów.

Jeżeli(warunek){} - warunek z który umożliwia zrobienie czegoś (tego co jest zapisane w nawiasie"{}") lub (gdy warunek nie jest spełniony)pomija nawias"{}".

Jeśli nie{}-Jeśli nie spełnione "jeżeli". Po prostu wchodzi i wykonuje zawartość tego nawiasu"{}"(tego oznacza że od "Jeśli nie"). Musi być postawiony bezpośrednio po "}" od "Jeżeli".
Koniec - Zamyka program.

To tyle. Przejdę kawałek dalej.

Aby zmieniać zmienną po prostu piszemy(dla zmiennej "a") a=2+2;.

RADZĘ UŻYWAĆ ŚREDNIKÓW NA KOŃCU WIERSZY (WIERSZ=JEDNO POLECENIE) (OPRÓCZ WIERSZY JEŻELI I JEŚLI) TO PROGRAM ZACZNIE PRZYPOMINAĆ PRAWDZIWY PROGRAM NAPISANY PRZEZ PROGRAMISTĘ)

Teraz trzeba tylko próbować.
Schemat programu wygląda tak:

Start
Deklaracje
Czynności/obliczanie/przetwarzanie
Wypisywanie wyników
Koniec

Jeżeli ktoś faktycznie PIERWSZY raz ma styczność z programowaniem to proponuję aby sprawdził czy rozumie i napisał jakiś kod prosty w komentarzu. Obliczanie pola prostokąta o zmiennych bokach. Lub jeżeli czegoś nie rozumie pytał.

Jeżeli ktoś kto miał styczność z programowaniem nie rozumie czegoś to pytać śmiało.
Jeżeli poradnik się przyjmie może zrobię kolejną część.

dodoxx6​
 

loganek

Były Moderator
Dołączył
Listopad 11, 2006
Posty
563
hmm, pierwszy raz spotykam się ze stwierdzeniem "sztuczny język". czy nie częściej spotyka się nazwę "pseudokod"?
 

dodoxx6

Były Moderator
Dołączył
Luty 15, 2011
Posty
252
Różnie ludzie mówią. Wydaje mi się że "sztuczny język" jest bardziej przyjazne dla osób które zaczynają programować. "Pseudokod" ma taki wydźwięk negatywny i odrzuca.
 

dodoxx6

Były Moderator
Dołączył
Luty 15, 2011
Posty
252
Masz pewnie rację, choć ja spotykam się z tą nazwą i z tą nazwą. Wybrałem to określenie ponieważ bardziej zachęca moim zdaniem do kontynuacji nauki. Ale nie to jest głównym wątkiem, i chyba to w sumie nie ma większego znaczenia.

Może jakieś uwagi na temat artykułu?
 
Ostatnia edycja:

widmo17

Były Moderator
Dołączył
Lipiec 16, 2007
Posty
1089
Aby nauczyć się języka sztucznego musisz nauczyć się komend
`Język sztuczny` jest definiowany przez piszącego, ja na przykład jak robię rozpiskę nie piszę `start` `koniec` `definiuj` etc, bo po prostu mi się nie chce, Ty tutaj opisujesz coś jak uproszczony schemat blokowy. Dobry art.
 

dodoxx6

Były Moderator
Dołączył
Luty 15, 2011
Posty
252
Masz rację. Ja też nigdy nie deklaruję zmiennych, czy nie piszę "START"/"KONIEC". Jednak osoby początkujące powinny to robić, to pomaga zrozumieć mechanikę programu i kod staje się bardziej przejrzysty, jak się nauczą to będą edytowali język tak aby był przydatny dla nich. A co do schematu blokowego to jest to faktycznie schemat blokowy tylko bez graficznego rozrysowania, przypomina to bardziej kod.
Ps
Dzięki.
 

proxima

Były Moderator
Dołączył
Marzec 9, 2007
Posty
651
Az nie moglam sie powstrzymac od komentarza
ktos kto nie ma pojecia o programowaniu nie bedzie wiedzial o czym tu napisales, zagmatwales strasznie, poza tym mylne sa Twoje zalozenia odnosnie algorytmów. Wprowadzasz w blad twierdzac, iż kazdy informatyk to programista. Jezyk jakiego tu uzywasz pozornie wyglada na profesjonalny jednakze...sa to tylko pozory. Odnosze wrazenie ze nie masz zbyt duzego pojecia o programowaniu a starasz sie nadrobic odpowiednim 'tonem'.
Nie ma tu zadnych informacji przydatnych dla poczatkujacego programisty.
Art wg mnie kompletnie nie nadaje sie do publikacji
 
Ostatnia edycja:

grzonu

Były Moderator
Dołączył
Grudzień 26, 2006
Posty
1390
Jeśli chodzi o algorytmy to zapomniales w zasadzie o najwazniejszym czyli o zlozonosci algorytmow ze jedna czynnosc mozemy wykonac ze zlozonoscia stala,logarytmiczna,liniowa,potegowa,wykladnicza. przykladowo sortowanie mozemy zrealizowac ze zlozonoscia O(n^2) (bąbelkowe) albo O(n*log n) (quicksort)
Pozatym lepiej uzywac pseudokodu ktory jest juz ogolnie przyjety np. pascalo-podobny albo pythono-podobny.
 

dodoxx6

Były Moderator
Dołączył
Luty 15, 2011
Posty
252
Nie, nie próbuję nadrabiać 'tonem'. A informacja ważna dla początkujących z tego artykułu płynie taka że nie nauczą się programowania od razu, dowiadują się tego czego muszą zacząć się uczyć na początku. Jeżeli nie zrozumieją artykułu w całości to przynajmniej wiedzą gdzie szukać. Myślę jednak że większość zrozumie. Może ktoś kto to przeczyta myśląc że nauczy się tworzyć gry to albo zrezygnują albo zaczną uczyć się podstaw - myślenia. Może będzie mniej "programistów" kopiujących kody z internetu i dziwiących się dlaczego nie działa. Napisałem to aby mniej osób nie potrafiących napisać "Hello Word!" brało się za wielkie projekty.
Edit:
Grzonu wydaje mi się że pisanie o złożoności może lekko przestraszyć kogoś kto miałby mieć pierwszy raz styczność z programowaniem. Poza tym używanie pseudokodu jakiegoś języka wymaga poznania jego poleceń które nie są "naturalne" i wymagają większego wkładu pracy co może tylko utrudnić. Chciałem aby zaproponowany przeze mnie język był przyjazny dla tych którzy się nie poddadzą.
 
Ostatnia edycja:

grzonu

Były Moderator
Dołączył
Grudzień 26, 2006
Posty
1390
Ale trzeba od poczatku uczyc dobrych nawykow. Zeby potem nie bylo zaskoczenia ze mam program ktory np. generuje liczby pierwsze i po 10000 iteracji program zwalnia tak ze w zasadzie jest bezużyteczny bo ma zlozonosc n^2 kiedy mozna to napisac ze zlozonoscia n*sqrt(n) przy niewielkiej optymalizacji a mozna zejsc nawet do n przy zastosowaniu np. sita eratostenesa.
A co do pseudokodu ... jak nie nauczysz sie od poczatku przyjetego standardu to nie zrozumiesz zapisu przyjetego w zadnej ksiazce ani w internecie
 

D0han

Były Moderator
Dołączył
Lipiec 27, 2005
Posty
975
Nie wniosłeś tym tekstem nic konkretnego. Jeśli chciałeś dać nowym pojęcia które powinni znać - to zrób to, ale przejrzyście. Teraz widzę wszystko i nic, jakaś papka przeplatana fajnymi i trochę mniej fajnymi wyrazami.
 

RobertG

Użytkownik
Dołączył
Styczeń 3, 2007
Posty
391
Hej,

nie do końca się zgadzam, że przygodę z programowaniem zaczyna się koniecznie od poznania istoty algorytmów i ich zapisu, można również zacząć od zebrania wymagań, celów, które ma spełniać dany program, stworzenia ich opisu, nauczenia się ich analizy, a później dopiero przejść do kwestii jak opisać jak to ma działać (tak też powstaje sporo (jeśli nie większość) komercyjnego i otwartego softu, że zaczyna się od analizy po co takie coś komu, co można z tego zyskać etc). Przykładowo piszesz kalkulator, zaczynasz od zastanowienia się co ma liczyć, +,-,*,/, czy też sin(), cos(), spisujesz sobie to gdzieś, rozmawiasz o tym, etc.

Dla początkujących od zapisu, który proponujesz łatwiejszy może być zapis graficzny. Mogą to być diagramy, które rysuje się w LO, czy na początku studiów (nie wiem, czy to ma jakąś swoją nawę) niektóre z diagramów UML, lub nawet własny (oparty o jakieś określone zasady) zapis graficzny.

Co do algorytmów i tego, że każdy prawdziwy informatyk (tu w kontekście chyba chodziło o programistę), to co to znaczy prawdziwy? ;) Sporo softu to wykorzystywanie gotowych bibliotek, komponentów, wzorców projektowych, idiomów etc. Często najszybciej i najlepiej złożyć coś "z klocków", niż wymyślać (często już wymyślone) algorytmy. Również wielu programistów (może i większość pomijając aplikacje webowe) pracuje utrzymując stare projekty, gdzie wymyślania/implementowania nowych algorytmów jest mało, a czas poświęca się na co innego. IMHO to też prawdziwi programiści ;)

"Zanim nauczysz się jakiegokolwiek języka programowania musisz nauczyć się myśleć w specjalny sposób. Sposób "0" i "1". Tak lub nie nie ma tu rozwidleń na trzy możliwości co najwyżej jedno rozwidlenie a z powstałej drogi kolejne rozwidlenie."
To co z algorytmami opartymi o logikę wielowartościową lub rozmytą? ;]

Wg. mnie język, który opisujesz można by uprościć: konstrukcję "jeśli nie(){}" można zapisać jako jeśli(){}, zaś samą negację zawszeć w treści warunku.

IMHO artykuł jest nawet OK, dla początkujących chcących poszerzyć swoją wiedzę.
 
Ostatnia edycja:
Do góry Bottom