6 grudnia 2011

Zmienne

Zmienna jest to symbol zaznaczony w programie, pod którym kryje się miejsce w pamięci gdzie możemy przechowywać dane określonego typu. A co to znaczy „po polsku”? Otóż zmienna przypomina skrytkę, w której możemy umieścić dane, odczytać ich wartość i zmienić ją (dlatego jest to zmienna).

Istnieje podział zmiennych ze względu na typ przechowywanych danych, który dobiera się zależnie od potrzeb. Najbardziej dla nas przydatne to:


Nazwa typu Rodzaj zmiennej Co przechowuje
char typ znakowy Przechowuje pojedynczy znak np.’a’,’1’,’!’ (musi być w pojedynczych cudzysłowach) lub liczbę całkowitą z zakresu -128 ÷127)
int Liczba całkowita Przechowuje liczby całkowite z zakresu -32768 ÷ 32767 np. 2003, -342, 37
float Liczba zmiennoprzecinkowa (rzeczywista Przechowuje liczby rzeczywiste z zakresu 1,2E-38 ÷ 3,4E+38 z dokładnością 7 miejsc po przecinku np. 123.4, -34.6



Dodatkowo każdy typ możemy rozszerzyć korzystając z przedrostków unsigned (ang. bez znaku), które mogą zawierać tylko liczby dodatnie, ale za to o 2 razy większej wartości np. unsigned char może przechowywać wartości od 0 do 255.
Aby mieć łatwy dostęp do zmiennych stworzono ich kolejną cechę – nazwę. Może się ona składać się z małych i wielkich liter alfabetu angielskiego, liczb i znaku _ , czyli symbolu podkreślenia, potocznie nazwanego podkreślnikiem. Należy pamiętać, że w C++ istotna jest wielkość liter np. „Liczba” i „liczba” to nazwy dwóch różnych zmiennych.

Aby móc skorzystać ze zmiennych należy je zadeklarować tzn. określić ich typ i nazwę. Deklarację w C++ możemy umieścić w dowolnym miejscu programu, ale należy pamiętać, że nie można skorzystać ze zmiennej przed jej deklaracją. Zależnie jednak od tego gdzie umieścimy taką deklarację, otrzymamy zmienną globalną lub lokalną. Różnica między nimi polega na tym, że zmienna globalna jest dostępna z każdego miejsca programu, a zmienna lokalna jest dostępna tylko we fragmencie, w którym została zdeklarowana. Ponadto ze względu na sposób tworzenia, zmienne lokalne mogą zaraz po deklaracji zawierać przypadkowe wartości. Dlatego warto stosować inicjalizację zmiennej lokalnej. Polega to na przypisaniu zmiennej pewnej początkowej wartości już na etapie deklaracji. Oto przykładowa deklaracja zmiennej.

Kod:


#include <iostream>

#include <cstdlib>

int main(void)

{

  int liczba;
//deklaruje zmienną o nazwie liczba mogącą przechowywać dane typu int(liczby całkowite)

  liczba=2;

 
float liczba2=4.3; //deklaruje zmienną o nazwie liczba2 mogącą przechowywać dane typu float(liczby rzeczywiste) i zainicjuje ją wartością 4.3

 
cout<<„liczba=”<<liczba<<”, liczba2=”<<liczba2;

  system(„PAUSE”)
return 0;

}


W tym przykładzie oprócz deklaracji zmiennej liczba w linii piątej, przypisujemy jej w następnej linii wartość 2. Znak równości oznacza, że zmienna po lewej stronie tego znaku, przyjmuje wartość podaną po prawej stronie. Jest to tzw. przypisanie, które pozwala także na przypisanie jednej zmiennej wartość innej zmiennej, jeśli są tylko tego samego typu. Kolejną rzeczą wartą wytłumaczenia jest wykorzystanie zmiennej typu float. Jest to bardzo przydatny typ, ponieważ w przeciwieństwie do int może przechowywać liczby rzeczywiste, czyli w sumie każdą liczbę (ograniczoną ilością pamięci komputera przydzielonej dla zmiennej). Typ ten wykorzystywany jest przy obliczeniach matematycznych, o większej dokładności (dzielenie, pierwiastkowanie, działania na ułamkach dziesiętnych), należy jednak zapamiętać, że w programowaniu przecinek dziesiętny zastępuje kropka, ponieważ przecinek jest stosowany do oddzielania np. parametrów funkcji. Pozostaje jeszcze jedna nowość. Otóż jak widać na przykładzie można w jednej instrukcji cout wyświetlić więcej niż jedną zmienną (w tym przypadku liczba i liczba2), jednak za każdym razem trzeba przed zmienną wstawić symbol strumienia <<.

Często też w programach zdarza się nam, że musimy użyć liczby, której wartość jest niezmienna np. liczba Pi=3.14. W tym celu najlepiej wykorzystać stałą, czyli odmianę zmiennej, która nie zmienia swej wartości w trakcie trwania programu. Deklaracja stałej wygląda identycznie jak zmiennej i polega na dodaniu przedrostka const i natychmiastowej inicjalizacji określoną wartością. Wartości takiej stałej nie można zmieniać w żadnym momencie programu, dlatego jest to nasza jedyna szansa na ustalenie jej wartości.


const float pi=3.14;


Zadanie:
Napisz program, w którym zadeklarujesz po jednej zmiennej typu int, float i char o dowolnej nazwie, a następnie przypisz im wartości odpowiednio char = ‘T’, int = 42 i float = 0.25. Wyświetl je na ekranie.

22 listopada 2011

Rozwiązanie

W poprzednim poście kazałem wam napisać program wyświetlający na ekranie tekst: \?"Witam tu twoj komputer!!!"?\ oraz miał być odtwarzany sygnał dźwiękowy.

Oto rozwiązanie:


#include <cstdlib>
#include <iostream>


using namespace std;


int main(void)


{
      cout << "\\\?" << "\"Witam tu twoj komputer!!!" << "\"\?\\" << "\a" << endl << endl;
      
    system("PAUSE");
    return 0;
}

15 listopada 2011

Program wyświetlający tekst

Nadszedł czas na program, który w końcu coś zrobi.Weźmy poprzedni program i wstawmy na początku i między linie drugą i trzecią, nowe linie kodu:

#include <iostream>
using namespace std;

int main(void)

{

  cout<<„To ja twoj komputer.
Mowie do Ciebie.”;
  system(”PAUSE”);
  return 0;
}
Otrzymany program , który wyświetla na ekranie napis:
To ja twoj komputer. Mowie do Ciebie.
Najpierw opiszę pierwszą linię kodu. Słowo #include mówi kompilatorowi jaką bibliotekę ma dołączyć do programu, jest to tzw. dyrektywa preprocesora.

Dyrektywa preprocesora to specjalne instrukcje, które nie są wykonywane przez komputer, ale stanowią informacje o sposobie postępowania dla preprocesora, czyli specjalnego programu uruchamianego przed kompilatorem. Działanie tego programu polega na przygotowaniu kodu programu tak, aby zawierał on wszystko, co potrzebne kompilatorowi (dołącza pliki informujące o bibliotekach, zamienia pewne słowa na inne itp.).

Biblioteka to zbiór zawierający wiedzę dla komputera, czyli instrukcje pozwalające komputerowi wykonywać zadania z określonego działu problemów. Tak naprawdę kompilator po prostu przepisuje zawartość całego pliku biblioteki do kodu programu. Nazwa biblioteki może być ujęta w „ostre” nawiasy <nazwa> lub cudzysłowy „nazwa” i zawiera nazwę pliku zawierającego bibliotekę. Różnica między tymi dwoma sposobami zapisu polega na tym, że w przypadku zapisu <nazwa> kompilator szuka biblioteki tylko w katalogu standardowym, a w przypadku „nazwa” można podać ścieżkę dostępu do katalogu zawierającego ten plik np.

#include „c:\katalog\nazwa”

Za pomocą słów kluczowych using namespace informujemy kompilator, że chcemy aby wszystkie funkcje, klasy i szablony należące do przestrzeni nazw nie wymagały przedrostka. Wyraz występujący po dwóch słowach kluczowych jest istniejącą nazwą przestrzeni. Dla standardowych bibliotek C++ jest to std.

Czym są strumienie? Strumienie występujące w programowaniu, jak nazwa wskazuje, mają coś wspólnego z prawdziwymi strumieniami, z tym tylko, że służą do przenoszenia danych pomiędzy programem a komputerem. Aby móc użyć takiego strumienia należy wskazać kierunek, w którym on płynie. Służą do tego symbole kierunku << i >>. Teraz wystarczy napisać

cout<<”Tekst.”;

aby napis „Tekst” został przez strumień przeniesiony do instrukcji cout, która wysyła go na ekran.
Należy pamiętać aby po każdej instrukcji znajdującej się między nawiasami klamrowymi umieścić średnik ; , który oznacza koniec pojedynczej instrukcji. Bez tego program nie wiedziałby gdzie kończy się, a gdzie zaczyna każda instrukcja.
Dosyć prosta modyfikacja programu, pozwala na wyświetlenie tekstu na ekranie w dwóch linijkach. Od tego momentu, do rozdzielenia kodu programu i wyniku jego działania, będę używał odpowiednio słów: kod i wynik.

Kod:

#include <iostream>
using namespace std;

int main(void)

{

  cout<<„To ja twoj komputer.\n Mowie do Ciebie.”;
  system(“PAUSE”);
  return 0;

}

Wynik:
To ja twój komputer.
Mówię do ciebie.

Jedyna modyfikacja w tym przypadku to symbol \n. Symbol ten oznacza przejście do następnej linii i  jest stosowany jeżeli chcemy zakończyć dany wiersz na ekranie. Możemy napisać:

cout<<„\n”;

co spowoduje, że program nic nie wyświetli tylko przejdzie do następnej linii. Oprócz tego stosowane są też inne symbole specjalne np.
\r - rzesunięcie do początku wiersza(kursor wraca na początek linii, w której się znajduje)
\a - z głośniczka wbudowanego w komputer wydobędzie się krótki sygnał dźwiękowy, który można wykorzystać np. do sygnalizacji błędów
\\  - Wyświetla znak backslash  \
\? - Wyświetla znak zapytania  ?
\'  - Wyświetla apostrof 
\" - Wyświetla podwójny cudzysłów 



Nie są to wszystkie symbole specjalne, ale te wystarczą nam w dalszej pracy. Ostatnie cztery symbole wymagają dodatkowego wyjaśnienia. Otóż w C++ istnieją zarezerwowane symbole, które nie mogą być wyświetlone w sposób standardowy, dlatego stosuje się przed nimi symbol \ co pozwala na użycie ich w programie np. gdybyśmy chcieli wyświetlić \? , to musimy napisać \\\?. Dla ilustracji tego napiszemy prosty program.

Kod:

#include <iostream>
using namespace std;
int main(void)

{
  cout<<"\\ \? \' \" \a \n";//wyświetla kolejno \ ? ‘ „ następnie sygnał dźwiękowy i przejście do następnej linii

 
cout<<"Wyswietlam tekst i wracam na poczatek lini.\r";//wyświetla tekst i ustawia kursor na początku linii

  system(„PAUSE”);
  return 0;

}

Taki sam efekt jak \n daje zastosowanie manipulatora endl, który steruje strumieniem.

#include <iostream>
using namespace std;

int main(void)

{

  cout<<„To ja twoj komputer.”<<endl<<” Mowie do ciebie.”;
  system(„PAUSE”);
  return 0;

}
 
Napisz program wyświetlający na ekranie monitora:
\?”Witam tu twój komputer!!!”?\
a następnie odtwarzający przez głośniczek komputera sygnał dźwiękowy.

8 listopada 2011

Środowisko programistyczne cz.2

DevC++ to środowisko darmowe, stworzone przez zapaleńców z wielu krajów świata. Jest rozpowszechniane na licencji GNU General Public License, co oznacza, że program taki można dowolnie kopiować i rozprowadzać. Dzięki zaawansowanym opcjom tworzenia i zarządzania projektami możliwe jest tworzenie w nim zarówno prostych programów, jak i skomplikowanych aplikacji multimedialnych czy gier 3D.

Po zainstalowaniu, uruchomieniu i wybraniu języka pracy witani jesteśmy takim oto widokiem:


Jest to standardowe okno programu. Aby jednak zacząć zabawę musimy najpierw stworzyć nowy projekt.







Tworzenie projektu to proces prosty sprowadza się do uruchomienia odpowiedniego kreatora, czyli z menu „Plik” wybieramy kolejno „Nowy”, „Projekt”:

Projekt to ogół plików wykorzystywanych przez kompilator do stworzenia programu, połączonych ze sobą pewnymi powiązaniami np. pliki źródłowe, zasoby (pliki z danymi) itp. Dodatkowo każdy projekt może być skonfigurowany w sposób szczególny zależny od rodzaju programu, sposobu kompilacji.

Następnie należy wybrać typ projektu (Empty Project) i wpisać nazwę dla naszego projektu („Pierwszy”):














Teraz pozostaje tylko wybrać nazwę dla pliku z projektem i zapisać go:

Ok, mamy już projekt, ale ciągle nie możemy nigdzie wpisać kodu naszego programu. Dzieje się tak, dlatego, bo nie mamy jeszcze w naszym projekcie jeszcze żadnego pliku źródłowego. Musimy więc taki plik dodać do projektu. Najłatwiej to wykonać wybierając:







Trzeba pamiętać, aby odpowiedzieć twierdząco na pytanie o dodanie pliku do projektu. Spójrzmy na okno naszego projektu:







Jak widać mamy tu jeden plik (w tym przypadku „BezNazwy4”), na razie nie nazwany wiec powinniśmy go zapisać pod jakąś nazwą korzystając ze standardowego polecenia Plik|Zapisz jako...(w moim przypadku będzie to: „plik.cpp”). Po zapisaniu pliku możemy przystąpić do programowania. Wpisujemy wiec kod z poprzedniej lekcji:











I dokonujemy jednoczesnej kompilacji i uruchomienia:
Najpierw oczom naszym ukazuje się okienko kompilacji i linkowania:
















Następnie na ekranie miga na chwilę okienko i znika. Jest to okno naszego programu! Nie ma się jednak czym przejmować, ponieważ dzieje się tak tylko dlatego, że program nasz zwyczajnie nic nie robi.

1 listopada 2011

Środowisko programistyczne cz.1

Visual C++ to składnik pakietu Microsoft Visual Studio, stworzonego przez twórców systemu Windows. Środowisko to jest więc wyposażone w wiele narzędzi ułatwiających tworzenie aplikacji dla systemu Windows. Obsługa tego programu jest podobna do innych narzędzi Microsoft’u (podobne skróty klawiaturowe, ułożenie menu) więc nie ma problemów z nauczeniem się obsługi tego programu. Dodatkowo programista dostaje do dyspozycji wiele kreatorów ułatwiających tworzenie szkieletów aplikacji poprzez kilka kliknięć. Po uruchomieniu wita nas taki widok:




















Jest to główne okno edytora, na razie nie ma tu żadnego projektu, ani pliku, więc należy je stworzyć.









Wybieramy więc pozycję New z menu File.Pojawia się kreator, który pozwala wybrać co chcemy stworzyć(jaki rodzaj projektu lub pliku), pod jaką nazwą oraz gdzie chcemy te pliki zapisać.




















W naszym przypadku(proste programy w C++) najlepiej wybrać










i podać nazwę projektu i ścieżki dla plików, a następnie kliknąć OK.
























Widzimy kolejny krok kreatora, gdzie wybieramy „A Simple Application” i kończymy klikając „Finish”.
Teraz już możemy tworzyć programy, mając od razu gotowy początek kodu.

25 października 2011

Mam program i co z tego?

Aby program nadawał się do czegokolwiek należy zamienić go na formę zrozumiałą dla komputera przy użyciu programu zwanego kompilatorem. Jednak często zdarza się, że program składa się z wielu plików źródłowych zawierających poszczególne fragmenty programu.

Plik źródłowy jest to plik tekstowy zawierający kod źródłowy programu zapisany w języku programowania.

W takim wypadku po kompilacji otrzymujemy wiele plików, które trzeba połączyć ze sobą w jeden plik wykonywalny. Do tego celu służy program zwany linkerem.

Linker to program dokonujący łączenia skompilowanych plików źródłowych i bibliotek w jedną całość – gotowy do uruchomienia program.

Dopiero po dokonaniu całego tego procesu (kompilacja+linkowanie) otrzymujemy gotowy program. Aby ułatwić ten proces stworzono programy zwane IDE (ang. Integrated Development Envoirment – Zintegrowane Środowisko Programistyczne), które zawierają w sobie zarówno kompilator jak i linker. Dodatkowo posiadają wbudowany edytor źródła, pomoc i wiele innych użytecznych narzędzi.

Edytor źródła to program edycji tekstu posiadający wiele przydatnych dla programisty dodatkowych funkcji, które ułatwiają pracę nad programem. Najczęściej spotykane opcje to: kolorowanie składni programu, dopowiadanie nazw czy obsługa wielu plików źródłowych jednocześnie.

W następnym poście przedstawię wam kilka środowisk programistycznych C++ wraz z obrazkami przedstawiającymi ekran komputera podczas wykonywania określonych czynności. Ich najważniejszą zaletą jest to, że oprócz samego kompilowania i linkowania potrafią także wykrywać i sygnalizować błędy w programie, a także w różnym stopniu wspomagają pracę programisty przy eliminowaniu popełnionych błędów oraz przy tworzeniu skomplikowanych programów.

18 października 2011

Pierwszy program

Zapewne od razu chcielibyście napisać program robiący coś konkretnego ,ale nie ma tak dobrze. Wykorzystamy metodę „małych kroków”, tzn. będziemy poznawać małe ilości wiadomości, ale dobrze i przystępnie wytłumaczone (mam nadzieję). Zaczniemy od poznania budowy programu w C++ na bazie programu, który po uruchomieniu nie pobiera żadnych danych od osoby go używającej (użytkownika) i nic nie wyświetla na ekranie monitora, czyli teoretycznie nic nie robi.

Oto i on:

/*Program „nie robiący nic”*/
/*Plik: nic.cpp*/


int main( void)//miejce gdzie wszystko się zaczyna – czyli sygnał dla komputera, gdzie rozpoczyna się nowy program

{//nawias rozpoczynający program

}//nawias kończący program

Prostota przede wszystkim. Każdy program rozpoczyna się od wykonania funkcji (o tym co to jest funkcja opowiem później) int main( void) 
, to tu kieruje się komputer po rozpoczęciu programu i od tego miejsca po kolei wykonywane są kolejne instrukcje ujęte między nawias początkowy { i końcowy } , czyli zawarte w ciele funkcji. Pozostaje jeszcze jedna kwestia „do czego służą pierwsze dwie linijki i tekst po //”. Otóż są to komentarze.

Komentarze to informacje dla osoby oglądającej kod źródłowy, o tym do czego służy dana linijka lub fragment programu. Kompilator pomija komentarze i nie mają one dla niego żadnego znaczenia, tak jakby ich „nie widział”, więc do komputera w ogóle one nie dotrą. W C++ występują dwa rodzaje komentarzy:

-   rozpoczynające się od /* i kończące na */ , gdzie cały tekst między tymi znacznikami jest pomijany bez względu na to ile linii zajmuje. Służą często jako „wizytówki programu” tzn. wstęp do kodu źródłowego z nazwą i krótkim opisem działania programu, lub jako opisy działania poszczególnych bloków programu.

-   rozpoczynające się od // i kończące wraz z końcem linii, używane najczęściej do opisu, czym zajmuje się dana linia.

11 października 2011

Na początek trochę teorii

Komputer pomimo swej złożoności jest jedynie bierną maszyną. Jeżeli chcemy aby wykonywał jakąś czynność to musimy go jej nauczyć. Komputer nie rozumie jednak żadnego języka używanego przez ludzi, dlatego konieczne stało się stworzenie nowych języków zrozumiałych dla komputera. Sposób rozwiązania przez komputer jakiegoś zadania nazwano algorytmem, a algorytm zapisany w języku zrozumiałym dla komputera programem.C++ zalicza się do języków wysokiego poziomu, co oznacza że człowiek pisze w nim językiem podobnym do języka ludzkiego (w tym przypadku angielskiego), a kompilator tłumaczy to na język zrozumiały dla komputera czyli tzw. kod maszynowy.

Kod maszynowy to określenie języka programowania niskiego poziomu, który jest bezpośrednio wykonywany przez procesor komputera. Jest to język bardzo trudny do zrozumienia dla człowieka, dlatego często stosuje się tłumaczenie na ten język z języka wysokiego poziomu specjalnym, odrębnym programem (kompilator).

Tworzenie programu, składa się z wielu następujących po sobie faz, przez które musi przebrnąć programista. Zawsze należy rozpocząć od dokładnego zapoznania się z celem tworzenia programu, czyli: dokładnie sprecyzować jakie czynności będzie wykonywał program, jakie dane będzie pobierał od użytkownika, co będzie wynikiem jego działania.

Dane to informacje, które program pobiera od użytkownika, przetwarza i które są wynikiem jego działania.

Ważne jest aby dobrać odpowiedni sposób rozwiązania danego problemu np. z jakich wzorów matematycznych lub fizycznych warto skorzystać, jakie algorytmy (sposoby) można zastosować.

Algorytm jest to ogólnie mówiąc przepis, jak rozwiązać dany problem.

5 października 2011

Wstęp


Kurs ten powstał z myślą o ludziach, którzy wcześniej nie mieli styczności
z programowaniem i chcą przygodę tą rozpocząć od C++. Dlaczego akurat C++? Odpowiedź jest prosta. Jest to język o dużych możliwościach i powstaje w nim większość oprogramowania na komputery osobiste.
Przejdźmy do spraw technicznych.

Kompilator to program tłumaczący polecenia zapisane w C++ na postać zrozumiałą dla komputera.

Kod źródłowy to często używane w programowaniu pojęcie, oznaczające program zapisany w danym języku programowania. Często stosuje się samo słowo „kod” zamiast całego wyrażenia.


Aby wyróżnić go spośród tekstu zastosuję inną czcionkę i kolor. Tak więc tekst programu będzie wyróżniony w taki sposób, a komentarze do programu w taki sposób.