14 czerwca 2012

ROZWIĄZANIE

W poprzednim poście kazałem wam napisać program, który pobierze 3 liczby całkowite do zmiennych liczba_1, liczba_2 i liczba_3, a następnie wykona działanie a+b*c i wyświetli jego wynik w miejscu słowa (wynik) w zdaniu:
Wynikiem działania a+b*c jest (wynik).

Oto on:

#include <iostream>
#include <cstdlib>

using namespace std;

main(void)
{
cout << "Podaj pierwsza liczbe: " << endl;
int liczba_1;
cin >> liczba_1;

cout << "Podaj druga liczbe: " << endl;
int liczba_2;
cin >> liczba_2;

cout << "Podaj trzecia liczbe: " << endl;
int liczba_3;
cin >> liczba_3;

int wynik;

wynik = liczba_1 + (liczba_2 * liczba_3);

cout << "Wynikiem dzialanie a + b * c jest: " << wynik << endl;

system("pause");
return 0;




}

Wprowadzanie danych z klawiatury


Nasz poprzedni program miał jedną poważną wadę – operuje tylko na liczbach, które przypiszemy do zmiennych podczas pisania programu, inny użytkownik nie miałby z niego żadnego pożytku. Aby to zmienić dodamy możliwość wprowadzenia dwóch liczb całkowitych (int), które będą służyły do obliczeń. W ten sposób program będzie interaktywny (jakie mądre słowo:-)) , tzn. użytkownik będzie miał wpływ (minimalny, ale dobre i to) na działanie programu, który sam upomni się na ekranie monitora o podanie potrzebnych liczb.
Najprostszą metodą pobrania danych z klawiatury jest instrukcja:
cin
(ang. Console Input – wejście konsoli), która działa podobnie do cout, z tą różnicą, że cout wyświetla na monitorze, a cin pobiera dane z klawiatury. Zmianie także ulega kierunek strumienia: z cin do zmiennej >>. Przykładowo, aby wczytać liczbę do zmiennej liczba trzeba napisać
cin>>liczba;
Ważną cechą strumieni jest to, że cin sam dopasowuje typ danych do typu zmiennej, do której przekazywany jest strumień. Oznacza to, że jeśli strumień ma przekazać dane do zmiennej typu float, to pobrany ciąg znaków zostanie przetworzony na liczbę zmiennoprzecinkową.
Kod:

#include <iostream>
#include <cstdlib>

using namespace std;

main()

{

int liczba;

cout<<„Podaj liczbe calkowita: ”;

cin>>liczba;
//pobiera liczbę całkowitą i umieszcza ją w zmiennej liczba
cout<<"\nTwoja liczba to: "<<liczba;
//najpierw przechodzi do następnej lini, a następnie wyświetla zawartość zmiennej liczba
system("pause");
return 0;

}
Wynik:
Podaj liczbę całkowitą: 34
Twoja liczba to: 34
Teraz możemy udoskonalić nasz kalkulator.
Kod:

#include <iostream>
#include <cstdlib>

using namespace std;

main(void)

{

int a,b;

cout<<"Podaj pierwsza liczbe: ";

cin>>a;

cout<<"Podaj druga liczbe: ";

cin>>b;

cout<<"a+b=”<<a+b<<”\n";

cout<<"a-b=”<<a-b<<”\n";

cout<<"a*b=”<<a*b<<”\n";

cout<<"a/b=”<<a/b<<”\n";

cout<<"a modulo b=”<<a%b<<”\n";

system("pause");
return 0;

}
Wynik:
Podaj pierwsza liczbę: 3
Podaj druga liczbę: 5
a+b=8
a-b=-2
a*b=15
a/b=0
a modulo b=3

Program działa bez zarzutu i jeśli uważnie czytałeś poprzednie rozdziały to nie będziesz miał problemów ze zrozumieniem jego działania. Zwróć uwagę, że komputer zaczyna z Tobą współpracować i na jego prośbę możesz podać dowolne (tj. ograniczone to typu int) liczby a i b. A kto go tego nauczył? – programista, czyli Ty!

Zadanie:
Napisz program, który pobierze 3 liczby całkowite do zmiennych liczba_1, liczba_2 i liczba_3, a następnie wykona działanie a+b*c i wyświetli jego wynik w miejscu słowa (wynik) w zdaniu:
Wynikiem działania a+b*c jest (wynik).

ROZWIĄZANIE

W ostatnim poście kazałem wam napisać program, który wykona te same działania, co nasz główny program, z wyjątkiem reszty z dzielenia, z tą różnicą, że jako wartości zmiennych użyjemy liczb 2.5 i 4.2.

Oto on:


#include <iostream>
#include <cstdlib>


using namespace std;


main(void)


{


double a,b;


a = 2.5;


b = 4.2;


cout << "a=" << a << " b=" << b << endl;


cout << "a+b=" << a+b << endl;


cout << "a-b=" << a-b << endl;


cout << "a*b=" << a*b << endl;


cout << "a/b=" << a/b << endl;


a++;


cout << "a++=" << a << endl;


b--;


cout << "b--=" << b << endl;


system("pause");
return 0;
}

Działania arytmetyczne

W C++ istnieje, jak w każdym innym języku programowania, możliwość wykonywania działań arytmetycznych na zmiennych i liczbach. Oto i one:

Symbole stosowane w języku C++

+
Dodawanie
-
Odejmowanie
*
Mnożenie
/
Dzielenie
++
Inkrementacja (zwiększenie wartości zmiennej o 1)
--
Dekrementacja (zmniejszenie wartości zmiennej o 1)
%
Dzielenie modulo (podaje resztę z dzielenia liczby przez liczbę, działa tylko na liczbach całkowitych)
=
Przypisanie (lewa strona przyjmuje wartość prawej)
Każdy kto zna podstawy matematyki, nie powinien mieć problemów ze zrozumieniem tego materiału, ale rzeczy, które mogą sprawić kłopot postaram się wytłumaczyć przy użyciu małych programików.

#include <iostream>
#include <cstdlib>

using namespace std;

main(void)

{

int a;

a=5;

int b=2;

cout<<"5 / 2="<<a/b;

system("pause");

return 0;

}
Jak widać zastosowane w tym przykładzie dzielenie bez reszty, zachowuje się nieco dziwnie (5/2=2?!). Najprościej wytłumaczyć to tym, że liczby typu całkowitego nie mogą przechowywać ułamków i przechowują tylko ich część całkowitą(w tym przypadku 2), ale gdyby dzielić dwie liczby rzeczywiste to wynik byłby normalnym ułamkiem,(np. jeżeli a i b zdefiniujemy jako float, a=5 b=2 to a/b=2.5).

#include <iostream>
#include <cstdlib>

using namespace std;

main(void)

{

int b=2;

b++;

cout<<"b="<<b<<"\n";

cout<<"5 podzielic na 3="<<5/b<<endl;

cout<<"5 modulo 3="<<5%b;

system("pause");

return 0;

}
Bardzo przydatną rzeczą są natomiast operatory: inkrementacji (zastosowany w powyższym przykładzie b++) i dekrementacji, będące odpowiednikami zwiększenia i zmniejszenia o 1 (b++ to odpowiednik b=b+1). Inkrementacja oznacza, że zmienna przyjmuje wartość równą poprzedniej swej wartości powiększonej o 1. Analogicznie jest z dekrementacją(b=b-1). Wykorzystuje się je tam, gdzie często następuję zmiana o 1 wartości zmiennej. Ciekawostką jest możliwość wykorzystania inkrementacji przed i po nazwie zmiennej. Powoduje to dwa różne efekty:
int x=5;
cout<<x++;//wyświetli 5 i zwiększy wartość zmiennej
x=5;
cout<<++x;//zwiększy wartość zmiennej i wyświetli 6
Kolejnym dziwactwem (na pierwszy rzut oka) jest operator reszty z dzielenia % (8%3=2), który w wyniku daje całkowitą liczbę stanowiącą resztę z dzielenia tych liczb przez siebie(8/3=2*3 i 2 reszty).
A teraz duży przykład, będący ilustracją dla całego rozdziału.
Kod:

#include <iostream>
#include <cstdlib>

using namespace std;

main(void)

{

int a,b;

a=8;
//a przyjmuje wartość 8
b=3;

cout << "a=” << a <<” b=” << b << endl;

cout << "a+b=” << a+b << endl;

cout << "a-b=” << a-b << endl;

cout << "a*b=” << a*b << endl;

cout << "a/b=” << a/b << endl;
//dzielenie całkowite bez reszty
cout << "a modulo b=” << a%b << endl;
//reszta z dzielenia(modulo)
a++;

cout << „a++=” << a << endl;

b--;

cout << „b--=” << b << endl;

system("pause");

return 0;

}
Wynik:
a = 8 b = 3
a+b = 11
a-b = 5
a*b = 24
a/b = 2
a modulo b = 2
a++ = 9
b-- = 2
Należy pamiętać, o kolejności działań matematycznych i możliwości wykorzystania nawiasów do wpływania na ich kolejność.



Zadanie:
Napisz program, który wykona te same działania, co nasz główny program, z wyjątkiem reszty z dzielenia, z tą różnicą, że jako wartości zmiennych użyjemy liczb 2.5 i 4.2.

5 czerwca 2012

ROZWIĄZANIE

W ostatnim poście kazałem wam napisać program, w którym zadeklarujesz po jednej zmiennej typu int, float i char o dowolnej nazwie, a następnie przypiszesz im wartości odpowiednio char = "T", int = "42 i float = "0.25.Wyświetl je na ekranie.

Oto rozwiązanie:

#inclued <iostream>
#include <cstdlib>


using namespace std;


int main(void)
{
   char tekst = 'T';
   int liczba = 42;
   float liczba2 = 0.25;


   cout << "tekst: " << tekst << ' ' << "liczba całkowita: " << liczba << ' ' << "liczba zmienno przecinkowa: " << liczba2 << endl;




system("PAUSE");
return 0;
}

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;
}