Polski Serwis Naukowy - OnLine od 1999 roku RSS RSS
  auto?
Piątek, 10 lutego 2012
Gabriel, Scholastyka, Jacek, Tomisława
 W 1920 roku gen. Józef Haller dokonał symbolicznych zaślubin Polski z Morzem Bałtyckim
 1925 - Polska podpisała konkordat z Watykanem
 1990 - na Kremlu spotkali się Michaił Gorbaczow i Helmut Kohl - przywódca ZSRR wyraził zgodę na zjednoczenie Niemiec
Dodaj do: 
Dodaj link do serwisu Facebook   Dodaj link do opisu GG  Dodaj link do serwisu Wykop   Dodaj link do serwisu Google   Dodaj link do serwisu Twitter  Dodaj link do serwisu Wyczaj.to   Dodaj link do serwisu Gwar  

Dodaj link do serwisu Delicious  Dodaj link do serwisu Digg   Dodaj link do serwisu Furl   Dodaj link do serwisu Reddit   Dodaj link do serwisu Slashdot  Dodaj link do serwisu Technorati   Dodaj link do serwisu YahooMyWeb
Nowe publikacje
Artykuły
Wydarzenia
Kompendium
[C++] Informacje wstępne. Budowa programu

Opublikowane przez: Damian Panas

Dodano: |28 Maj 2010|, 2010 15:59
cytuj
" "

Język C++ został stworzony na początku lat 80. w Bell Labs przez Bjarne Stoustrupa. Tworząc nowy język, autorowi najbardziej zależało na tym, aby był on wygodny w użyciu. C++ został stworzony w oparciu o C. Stoustrup dodał jednak do C++ obiektowość – rzecz kluczową dla tego języka (sam temat obiektowości będzie opisany później). Obecnie jest to jeden z najpopularniejszych języków m.in. ze względu na dużą swobodę w pisaniu kodu. Naturalnie, zalet tych jest o wiele więcej, jednak my skupimy się na praktycznej stronie C++, na programowaniu.

Tyle słowem wstępu. Przejdźmy do pierwszego programu i postarajmy się go dokładnie omówić:

#include <iostream>
int main()
{
std::cout << ''Witaj w portalu naukowy.pl'';
return 0;
}

Pierwsza linijka: #include <iostream>. Jest to dyrektywa dla preprocesora (preprocesor to program, który przetwarza pliki źródłowe przed zasadniczą kompilacją) mówiąca o tym, że korzystamy z poleceń biblioteki iostream. #include to dyrektywa, zaś <iostream> jest nazwą biblioteki. Jeśli chcielibyśmy skorzystać z możliwości kilku bibliotek, np. iostream i string, zapisujemy to poprzez:

#include <iostream>
#include <string>


Dociekliwy czytelnik może zadać pytanie, po co w ogóle wypisywać dyrektywy dla preprocesora? Czy nie lepiej byłoby udostępniać od razu wszystkie biblioteki? Odpowiedź brzmi: nie. Wyobraźmy sobie, że idziemy do księgarni z zamiarem kupna nowej książki na temat programowania. Czy bierzemy ze sobą namiot, plecak, zestaw konserw, kanister wody, latarkę, itp.? Oczywiście, że nie, gdyż jest to zupełnie niepotrzebne. Gdybyśmy wybierali się w celu eksploracji dżungli, prawdopodobnie taki zestaw był by pomocny. Podobnie jest w programowaniu. "Bierzemy" tylko to, co jest nam potrzebne. Dzięki temu, program jest mniej obciążony i działa sprawnej.

W tym miejscu warto również krótko wyjaśnić czym są biblioteki, które się udostępnia poprzez #include. Biblioteka zawiera wachlarz poleceń, z których korzystamy. Na przykład, jeśli chcemy wyświetlić napis ''Witaj w portalu naukowy.pl'', korzystamy z obiektu cout, który z kolei znajduje się w bibliotece iostream. Jeżeli chcemy wczytywać znaki z pliku tekstowego korzystamy z poleceń znajdujących się w bibliotece fstream, itd.
Następnie przechodzimy do funkcji main. int main() jest nagłówkiem funkcji, gdzie main jest jej nazwą. Pomiędzy nawiasami sześciennymi znajduje się treść funkcji. Polecenie return 0 kończy wykonywanie programu:

int main()
{
instrukcje
return 0;
}

Instrukcje wraz z instrukcją powrotu (tj. return) tworzą treść funkcji. Treść funkcji łącznie z nawiasami nazywamy definicją funkcji. Funkcja main zostanie dokładniej omówiona kiedy skoncentrujmy się na samych funkcjach. Na chwilę obecną należy jedynie zapamiętać, że z int main() korzysta się zawsze. Istnieją wyjątki jak na przykład dynamicznie wiązane biblioteki DLL, jednak takich przypadków nie będziemy się uczyć.

Na koniec przejdźmy do jedynej instrukcji: std::cout << ''Witaj w portalu naukowy.pl'';. Obiekt cout odpowiada za wyświetlanie napisów na ekranie. Jest to jego zasadnicza własność, nie oznacza to jednak, że jedyna. Samą treść zamieszczamy w cudzysłowie, całość wieńczymy średnikiem na końcu wiersza. Należy zwrócić uwagę na zapis std::cout. Istnienie std:: może wyglądać na nieco zbędne i rzeczywiście dla nas tak po części jest. Problem pojawia się jednak przy rozbudowanych programach. Może wówczas dojść do sytuacji, kiedy korzystamy z kilku funkcji o takiej samej nazwie. Aby komputer wiedział, o którą konkretnie funkcję nam chodzi musimy uwzględniać tzw. przestrzenie nazw. Przykład: Firma Naukowy stworzyła funkcję cout, która odpowiada za działanie A. Z kolei firma Science stworzyła funkcję także o nazwie cout, która wykonuje działanie B. Jeśli chcemy, aby nasz program wykonywał działanie A oraz B i zarazem, aby kompilator wiedział, kiedy ma wykonać na polecenie cout działanie A, a kiedy B, musimy to zaznaczyć. Działanie A firmy Naukowy, zaznaczymy poprzez naukowy::cout, a działanie B poprzez science::cout. Na takiej zasadzie działają klasy, funkcje i zmienne należące do standardowych składników kompilatora C++ (std to skrót od standard).

Pisanie za każdym razem std::cout zamiast cout budzi zwykle irytację u programistów, tym bardziej, podczas pisania złożonego kodu. Na szczęście jest na to rada - dyrektywa using namespace. Pisząc using namepsace std; przed nagłówkiem funkcji main automatycznie uwzględniamy przestrzenie nazw. Dzięki temu, zamiast pisać:

#include <iostream>
int main()
{
std::cout << ''Witaj w portalu naukowy.pl'' << endl;
std::cout << ''Witaj w portalu naukowy.pl'' << endl;
std::cout << ''Witaj w portalu naukowy.pl'' << endl;
std::cout << ''Witaj w portalu naukowy.pl'' << endl;
return 0;
}

Wystarczy napisać:

#include <iostream>
using namespace std;
int main()
{
cout << ''Witaj w portalu naukowy.pl'' << endl;
cout << ''Witaj w portalu naukowy.pl'' << endl;
cout << ''Witaj w portalu naukowy.pl'' << endl;
cout << ''Witaj w portalu naukowy.pl'' << endl;
return 0;
}

Manipulator endl, odpowiadający za przechodzenie do nowego wiersza, zostanie omówiony później.

W ten sposób zapoznaliśmy się z elementarnymi wiadomościami na temat C++. Przed omawianiem kolejnych zagadnień pragnę nadmienić, że w C++ wielkość liter ma znaczenie, zatem, np. COUT i cout to nie to samo. Na wielkość liter oraz średniki na końcu wierszy (uwaga: średnik jest częścią polecenia, a nie, jak niektórzy sądzą, rozdzielaczem kolejnych instrukcji) należy zwracać szczególną uwagę. Błędy tego typu ciężko dostrzec przy rozbudowanych aplikacjach, dlatego warto uczyć się dobrych nawyków od samego początku.


Bibliografia:
Stephen Prata, Szkoła Programowania. Język C++, wyd. Helion, ISBN 83-7361-958-5

komentuj publikację



^
 
Komentarze: brak
Skocz do:  

Dodaj temat do Ulubionych



Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group