Pokaż wyniki od 1 do 7 z 7
[C++] Nauka C++ (krótki kurs - podstawy)
  1. #1
    Michal
    Gość

    Domyślnie [C++] Nauka C++ (krótki kurs - podstawy)

    Postaram sie wam w sposób łatwy przystepny ..w skróconej formie wyłożyć podstawy programowania C++.
    Lekcje te są zlepkiem materiałów jakie znalazłem w sieci i fachowej literaturze, Moja rola ograniczyła sie do zredagowania i złożenia wszytskiego w jedną zrozumiałą (przynajmniej dla mnie) całość.

    C++ od podstaw.
    Najpopularniejsze obecnie języki to rodzina C/C++, Object Pascal (stosowany w środowisku Delphi) oraz JAVA. Najwięcej aplikacji komputerowych powstaje jednak wciąż w C/C++. Żeby być precyzyjnym, będziemy uczyć się samego C++, czyli obiektowej odmiany języka C.

    Narzędzia
    Program to nic innego jak ciąg rozkazów dla komputera. Rozkazy te wyrażamy w języku programowania, w ten sposób powstaje tak zwany kod źródłowy. Niestety, komputer nie jest w stanie bezpośrednio go zrozumieć. Potrzebujemy aplikacji, która przetłumaczy kod zapisany w C++ na kod zrozumiały dla procesora. Aplikacja taka nazywa się kompilatorem, natomiast proces tłumaczenia - kompilacją. W procesie tym nie powstaje jednak jeszcze program, który moglibyśmy uruchomić z poziomu systemu operacyjnego, ale jedynie plik pośredni. Plik ten musi zostać dopiero połączony z dodatkowymi modułami umożliwiającymi współpracę z danym systemem operacyjnym i dopiero po wykonaniu tej operacji powstaje plik wykonywalny, który można uruchamiać bez wykonywania żadnych dodatkowych zabiegów. Proces łączenia nazywamy inaczej linkowaniem (z ang. link - łączyć), a program dokonujący tego zabiegu - linkerem.
    (patrz obrazek na dole tematu)

    Współczesne narzędzia programistyczne najczęściej wykonują oba zadania (kompilację i łączenie) automatycznie, bez udziału programisty. Zazwyczaj wystarczy wydanie polecenia, aby otrzymać plik wykonywalny. Należy jednak pamiętać, że są to dwa odrębne zadania. Niekiedy niezbędne jest ręczne wykonanie linkowania, na przykład w sytuacji, kiedy musimy dołączyć do aplikacji dodatkowe, niestandardowe moduły. W niniejszym kursie korzystać będziemy z kompilatora Borland C++ Compiler, który można pobrać z witryny
    [user]
    Kod:
    http://www.borland.pl
    [/user]
    Nic nie stoi jednak na przeszkodzie, aby użyć dowolnego innego kompilatora C++, zarówno pod Windows, Linuksem, jak i dowolnym innym systemem operacyjnym.
    Osobiscie chwale sobie w pełni darmowy (w całości po polsku) kompilator języka C++ dla Windows, zgodny z GCC (GNU Compiler Collection). Aplikacja ma zintegrowane graficzne środowisko programistyczne: edytor kodu źródłowego z podświetlaniem składni, debuger oraz edytor zasobówDev-C++ version 4.9.8.5
    Jest naprawde świetny super prosty w obsłudze i to co najwazniejsze.. wszystko w jednym.
    Każdy kto miał problem z Borland C++ ,napewno z tym kompilatorem napewno da sobie rade.

    Po zainstalowaniu środowiska C++ Compiler lub C++ Builder warto dodać do zmiennej systemowej PATH ścieżkę dostępu do pliku bcc32.exe. Na przykład: C:\Program Files \Borland\CBuilder6\Bin. Dzięki temu podczas kompilacji nie będziemy musieli podawać pełnej ścieżki do pliku kompilatora.

    Najprostszy program
    Program w C+ + zawiera polecenia, które mają być wykonywane przez procesor, oraz dane. Dane przechowywane są w strukturach, które nazywamy zmiennymi, polecenia nazywamy natomiast instrukcjami. Instrukcje grupowane są z kolei w funkcje. Są to wyróżnione fragmenty kodu przeznaczone do wykonania konkretnych zadań. Funkcjom można przekazywać parametry, mogą też one zwracać wyniki.
    Każdy program musi zawierać funkcję główną o nazwie main. Od niej rozpoczyna się wykonywanie kodu. Struktura najprostszego programu jest następująca:

    int main ()
    {
    }
    Mamy tutaj zawarte elementy:
    main - nazwa funkcji,
    nawiasy okrągłe - oznaczają, że mamy do czynienia z funkcją,
    nawiasy klamrowe - pomiędzy nimi wpisujemy treść funkcji, instrukcje, które ma wykonywać,
    int - typ wyniku zwracanego
    przez funkcję, int oznacza liczbę
    całkowitą.
    Funkcja main zawsze powinna być zadeklarowana jako int main().
    Zagadką jest zapewne: co robi ten program? Odpowiedź jest bardzo prosta, otóż nie robi on nic. Skoro pomiędzy nawiasami klamrowymi zawieramy instrukcje do wykonania, a w powyższym przykładzie pomiędzy nawiasami klamrowymi nie ma nic, oznacza to, że również program nie robi nic. Niemniej jest to poprawny kod w C+ +, który można skompilować i otrzymać plik wykonywalny. Wykonajmy to zadanie, co pozwoli nam zapoznać się z kompilatorem C++Compiler.

  2. #2
    Michal
    Gość

    Domyślnie

    1. Krok pierwszy to utworzenie pliku tekstowego z kodem programu. Należy wykorzystać w tym celu dowolny edytor tekstowy. W przypadku Windows można użyć systemowego Notatnika, w którym wpisujemy podany wyżej kod programu.

    2. Zapisujemy plik na dysku, nadając mu dowolną nazwę z rozszerzeniem .cpp Na przykład program.cpp

    3. W wierszu poleceń wpisujemy komendę bcc32 program.cpp.
    Jeśli nie wpisaliśmy do zmiennej systemowej PATH ścieżki dostępu do pliku bcc32.exe nazwę pliku kompilatora (bcc32) musimy poprzedzić ścieżką :

    D:\!>bcc program.cpp
    D:\!>"h:\program Files\Borland\Cbulider6\Bin\Bcc32.exe" pr..
    Borland C++ 5.6 for Win32 Copyright <c> 1993, 2002 Borland
    program.cpp:
    Turbo Inceremental Link 5.60 Copyright <c> 1997-2002 Borland


    Widoczne komunikaty potwierdzają, że najpierw został wywołany kompilator (Borland C++), a następnie linker (Turbo Incremental Linker)
    Ostatecznie w bieżącym katalogu powstał plik program.exe Możemy go uruchomić i przekonać się, że faktycznie nie robi on nic:

    D:\!>program .exe
    D:\!>_

    Niemniej plik wykonywalny powstał i jest to samodzielna aplikacja.



    Wynik kompilacji
    Kiedy zajrzymy do katalogu, w którym dokonaliśmy kompilacji, znajdziemy w nim w sumie cztery pliki :
    Program.cpp
    Program.exe
    Program.obj
    Program.tds

    Dwa z nich są nam dobrze znane, to program.cpp z kodem źródłowym oraz program.exe z kodem wynikowym. Do czego zatem służą pozostałe? Plik z rozszerzeniem .obj to najlepszy dowód na to, że proces tworzenia aplikacji odbywał się w dwóch etapach. Plik ten powstał w wyniku działania kompilatora i zawiera program przekształcony z wyrażeń języka C na język maszynowy procesora (oraz dodatkowe informacje dla linkera). Nie zawiera jednak modułów niezbędnych do uruchomiania tej aplikacji w danym systemie operacyjnym. Dopiero ten plik poddany został procesowi łączenia, w wyniku czego powstał plik wykonywalny EXE. Plik program .tds zawiera informacje dla debugera, czyli programu pozwalającego na prześledzenie poszczególnych etapów działania gotowej aplikacji. Jest więc przydatny przy wyszukiwaniu błędów w programach. Niemniej obecnie nie jest nam do niczego potrzebny i możemy go skasować.

    Prawdziwa aplikacja
    Program, który nic nie robi, choć pozwala na poznanie budowy funkcji w C++, nie jest zbyt ciekawy. Spróbujmy więc wykonać inny przykład. Tym razem zadaniem aplikacji będzie wyświetlenie dowolnego napisu na ekranie. Kod wykonujący taką funkcję wygląda następująco:

    #include <iostream.h>
    int main ()
    {
    cout << "Moj drugi program";
    }

    Widzimy, że pojawiły się tu nowe, niezbyt zrozumiale w pierwszej chwili konstrukcje. Analizę zacznijmy od wnętrza funkcji main. Znajdująca się tam linia cout << "Moj drugi program". I ona jest instrukcja wyświetlająca na konsoli napis:

    D:\!>program .exe
    Mój drugi program
    D:\!>_

    Co oznaczają elementy tej instrukcji? Otóż cout reprezentuje tak zwany standardowy strumień wyjściowy. Z pojęciem strumieni zapoznamy się dokładniej w dalszej części kursu, w tej chwili ważne jest dla nas to, że domyślnie oznacza to ekran konsoli. << to operator, który oznacza skierowanie do strumienia. W cudzysłowach znajduje się tak zwana stała znakowa, czyli napis. Jeśli gdziekolwiek w programie chcemy umieścić napis, który na przykład będzie wyświetlany na ekranie czy zostanie przypisany do zmiennej, koniecznie musimy ująć go w znaki cudzysłowu.
    Zatem całe wyrażenie cout < < "Mój drugi program"; oznacza dokładnie: skieruj do standardowego strumienia wyjściowego (czyli na ekran) ciąg znaków Mój drugi program. Efektem jest wyświetlenie tego ciągu na ekranie. Zwróćmy uwagę na znak średnika. Jest on niezbędny, gdyż pozwala kompilatorowi na rozpoznanie końca instrukcji. Wyjaśnić musimy znaczenie pierwszej linii kodu #include <iostream.h> . Jest to dyrektywa, włączająca do naszego programu plik iostream.h Pliki z rozszerzeniem .h nazywane są nagłówkowymi (ang. header). Zawierają informacje potrzebne do kompilacji. W pliku iostream.h znajduje się, między innymi, deklaracja strumienia cout, dzięki czemu kompilator wie, co to jest cout i jak z niego korzystać.

    Polskie znaki
    Kiedy po kompilacji uruchomimy program wypisujący na konsoli w środowisku Windows tekst zawierający polskie znaki diakrytyczne, spotka nas niemiła niespodzianka. Tekst będzie zawierał dziwne krzaczki. Problem ten wynika z faktu, że kod programu został zapisany w stronie kodowej 1250. Tymczasem wiersz poleceń Windows
    wykorzystuje do wyświetlenia znaków stronę kodową 852.
    Mamy dwie możliwości rozwiązania tego problemu: albo zapiszemy kod źródłowy programu w kodowaniu 852, co będzie wymagało użycia edytora obsługującego ten standard, albo zmienimy stronę kodową konsoli (krok 1 trzeba powtórzyć dla każdego nowego okna, po jego zamknięciu strona kodowa 825 zostanie automatycznie przywrócona). Zmianę strony kodowej wykonujemy w dwóch krokach:

    1. Wykonujemy polecenie chcp w postaci:

    D:\!>chcp 1250
    Aktywna strona kodowa :1250
    D:\!>_

    2. Zmieniamy czcionkę ekranową. Z menu systemowego okna konsoli wybieramy pozycję "Właściwości" -> "Czcionka". Następnie wybieramy czcionkę true-type: Tt Lucida Console.
    Od tej chwili polskie litery będą wyświetlane poprawnie.



    Zmienne:


    Zmienna to jedno z podstawowych pojęć związanych z programowaniem. Zmienne pozwalają na przechowywanie w programie danych. Inaczej mówiąc, są to miejsca w pamięci komputera, w których przechowujemy dane potrzebne do działania aplikacji.
    Każda zmienna ma swój typ, który określa, jakiego rodzaju dane może ona przechowywać. To proste. Jeśli chcemy przechowywać liczby całkowite, musimy użyć zmiennej o typie pozwalającym na przypisanie jej liczb całkowitych, jeśli chcemy przechowywać liczby ułamkowe, powinniśmy użyć zmiennej pozwalającej na przechowywanie liczb ułamkowych, i tak dalej.
    Typy występujące w C+ + możemy podzielić na następujące główne rodzaje:

  3. #3
    Michal
    Gość

    Domyślnie

    1. typy arytmetyczne,
    - znakowe
    - całkowite
    - zmiennopozycyjne

    2. typ logiczny,

    3. typy specjalne,
    - typ void
    - wskaźnikowe
    - referencyjne

    Każda zmienna, zanim zaczniemy z niej korzystać, musi zostać wcześniej zadeklarowana. Deklaracja polega na podaniu typu oraz nazwy zmiennej. Spójrzmy na fragment kodu:

    int main ()
    {
    int liczba;
    }

    Została tu zadeklarowana zmienna o nazwie liczba, której typem jest int. Oznacza to, że będzie ona mogła przechowywać liczby całkowite. Deklaracja kończy się znakiem średnika, tak jak każda inna instrukcja programu. Raz zadeklarowaną zmienną możemy używać do woli w programie, w szczególności możemy przypisać do niej jakąś wartość. Przypisania dokonujemy, wykorzystując znak równości.

    int main ()
    {
    int liczba;
    liczba = 100;
    }

    Takie pierwsze przypisanie wartości nazywamy zainicjowaniem zmiennej.


    Inicjowanie zmiennych:

    Pierwsze przypisanie wartości do zmiennej nazywamy jej inicjacją. Takie przypisanie może odbywać się zarówno po deklaracji, jak i w jej trakcie. Np.:

    int main()
    {
    int liczba;
    liczba = 100;
    int drugaLiczba = 200;
    }

    W linii pierwszej zadeklarowana została zmienna liczba typu int.
    W linii drugiej zmiennej tej została przypisana wartość całkowita 100. Ten sposób znany jest nam już z poprzednich przykładów.
    W linii trzeciej natomiast jednocześnie została dokonana deklaracja zmiennej (o nazwie drugaLiczba) oraz przypisanie tej zmiennej wartości 200. Oba sposoby zainicjowania zmiennych są równoprawne i możemy stosować ten, który jest dla nas wygodniejszy.


    Ale wróćmy do lekcji.

    Korzystając z fragmentu kodu....

    int main ()
    {
    int liczba;
    liczba = 100;
    }
    .... jak przekonać się, że po takim przypisaniu zmienna liczba faktycznie przyjęta wartość 100?
    Najprościej będzie wyświetlić jej wartość na ekranie. Sposobem wyświetlania napisu zajmowaliśmy się w poprzedniej lekcji. Wykorzystywaliśmy w tym celu standardowy strumień wyjściowy cout oraz operator <<

    Nie inaczej będzie i w obecnym przypadku:

    #include <iosteram.h>

    int main ()
    {
    int liczba;
    liczba = 100;
    cout << liczba;
    }

    Instrukcję należy w tym wypadku rozumieć jako wydanie polecenia: wyślij do standardowego strumienia wyjściowego zawartość zmiennej liczba. Innymi słowy: wyświetl na ekranie jej zawartość. Przekonajmy się, że faktycznie wykonanie tego programu spowoduje ukazanie się na ekranie liczby 100.

    Zapisujemy kod w pliku program.cpp, a następnie dokonujemy kompilacji, wykonując polecenie bcc.program.cpp
    Kiedy proces kompilacji zakończy się, uruchamiamy powstały plik program.exe. Wartość zmiennej faktycznie została wyświetlona


    D:\a>bcc program.cpp
    D:\a>"c:\program Files\Borland\Cbulider6\Bin\Bcc32.exe" pr..
    Borland C++ 5.6 for Win32 Copyright <c> 1993, 2002 Borland
    program.cpp:
    Turbo Inceremental Link 5.60 Copyright <c> 1997-2002 Borland

    D:\a>program.exe
    100
    D:\a>_




    Zmienne arytmetyczne i logiczne

    Czas na krótkie omówienie występujących w C++ podstawowych typów danych arytmetycznych i logicznych. Zebrane są one w tabeli (patrz załącznik do lekcji).
    Standard języka C++ nie definiuje zakresów wartości, jakie mogą być reprezentowane przez poszczególne typy. Przedstawione w ostatniej kolumnie tabeli zakresy są prawidłowe dla większości współczesnych 32 - bitowych kompilatorów, nie można jednak zakładać, że będzie tak w przypadku każdego systemu i każdego wykorzystywanego kompilatora.
    W razie wątpliwości należy zawsze sprawdzić te dane w dokumentacji wykorzystywanego narzędzia programistycznego.
    Typ znakowy ma nazwę char i służy do reprezentacji znaków, czyli liter, cyfr, znaków przestankowych, ogólnie zbioru znaków ASCII. Zmienna typu char zajmuje w pamięci jeden bajt, czyli 8 bitów. Za jej pomocą można zatem przedstawić 256 różnych znaków (bo 2 do ósmej potegi = 256). Jeśli chcemy przypisać do niej jakiś znak , musimy ująć go w znaki apostrofu

    #include <iosteram.h>

    int main ()
    {
    char zmienna = 'a';
    cout << zmienna;
    }

    Typ ten zaliczyliśmy do typów arytmetycznych, gdyż zmienne takie możemy traktować jako liczby. Na przykład znak a ma kod ASCII 97, zatem zmienna typu char, zawierająca ten znak, w rzeczywistości będzie przechowywała liczbę 97. Wykorzystywany już we wcześniejszych przykładach typ int służy do przechowywania liczb całkowitych. Występuje on w kilku odmianach widocznych w tabeli Wybrane typy danych w C+ +. Typy te tworzone są w prosty sposób: jeśli do słowa int dodamy short (ang. krótki), otrzymamy typ pozwalający na reprezentację mniejszego zakresu liczb (patrz ostatnia kolumna tabeli w załaczniku), jeśli natomiast dodamy słowo long (ang. długi), otrzymamy typ pozwalający na reprezentację większego zakresu liczb. Oprócz tego pojawiają się słowa signed i unsi-gned. Określają one, czy dany typ całkowity będzie reprezentował tylko dodatnie (unsigned) czy też dodatnie i ujemne (signed), innymi słowy, czy będą to liczby ze znakiem (+/-) czy bez znaku.
    Do reprezentacji liczb zmiennoprzecinkowych (inaczej zmiennopozycyjnych, czyli takich z częścią ułamkową) służą typy float, double i long double. Pozwalają one również na przedstawienie najszerszego zakresu wartości. Mówimy, że typ float pozwala na zapis liczb z pojedynczą, double z podwójną, a long double z rozszerzoną (wysoką) precyzją. Istnieją dwa sposoby przypisywania wartości takim zmiennym.

    Pierwszy sposób:

    int main()
    {
    float liczba = 1.4;
    }
    Część ułamkową przedstawiamy po kropce dziesiętnej (kropce, a nie przecinku, jak uczono nas w szkole).



    Sposób drugi:

    int main()
    {
    float drugaLiczba = 1.1e1;
    }
    To zapis wykładniczy 1.1e1 oznacza 1,1*10 ^1, czyli wartość 11. O tym, ze zmienna drugaLiczba faktycznie zawiera wartość 11, można się przekonać , dodając linie kodu cout<< drugaLiczba;

    #include <iostream.h>

    int main()
    {
    float liczba = 1.4;
    float drugaLiczba = 1.1e1;
    cout << drugaLiczba;
    }

  4. #4
    Użytkownik Awatar jahbum
    Dołączył
    19.07.2008
    Mieszka w
    Gdańsk
    Posty
    30
    Wątków
    0
    Siła reputacji
    8

    Domyślnie Odp: [C++] Nauka C++ (krótki kurs - podstawy)

    Skoro piszesz o C++ to dlaczego koncentrujesz się na produktach Borlanda, które są standardami same dla siebie a pomijasz ANSI/ISO C++, które to obecnie jest standardem?

    To jest jeden z poważniejszych błędów w Twoim "kursie", ponieważ z niego wynikają błędy w kodach przykładów, które podajesz. Np. ostatni kod nie będzie działał poprawnie. Kompilator wywali błąd o braku definicji funkcji Cout, gdyżnie raczyłeś przed funkcją main() zadeklarować przestrzeni nazw. W związku z tym aby w BCB trzymać się standardów powinieneś Cout zastąpić Printf ale to i tak nie wszystko - jeszcze deklaracja biblioteki wejścia/wyjścia (stdio.h) i zwrócenie wartości przez main - return 0; na końcu.Wtedy można mówić o C lub C++. Poza tym i tak piszesz bardziej o C niż C++.

    EDIT:
    Zakładając oczywiście, że ktoś zechce użyć dowolnego innego kompilatora C++ odmiennego od BCB.

  5. #5
    Użytkowniczka
    Dołączył
    16.10.2008
    Posty
    16
    Wątków
    0
    Siła reputacji
    8

    Domyślnie Odp: [C++] Nauka C++ (krótki kurs - podstawy)

    Jeżeli ktoś chce w bardzo prosty sposób wytłumaczone podstawy C++ to zapraszam na tą stronkę: są tam też inne języki programowania
    Ostatnio edytowane przez Dod6 ; 14.10.2010 o 11:29

  6. #6
    Świeżak
    Dołączył
    10.12.2009
    Posty
    2
    Wątków
    0
    Siła reputacji
    6

    Domyślnie Odp: [C++] Nauka C++ (krótki kurs - podstawy)

    nie skupił sie na najlepszych komplikatorach i na najlepszym moim zdaniem Dev-C++ ponieważ nie pisał sam tego kursu lecz wszystko jest z innej strony o tejże tematyce zgapione

  7. #7
    Aktywny Użytkownik Awatar matek3005
    Dołączył
    19.10.2008
    Posty
    363
    Wątków
    3
    Siła reputacji
    11

    Domyślnie Odp: [C++] Nauka C++ (krótki kurs - podstawy)

    Cytat Zamieszczone przez CeRAz Zobacz posta
    nie skupił sie na najlepszych komplikatorach i na najlepszym moim zdaniem Dev-C++
    Mam nadzieję, że kpisz.
    Jeśli tak to:
    1. Nie ma takiego czegoś jak komplikator.
    2. Dev-C++ jest obecnie jednym z najgorszych ide do c++ ( jest od bardzo dawna nie rozwijany )
    3. Przede wszystkim ten temat jest już stary nie ma sensu jego odkopywania.

    Jeśli taka osoba jak autor wątku ( lub user jahbum ) bierze się za udzielanie rad o c++ to wypadałoby, aby sama najpierw poznała podstawy. Nazywanie ide programistycznych kompilatorem powinno być karane, jest to przejaw ignorancji oraz wielkiej niewiedzy.

    To samo ma miejsce w przypadku nazwania cout'a funkcją! To jest obiekt klasy ostream, żadna funkcja. Po "rzuceniu okiem" znalazłem dwa takie bardzo poważne błędy, jest ich na pewno dużo więcej w tym temacie ale nie było sensu czytać tego dalej. Ten temat powinien być dawno jak nie usunięty to przynajmniej zamknięty.

    pozdrawiam

Podobne wątki

  1. Najlepszy Film na podstawie Gry??
    By MasteR in forum Opinie (Filmy)
    Odpowiedzi: 157
    Ostatni post / autor: 25.11.2011, 15:10
  2. Odpowiedzi: 1
    Ostatni post / autor: 06.06.2010, 14:42
  3. Odpowiedzi: 0
    Ostatni post / autor: 09.02.2008, 16:28
  4. Odpowiedzi: 0
    Ostatni post / autor: 09.02.2008, 16:21
  5. Kurs: Wyspa Skarbów
    By Ojciec S. in forum Recenzje (Gry)
    Odpowiedzi: 0
    Ostatni post / autor: 08.02.2008, 22:59
  1. Ranking tematów

Tagi dla tego wątku

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •