środa, 21 września 2016

Mój pierwszy raz z C++




Hejo!

Podobno pierwszy raz nie zawsze jest taki fajny, jak sobie go wyobrażamy. Mój pierwszy raz z C++ nie był tragiczny, aczkolwiek nie będę ukrywać, że wymagał ode mnie skupienia, dokładnego analizowania przekazywanej wiedzy oraz pewnego myślenia abstrakcyjnego.

Okay, żeby nie przedłużać - naukę rozpocząłem z opasłym tomiskiem Jerzego Grębosza "Symfonia C++ Standard". Pan Jerzy jest fizykiem, który dzięki swoim doświadczeniom z kraju, jak i zza granicy podjął się karkołomnego zadania nauki języka C++ zarówno dla początkujących amatorów, jak i doświadczonych programistów. 

Sama książka pisana jest językiem prostym ale wymaga pełnego zaangażowania oraz uwagi. Nie będę opisywać poszczególnych kroków, know-how etc. Podzielę się tym, czego się nauczyłem. Niesprawiedliwością byłoby pisać, że bazuję tylko na książce. Na YT jest mnóstwo fajnych tutoriali, kursów dla początkujących (zarówno po PL, jak i MASAAAA po angielsku). Nie wstawiam żadnych linków, wujek google pomoże Wam bezproblemowo znaleźć poszczególne kursy w ułamku sekundy - dla każdego coś dobrego. 

Okay. Nie wiem jeszcze, jakie będą formy moich postów ale raczej założyłem, że będą to luźne burze mózgów, które pomogą przede wszystkim mi powrócić oraz usystematyzować wiedzę, jaką nabywam. Nie traktuj tego, jako poradnika etc. bo sam jestem prawie tak samo zielony, jak Ty (zakładając, że nie jesteś nerdem).

Na każdej z lekcji wypisuję sobie w swoim słowniczku przydatne wg. mnie pojęcia. Pierwsza tura? Proszę bardzo.

##############################

Mój słownik programistyczny + wolne myśli.

#iostream - załączamy ją na początku kodu, jest to oczywiście biblioteka standardowa zawierająca wiele użytecznych funkcji stosowanych w programach konsolowych. IOstream w nazwie to nic innego jak "intput" oraz "output" (wejście, wyjście), a stream to oczywiście "strumień" (dop. danych).

using namespace std; - biblioteka używa nazw przestrzeni standardowych (std::) - ta linia ułatwia nam znacznie pracę, nie wywierając na nas przymusu wpisywania komendy std:: przed każdą linią kodu (np. przez wyjściem danych na ekran w cout - console output).



IDE - Integrated Develepment Environment - zintegrowane środowisko programistyczne. Konkretnie jest to zestaw zawierający aplikację do edycji plików źródłowych (tekst źródłowy) oraz kompilator (ja rozumiem to jako "rusztowanie", które będzie potrafiło przetłumaczyć język źródłowy na język maszynowy czyt. procesor komputera, tak, by ten mógł go poprawnie zinterpretować i uruchomić (tak, to jest ten sławny kod "zero, jedynkowy"). Kompilator to najważniejszy element IDE! W programie CodeBlock kompilator nazywa się GNU "GCC" i jest podpięty już pod paczkę instalacyjną (przedrostek GNU oznacza licencje, na jakiej kompilator został wypuszczony w świat. Ta sama licencja, co jądro linuksa - ciekawostka.

Debugger - dosłownie, odpluskwiacz. Jest to funkcja, program, która pozwoli nam przetestować działanie naszego programu, który wcześniej zapisaliśmy w języku źródłowym (w tym przypadku w .cpp (C++).

#W samym języku C++ komenda "\n" (od ang. n- nen line!)w określonej funkcji będzie służyć jako wordowskie ENTER (albo komenda <br> w HTML5 ;))! 

#nawiasy klamrowe "{}" będą służyć nam do "spinania" określonej funkcji. Tzn. nawiasami klamrowymi opisujemy zadania dla danej funkcji. Każdą linię kodu zaś kończymy pośrednikiem ";", który jest zwany także teminatorem (i'll be back, hłehłe). 

#komentarze w tekście źródłowym (które będą pomijane przez kompilator) oznaczamy znakami \\ (dlaczego wszystko musi być tutaj w odwrocie do HTML5? :<). Warto stosować komentarze, ponieważ często pozwolą nam one cofnąć się do określonej linii kodu, pozwalając nam szybciej zapoznać się tym, co mieliśmy na myśli ją tworząc (wybaczcie składnie, piszę na gorąco).

#funkcja main to nic innego jak zestaw zadań w tej funkcji do wykonania w naszym programie. 

#zmienne w funkcji main, które właśnie poznaję to: "int" oraz "double". Zmienne te mogą mieć nadawane nazwy. W przykładzie z książki program, jaki będziemy pisać będzie programem, który przelicza wartości stóp angielskiech na metry. I tak w funkcji main () zmienne "int" oraz "double" to kolejno stopy oraz metry, tak, bym mógł łatwo zdefiniować zastosowanie tych zmiennych : ) Należy pamiętac, aby nazwa nie zaczynała się od cyfry! Mogą to być długie znaki oraz podkreślniki ("_"). Odradza się zaczynania nazw od "_" (kompilator może uznać ten znak za zupełnie inną komendę), nie używa się również litery "O", bo jest mylona z cyfrą "O" oraz małej litery "l", bo może być pomylona z cyfrą "1". Reasumując, nazwy, jakie nadajemy są wazne, bo będą odnościć się do naszych obiektów (operatorów = zmiennych oraz stałych). 

Należy pamiętać, że zmienne to nic innego, jak przechowywane dane. Zmienne nazywają się zmiennymi dlatego, że mogą być.. zmienne. Tzn. ich wartość (liczbowa, prawda/fałsz etc.) może się zmieniać wraz z postępującymi działaniami w poszczególnych liniach kodu.

W JĘZYKU C++ KAŻDA NAZWA MUSI ZOSTAĆ ZADEKLAROWANA ZANIM ZOSTANIE UŻYTA! DEKLARACJA MÓWI, JAKIEGO TYPU JEST TO, CO NAZWALIŚMY DANĄ NAZWĄ! a teraz napisz milion razy słowo ZADEKLAROWANA, zadeklarowana, zadeklarowana, zadeklarowana, zadeklarowana, zadeklaro... 

Nazwa zmiennej "int" (od angielskiego integer - liczba całkowita, integralna, niepodzielna) przechowuje wartości liczby rzeczywistej - inaczej liczby zmiennoprzecinkowej. Te zmienne w naszym programie są typu "double" - są to zmienne zmiennoprzecinkowe o podwójnej precyzji, stąd: 

w funkcji main ()

int stopy; - tak określamy typ danej zmiennej
double metry; - podobnie, jak poprzednio.

= - jest to operator przypisania,
== - jest to perator porównania (użyłem go w funkcji if, podczas ćwiczenia z symulatorem bankomatu)
!= - jest to operator mówiący o tym, że coś nie jest czemuś równe. Warto uprościć sobie naszą funkcję, gdzie zamiast kopiować ponownie operator, można użyć zaprzeczenia komendą "else".
&& - operator "i".
|| - spójnik logiczny LUB. bardzo ważny operator mówiący o tym, że jeden z warunków (X)(Y) może być spełniony. Nie mylić go z "&&" ponieważ naraz nie wpiszemy X oraz Y, prawda? 


################################

A teraz, żeby nie było, iż wiedza jest pogrążona w chaosie pozwolę sobie wrzucić printcreeny pierwszych programów, jakie napisałem w Code Blocksie. Są to banały i podstawy, których jednak nie chcę bagatelizować. Wychodzę z założenia, że lepiej gruntownie przelecieć przez podstawy, tak, by w bardziej skomplikowanych operacjach mieć mocny punkt odwołania i na tej podstawie samemu kombinować co jest pięć.

Pierwszy program, jaki napisałem (przy pomocy kursu YT) to proste wyjście informacji cout (console out) na ekran konsoli. Była to prosta wiadomość, która z założenia ma pomóc nam przywitać się ze światem za pomocą języka, którego używamy. 

Hell0_w0rld!


Kod źródłowy mojego pierwszego programu. Używam darmowego IDE - Code::Blocks - wygoogluj sobie. Pobierając pobierz wersję grubszą z kompilatorem!

Po kolei od góry do dołu, od lewej do prawej (w takiej kolejności kompilator przekłada język programistyczny na język maszynowy).

1. W pierwszym wierszu zainkludowaliśmy bibliotekę i(nput)o(utput)stream. Jest to podstawowa biblioteka, która pozwala na podstawowe operacje z kodem źródłowym. 


3. W trzecim wierszu użyłem komendy znacznie upraszczającej mi życie. Zakłada, iż każda z poniższych linii kodu będzie interpretowana przez kompilator jako std:: (pozwala to znacznie skrócić pracę). namespace std:: pozwala poinformować kompilator, że chcemy aby wszystkie funkcje, klasy i szablony należące do przestrzeni nazw nie wymagały przedrostka. Wyraz występujący po tych dwóch słowach kluczowych jest istniejącą nazwą przestrzeni. Dla standardowych bibliotek C++ jest to właśnie std::.

5. Piąty wiersz opisuje nam główną funkcję, jaką będzie wykonywać kompilator. Funkcja ta zwie się main (od ang. "główna"), a jej wartość będzie opisywana w cyfrach niepodzielnych, stałych dzięki operatorowi int. 

6 i 13. Wiersz to nic innego, jak klamry, dzięki którym opisane są "granice" funkcji głównej.

7. cout (consoleout) to nic innego, jak polecenie wyprowadzające informację na ekran, kod jest logiczny i da się go porządkować tak, by był maksymalnie przejrzysty. Do tego za ukośnikami // zamieściłem pomocne mi komentarze. Zwróćcie uwagę, że każde słowo, zdanie, wyraz, które będzie się pokazywać na ekranie konsoli zawiera się w nawiasie, a każdą linię kodu kończymy średnikiem ";". 

Nie mam zamiaru tłumaczyć kodu dalej. Myślę, że dojdziecie do tego sami, zwłaszcza, iż jest to banalnie prosty program, który skutkuje wyprowadzeniem prostej informacji na ekranie konsoli. 

Ach, konsole przypominają mi czasy dzieciństwa <3

Banał, co nie? Jestem po napisaniu paru prostych programów, które opiszę w kolejnych postach. Niemniej już teraz możecie zauważyć, że kod C++ jest bardzo logiczny i przejrzysty. 

W następnym poście pokażę Wam szybko prosty program matematyczny, jaki napisałem, symulator bankomatu, dostępu na serwer oraz jeszcze jeden z wykorzystaniem instrukcji warunkowej if oraz ..else : ) 

Trzymajcie się,

Ja wracam do nauki ^_^

F.



PS. Ach, mały PSIK. Gee - pozdrawiam Ciebie serdecznie, masz zaszczyt być bohaterką mojego pierwszego programu w C++. Meh. 

PSS. Gee, zostawiłaś mi talerz do wylizania? 


1 komentarz: