LESS, czyli lekarstwo na bolączki CSS

6

Z pewnością każdy webmaster korzystający z technologii zwanej Cascading Style Sheets – lub, potocznie, CSS – dochodzi do wniosku, że technologia ta jest niewygodna. Jest jednak lekarstwo na to i zwie się ono LESS.

Czytaj dalej

Avian JVM – z czym to się je

0

Zapewne każdy (a przynajmniej większość) odwiedzający m4txbloga wie, że jest coś takiego jak Java i że programy napisane w niej uruchamia się za pomocą wirtualnej maszyny Javy (w skrócie JVM); większość ma także taką maszynę wirtualną zainstalowaną i w zdecydowanej większości przypadków jest to Oracle JVM, bądź OpenJDK. Nie każdy jednak wie, że są alternatywy. Lepsze alternatywy.

Czytaj dalej

Java – konwersja obrazków SWT na AWT (i vice versa) z przezroczystością

2

Konwersja obrazków biblioteki SWT na obrazki AWT może przysporzyć pewnych problemów. Ani jedna ani druga biblioteka nie udostępnia gotowych rozwiązań do tego, jedynie na stronie SWT Snippets możemy znaleźć kod, który takową operację wykonuje. Niestety, kod ten nie jest jednak idealny. Przede wszystkim, konwersja SWT => AWT jest wykonywana bez uwzględnienia przezroczystości (co ciekawe, w drugą stronę już działa). W tym krótkim artykule postaram się opisać niezbędne czynności, aby tę – jakże ważną – funkcjonalność przywrócić.

Czytaj dalej

Bezpieczeństwo popularnych protokołów komunikacji

2

Bezpieczeństwo to aktualnie temat bardzo popularny. Wszyscy zabezpieczają swoje komputery jak mogą, wszelkimi antywirusami, firewallami i wszelkimi programami z „anty” w nazwie. Okazuje się jednak, że niebezpieczeństwo czyha bliżej, niż mogłoby się wydawać, a konkretnie w komunikatorach internetowych.

Czytaj dalej

Światło wolumetryczne w Blenderze

0

Niektórych może zdziwić, że piszę poradę pomimo tego, iż w jednym z poprzednich wpisów napisałem, że porad nie będzie. Jednak z racji tego, iż podobnego tutoriala – w języku polskim – nie znalazłem, postanowiłem taki napisać. W chwili pisania tego wpisu posługiwałem się najnowszą wersją Blendera – 2.56 beta.

Czytaj dalej

Zmienne i stałe w C++

4

1. Wstęp

Określenie zmienna, jak sama nazwa wskazuje, tyczy się obiektów, które można modyfikować w trakcie działania programu. Są nieodłączną częścią w zasadzie każdego programu. Szczególnie widać ich ważność w grach — tam, gdzie całość może zmienić się w ułamku sekundy. Zmienne są wydzielonym miejscem w pamięci. Posiadają swój typ, swoją nazwę, oraz przechowują dane. Nazwa może być niemal dowolna. Napisałem niemal, ponieważ nie wolno np. używać słów kluczowych (o tym za chwilę). W nazwach najlepiej używać liter, cyfr, oraz podkreślnika.

Czytaj dalej

Funkcje matematyczne w C++, część II

1

1. Wstęp

Niniejszy wpis na tym blogu jest kontynuacją innego wpisu, który można znaleźć tutaj. Nie będę się więc zbytnio rozpisywał we wstępie, gdyż potrzebne informacje się tam znajdują.

2. Funkcje

2.1. Podstawowe funkcje trygonometryczne

Zostaną tu opisane trzy podstawowe funkcje trygonometryczne. Są to: sinus, cosinus i tangens. Jako argument przyjmują kąt, który należy podać w radianach.

double sin (double);
double cos (double);
double tan (double);

2.2. Sinus, cosinus i tangens hiperboliczny

Oprócz funkcji sin(), cos() i tan() istnieją także sinh(), cosh() i tanh(), które różnią się tym, że zwracają kolejno sinus hiperboliczny, cosinus hiperboliczny, oraz tangens hiperboliczny.

double sinh (double);
double cosh (double);
double tanh (double);

2.3. Arcus sinus, cosinus, tangens

Nie zabrakło również funkcji zwracających arcus sinus, arcus cosinus, oraz arcus tangens. Te funkcje to: asin(), acos(), atan().

double asin (double);
double acos (double);
double atan (double);

2.4. Zamiana stopni na radiany

Jak wiadomo, liczba π (PI) to 180°. Zamiana więc stopni na radiany będzie zatem bardzo prosta, i wygląda tak:

double stopnie;
cout << "Podaj kat w stopniach: ";
cin >> stopnie;
double radiany = (stopnie * M_PI) / 180.0f;
cout << "Kat " << stopnie <<
   " wyrazony w radianach wynosi " << radiany
   << "." << endl;

2.5. Logarytmy

Do obliczania logarytmów służą funkcje log() oraz log10(). Obie funkcje przyjmują po jednym parametrze, obie funkcje zwracają wynik, lecz funkcja log() oblicza logarytm naturalny, czyli o podstawie e, a log10() oblicza logarytm o podstawie 10.

double log (double);
double log10 (double);

Przykład:

double liczba;
cout << "Podaj liczbe: ";
cin >> liczba;
double logarytm = log(liczba);
double logarytm10 = log10(liczba);
cout << "Logarytm naturalny liczby " << liczba <<
   " wynosi " << logarytm <<
   ", a logarytm o podstawie 10 wynosi " << logarytm10
   << "." << endl;

2.6. Moduł (wartość bezwzględna)

Do obliczania modułu danej liczby służy funkcja fabs(). Przyjmuje 1 parametr, oraz zwraca wynik.

double fabs (double);

Przykład:

double liczba;
cout << "Podaj liczbe: ";
cin >> liczba;
double modul = fabs(liczba);
cout << "Modul liczby " << liczba << " wynosi " <<
   modul << "." << endl;

3. Zakończenie

W tych dwóch częściach opisu biblioteki math.h opisałem kilkanaście najważniejszych funkcji. Tych funkcji jest dużo więcej i można je znaleźć na innych stronach w internecie. Pomoc w języku polskim można znaleźć na przykład na Wikibooks.

Na tym kończę opis biblioteki math.h. Kolejne porady już wkrótce! Pozdro!

Funkcje matematyczne w C++, część I

1

1. Wstęp

C++ pod względem funkcji matematycznych jest bardzo bogato wyposażony. Korzystając z tego języka można stworzyć naprawdę zaawansowany kalkulator. I nie tylko! W tym wpisie postaram się przybliżyć kilka funkcji.

Zaawansowane funkcje matematyczne znajdują się w bibliotece math.h. Należy więc dołączyć tę bibliotekę:

#include <math.h>

2. Funkcje

2.1. PI i E

Na początek zacznę może od czegoś popularnego. Biblioteka math.h posiada 2 stałe, które pozwalają wyświetlić liczbę pi, oraz liczbę e. Stałe te zwą się M_PI, oraz M_E.

Przykład:

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
   cout << "Wartosc  liczby PI wynosi: " << M_PI << endl;
   cout << "Wartosc liczby E wynosi: " << M_E << endl;
   return 0;
}

2.2. Zaokrąglanie liczb

Biblioteka math.h posiada 3 funkcje służące do zaokrąglania. Te funkcje to:

  • double round (double);
  • double ceil (double);
  • double floor (double);

2.2.1. Funkcja round()

Funkcja round() zaokrągla liczbę tak, jak w szkole. Jeżeli pierwsza liczba po przecinku jest większa lub równa 5, liczba jest zaokrąglana w górę, a w przeciwnym przypadku – w dół.

2.2.2. Funkcja ceil()

Funkcja ceil() zaokrągla liczby zawsze w górę. Więc liczba 0.01 będzie zaokrąglona do 1.

2.2.3. Funkcja floor()

Funkcja floor() zaokrągla liczby zawsze w dół. Więc liczba 0.99 będzie zaokrąglona do 0.

2.3. Potęgowanie liczb

Do potęgowanie służy funkcja pow(). Funkcja ta wymaga dwóch parametrów. Pierwszym z nich jest liczba, którą chcemy potęgować, drugim potęga, do której tą liczbę chcemy podnieść. Funkcja zwraca wynik.

double pow (double, double);
Przykład:
#include <iostream>
#include <math.h>

using namespace std;

int main()
{
 double liczba, potega;
 cout << "Podaj liczbe: ";
 cin >> liczba;
 cout << "Podaj potege: ";
 cin >> potega;
 cout << "pow("<<liczba<<","<<potega<<")="<<pow(liczba,potega) << endl;
 return 0;
}

2.4. Pierwiastki

2.4.1 Pierwiastek stopnia drugiego

Do obliczania pierwiastka drugiego stopnia służy funkcja sqrt(). Funkcja przyjmuje za argument liczbę, którą chcemy pierwiastkować.

double sqrt (double);

Przykład:

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
   double liczba;
   cout << "Podaj liczbe: ";
   cin >> liczba;
   cout << sqrt(liczba) << endl;
   return 0;
}

2.4.2. Pierwiastek dowolnego stopnia

Obliczanie pierwiastka dowolnego stopnia oblicza się tak, jak potęgowanie, z tą różnicą, że jako potęgę podaje się iloraz liczb 1 i stopnia pierwiastka. Wszelkie wątpliwości powinien rozwiać poniższy przykład:

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
   double liczba, stopien;
   cout << "Podaj liczbe: ";
   cin >> liczba;
   cout << "Podaj stopien pierwiastka: ";
   cin >> stopien;
   cout << pow(liczba, 1/potega) << endl;
   return 0;
}

3. Kilka słów na koniec

Przy korzystaniu z funkcji matematycznych, należy przede wszystkim myśleć jak matematyk, a nie informatyk. Trzeba na przykład pamiętać, że pierwiastek z liczby ujemnej nie istnieje. Myśląc jak matematyk unikniesz później błędów, oraz nerwów.

Jak można się domyślić z tytułu wpisu, nie jest to koniec opisu funkcji matematycznych w C++ na tym blogu. Kolejne części już wkrótce. Jest o czym pisać: moduł liczby, logarytm, sinus, cosinus, tangens, oraz wiele innych. Do zobaczenia!