Lekcje o programowaniu w C++ 5627 10

O temacie

Autor MrSzymon345

Zaczęty 13.09.2013 roku

Wyświetleń 5627

Odpowiedzi 10

MrSzymon345

MrSzymon345

Użytkownicy
posty127
Propsy16
Profesjabrak
  • Użytkownicy

MrSzymon345

Lekcje o programowaniu w C++
2013-09-13, 17:25(Ostatnia zmiana: 2013-09-18, 11:52)
Witam wszystkich forumowiczów. Postanowiłem napisać cykl lekcji o programowaniu które będą traktowały o  nowoczesnym języku programowania C++. Te lekcje będą przedstawiać podstawy języka oraz bardziej zaawansowane zagadnienia jak programowanie obiektowe. Chciałbym także pokazać wam bibliotekę WinAPI która służy do tworzenia aplikacji okienkowych w systemach Windows. Kolejne lekcje będę wklejał w spoilery oraz zamieszczał wiadomość w formie posta o pojawieniu się nowej części. To chyba wszystko ale jeśli ktoś będzie miał jakieś pytania to proszę śmiało pisać w temacie lub nawet kontaktować się ze mną poprzez prywatne wiadomości lub Gadu-Gadu. Uprzedzam też was że jeśli kolejne lekcje nie będą się pojawiały co ok. tydzień, to proszę się nie „wkurzać” ponieważ mogę mieć wtedy bardzo dużo pracy i po prostu nie mam czasu aby to napisać. Myślę jednak że nie będzie to się zdarzało dość często i kolejne części będą się pojawiały w terminie. Jeśli ktoś będzie miał jakieś uwagi co do tekstu to proszę pisać nawet jak będą małe literówki, przecież każdemu może się to zdarzyć :). Przejdźmy więc do rzeczy:

Programowanie w C++ cz.1
Spoiler

Witam wszystkich forumowiczów, zainteresowanych nauką języka C++. Chciałbym stworzyć cykl lekcji o tym języku od najprostszych zagadnień aż do początków programowania obiektowego i biblioteki WinAPI służącej do tworzenia aplikacji okienkowych w systemach Windows.  Nie będę tutaj zanudzał was historią programowania czy kompilatorami ale od razu przejdę do rzeczy. Do programowania w jakimkolwiek języku niskiego jak i wysokiego  poziomu potrzebny nam jest kompilator które skompiluje kod źródłowy programu który napisałeś, na język maszynowy.  Do jeszcze lepszej pracy programista może potrzebować środowiska programistycznego, które oferuje wiele udogodnień takich jak widok plików projektu czy gotowe szablony programów.  W tej serii poradników będę używał środowiska Dev-C++ 5.4.2 oraz kompilatora MinGW GCC 4.7.2. Oczywiście istnieją różne środowiska programistyczne jak i kompilatory np. Code::Blocks czy produkt Microsoft Visual C++. Więc przejdźmy teraz do kodowania. Odwieczną tradycją przy nauce nowego języka programowania jest napisanie czegoś prostego co może ci pokazać cechy składni języka. Tym programem będzie aplikacja o nazwie „Hello World” (ang. „Witaj świecie”) który ma za zadanie wyświetlić tekst w oknie konsoli. Na początek należy stworzyć nowy projekt w swoim środowisku. Ma to być aplikacja konsolowa oraz oczywiście w języku C++. Niestety nie mogę ci pomóc w kwestii ustawień środowiska którym się posługujesz. Musisz znaleść w sieci pomoc lub poradniki ale najlepiej jak spojrzysz w dokumentację :)
#include <iostream>
#include <cstdlib>

main()
{
std::cout <<  ''Witaj swiecie!";
system(''pause'');
}
Jeśli skompilujesz już program i go uruchomisz zobaczysz w oknie konsoli coś takiego:

Witaj swiecie
Aby kontynuować, naciśnij dowolny klawisz...

A gdy naciśniesz dowolny klawisz na klawiaturze okno zamknie się i program zakończy swoje działanie.

Gratulacje! Napisałem swój pierwszy program w C++ i go uruchomiłeś. Nie jest on skomplikowany ale dobry na początek oraz można wskazać w nim cechy języka C++ oraz podstawowe instrukcje:
#include <iostream>
i
#include <cstdlib>

Te fragmenty kodu to tzn. „dyrektywy preprocesora” odpowiedzialne za dołączanie podanych plików nagłówkowych(ang. header file). Nagłówki zawierają dokładne deklaracje funkcji bibliotecznych ale o tej dyrektywie i innych porozmawiamy kiedy indziej. Teraz prześledźmy pozostałe linijki programu.
main()
W każdym programie w C++ musi się znajdować specjalna funkcja main(). To właśnie od niej rozpoczyna się działanie aplikacji. Ciało(czyli treść) tej jak i każdej funkcji musi być zawarte między dwoma nawiasami klamrowymi {}
std:cout << ''Witaj swiecie'';
Ta instrukcja sprawia że na domyślnym urządzeniu wyjściowym czyli na ekranie  ma się pojawić tekst zawarty w cudzysłowie. Zanim skorzystasz z tej instrukcji należy dołączyć plik nagłówkowy iostream dyrektywą #include <iostream>
system(''pause'');
Jest to instrukcja która może wykonać każde polecenie konsoli Windows czy np. wyświetlanie tekstu poprzez instrukcje echo  ale nie korzystaj z tej funkcji ponieważ jest znacznie wolniejsza od instrukcji cout. W naszym przypadku instrukcja jest odpowiedzialna za komendę ''pause''

PAMIĘTAJ!
Na końcu każdej instrukcji czyli np. po cout czy system musi znajdować się średnik. Będziesz o tym pewnie często zapominał ale kompilator wyświetli odpowiedni komunikat.

Na koniec tej lekcji znajdzie się jeszcze słówko o komentarzach.

Komentarze to teksty w kodzie programu które kompilator ignoruje. Muszą być pomiędzy znakami ''/* '' i ''*/''lub za ''//''

Program „Hello World” oznaczony komentarzami:
/*
Hello World by MrSzymon345
Skompilowany w MinGW GCC 4.7.2
*/
#include <iostream> //dołączenie biblioteki iostream
#include <cstdlib> //dołączenie biblioteki cstdlib

main() // funkcja main()
{
std::cout <<  ''Witaj swiecie!''; //wyświetlenie tekstu „Witaj swiecie”
system(''pause''); //użycie komendy ''pause''
}

W komentarzach mogą znaleźć się objaśnienia dotyczące działania programy gdy np. pracujemy w dużym zespole programistów żeby każdy wiedział jak działa aplikacja. Może to się także przydać gdy „odkopujemy” nasz stary projekt i nie znamy dokładnie całego kodu.

Na tym skończę tą lekcje.  Na następnej zajmiemy się podstawowymi instrukcjami sterującymi przebiegiem pracy naszego programu.




Wszelkie prawa zastrzeżone. Kopiowanie, sprzedawanie i rozpowszechnianie zabronione. Złamanie powyższych zasad grozi odpowiedzialnością prawną.

Copyright 2013 MrSzymon345
 

inż. Avallach

inż. Avallach

Administrator
posty7662
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator
Cytuj
o  nowoczesnym języku programowania C++
Nie żebym się czepiał, ale ten nowoczesny język ma 30 lat (sprawdź Wikipedię) (a jest bazowany na C, który ma lat ponad 40). Nowoczesny to jest C#, ale to też zupełnie inne podejście do programowania.

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Racja, pisząc nowoczesny o C++ trzeba uważać, jeśli nie ma się na myśli nowego standardu C++11.

Poza tym WinApi jest dość stare.

MrSzymon345

MrSzymon345

Użytkownicy
posty127
Propsy16
Profesjabrak
  • Użytkownicy
Ale programy z WinAPI uruchomisz na kazdym Windowsie i nie potrzebujesz zadnych dodatkowych programow czy srodowiska.
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Nie żebym się czepiał ale samo main() chyba nie zadziała ? Gdzie void, int lub cokolwiek ? :D

MrSzymon345

MrSzymon345

Użytkownicy
posty127
Propsy16
Profesjabrak
  • Użytkownicy
Funkcja main ma specjalne uprawnienia np. nigdzie jej nie deklarujemy i zawsze zwraca wartosc 0 nawet jak nie zamiescic return. W starszych wersjach jezyka bylo to mozliwe ale w najnowszym standardzie trzeba juz zadeklarowac jaki typ jest zwracany. Napisalem przeciez w jakim kompilatorze sa kompilowane moje programy. U mnie dzialaja bezproblemowo. Spodziewam sie ze nikt nie ma kompilatora dostosowanego do najnowszego standardu. Dzieki za uwage Rafal :)
 

mgr Fartuess

mgr Fartuess

Użytkownicy
Kiedyś to były czasy!
posty1485
Propsy890
ProfesjaProgramista
  • Użytkownicy
  • Kiedyś to były czasy!
Nazwa topicu trochę niefortunna. Dział "Programowanie" poddział "C/C++" a nazwa tematu "Programowanie w C++". Bardzo informatywne i wyjaśniające o czym jest temat :P
 
Popisuje się ciągle menda jedna...

Sawik

Sawik

Użytkownicy
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Użytkownicy
  • Rebel
Polecam poprosic o skasowanie tematu.... i napisanie go ponownie, gdy bedziesz mial cos wiecej niz helloworld. Rozumiem, od czegos  trzeba zaczac, ale pomiedzy czesciami masz zbyt duze odstepy by mialo to sens, albo piszesz w mare regularnie i solidnie, albo wcale. 

Ps. czesto mylisz osoby i np. zamiast "napisales" piszesz "napisalem", warto czasem przeczytac tekst zanim sie go wrzuci, najlepiej pisz w jakims wordzie czy cos, a jak juz bedziesz mial pare "lekcji" zacznij je wrzucac. 
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

Wowoz

Wowoz

Użytkownicy
Wowoźny
posty3699
Propsy4862
NagrodyVV
Profesjabrak
  • Użytkownicy
  • Wowoźny
Sawik, weź się uspokuj bo nie moge cie czytać : I co to bedzie jak bede musial z toba mieszkac : ||||
 

inż. Avallach

inż. Avallach

Administrator
posty7662
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator
Ja na następne wakacje też planuję gdzieśtam do niego wyjechać xD
Ale akurat całkowicie zgadzam się z tym postem. Nie czytałem tutoriala, ale o ile pierwsze wrażenie nie jest bardzo mylące, to pisanie tego było złym pomysłem. Raz że nie ma zapotrzebowania, a dwa że autor za bardzo się do tego nie nadaje.

Ridic530

Ridic530

Użytkownicy
posty73
Propsy3
  • Użytkownicy
Skoro twoja funkcja main zwraca liczbę to przydałoby się żeby ta funkcja miała typ int... A to że ci się kompiluje tak, to znaczy żeś coś namieszał...

Z resztą
Cytuj
Ta instrukcja sprawia że na domyślnym urządzeniu wyjściowym czyli na ekranie
... na ekranie? ja to widzę w konsoli...

Cytuj
system(''pause'');
... ja ci powiem że można to tak robić... ale po co? większość dobrych kompilatorów (czyli nie Dev-c++, oczywiście to twój wybór) sama zatrzymuje program przy testowaniu/debugowaniu... chyba że ktoś chce uruchomić program spoza środowiska to wtedy wystarczy getch(); lub getchar();

apropos funkcja powinna wyglądać tak:
return_type function_name( parameter list )
{
   body of the function
}
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry