Stałe. Funkcje standardowe. Niektóre stałe i funkcje z pliku nagłówkowego math.h. M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2

Podobne dokumenty
Funkcje matematyczne w C. Programowanie w C Marek Pudełko

ZMIENNE P R O G R A M O W A N I E C + +

Wyrażenia arytmetyczne

Stałe oznaczane są słowem kluczowym final. Do stałej wartość można przypisać tylko raz. Dobrą konwencją jest nazywanie stałych wielkimi literami

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Funkcje. czyli jak programować proceduralne. Programowanie Proceduralne 1

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

J ZYK C: STAŁE I ZMIENNE, TYPY DANYCH, OPERATORY I WYRA ENIA ARYTMETYCZNE

Spis treści JĘZYK C - OPERACJE WE-WY, ZMIENNE, TYPY I NAZWY ZMIENNYCH, OPERATORY I WYRAŻENIA ARYTMETYCZNE, FUNKCJE MATEMATYCZNE.

operator zmiany znaku operatory mnożenia, dzielenia, dzielenia modulo operatory dodawania, odejmowania

I. Podstawy języka C powtórka

ZASADY PROGRAMOWANIA STRUKTURALNEGO (ZAP - zima 2016) Liczby, znaki, napisy, operatory logiczne, stałe. Pętle typu while.

Spis treści JĘZYK C - OPERACJE WE-WY, ZMIENNE, TYPY I NAZWY ZMIENNYCH, OPERATORY I WYRAŻENIA ARYTMETYCZNE, FUNKCJE MATEMATYCZNE.

Klasyfikacja typów w C++

Teksty Liczby Formuły. Operatory. dr inż. Jarosław Forenc. Pasek narzędzi. Pasek narzędzi. (Atrybuty komórek)

dr inż. Jarosław Forenc

ZASADY PROGRAMOWANIA STRUKTURALNEGO (ZAP - zima 2014) Wyrażenia c.d. Pętle typu while.

Spis treści JĘZYK C - OPERACJE WE-WY, ZMIENNE, TYPY I NAZWY ZMIENNYCH, OPERATORY I WYRAŻENIA ARYTMETYCZNE, FUNKCJE MATEMATYCZNE.

Część 4 życie programu

Funkcje. czyli jak programować proceduralne. Programowanie Proceduralne 1

Adres komórki-nazwa kolumny i nazwa wiersza, na przecięciu których znajduje się komórka. B3- adres aktywnej komórki

C++ wprowadzanie zmiennych

C/C++ Biblioteki funkcji standardowych

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 2

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

1 Wyrażenia potęgowe i logarytmiczne.

II. Funkcje. Pojęcia podstawowe. 1. Podstawowe definicje i fakty.

Języki i metodyka programowania. Wprowadzenie do języka C

2) R stosuje w obliczeniach wzór na logarytm potęgi oraz wzór na zamianę podstawy logarytmu.

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

1. Wypisywanie danych

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Języki programowania wysokiego poziomu. PHP cz.2.

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Struktury Struktura polami struct struct struct struct

I - Microsoft Visual Studio C++

Podstawy programowania w C++

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

Klasy: String, Random, Math. Korzystanie z dokumentacji.

ROZKŁAD MATERIAŁU NAUCZANIA KLASA 1, ZAKRES PODSTAWOWY

ROZKŁAD MATERIAŁU DO II KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

1. Wprowadzanie danych z klawiatury funkcja scanf

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

Wstęp do Informatyki

sem. II(język C, cz. I) Dr inż. M. Czyżak

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

1 Powtórzenie wiadomości

3 Przygotował: mgr inż. Maciej Lasota

Programowanie komputerowe. Zajęcia 1

1 Podstawy c++ w pigułce.

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Katedra Elektrotechniki Teoretycznej i Informatyki. sem. III i IV. Dr inż. M. Czyżak

Podstawy nauk przyrodniczych Matematyka Wstęp

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Wstęp do informatyki- wykład 8 Pętla while, do while,for -pętla w pętli- przykłady Operator rzutowania Manipulatory

1 Podstawy c++ w pigułce.

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Kup książkę Poleć książkę Oceń książkę. Księgarnia internetowa Lubię to!» Nasza społeczność

SPIS TREŚCI WSTĘP LICZBY RZECZYWISTE 2. WYRAŻENIA ALGEBRAICZNE 3. RÓWNANIA I NIERÓWNOŚCI

Wstęp do Programowania, laboratorium 02

Programowanie strukturalne. dr inż. Tadeusz Jeleniewski

Zajęcia 4 procedury i funkcje

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Podstawy programowania skrót z wykładów:

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Podstawowe wyrażenia matematyczne

Całki nieoznaczone. 1 Własności. 2 Wzory podstawowe. Adam Gregosiewicz 27 maja a) Jeżeli F (x) = f(x), to f(x)dx = F (x) + C,

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 9 - sem.iii. Dr inż. M. Czyżak

Pakiet edukacyjny do nauki przedmiotów ścisłych i kształtowania postaw przedsiębiorczych

Podstawy Programowania Podstawowa składnia języka C++

Zagadnienia do małej matury z matematyki klasa II Poziom podstawowy i rozszerzony

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

ZASADY PROGRAMOWANIA STRUKTURALNEGO (ZAP - zima 2015) Liczby, znaki, napisy, wyrażenia. Pętle typu while.

JAVAScript w dokumentach HTML (1)

III. Funkcje rzeczywiste

Ćwiczenia podstawowe, zestaw 5, część 1

Wstęp do Informatyki

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

O funkcjach : mówimy również, że są określone na zbiorze o wartościach w zbiorze.

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 7- sem.iii. M. Czyżak

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Tablice, funkcje - wprowadzenie

Programowanie Delphi obliczenia, schematy blokowe

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Blok zawierający opis danego quizu, np. Pierwsze kolokwium z podstaw chemii. Blok definiujący czas trwania kolokwium.

2 Przygotował: mgr inż. Maciej Lasota

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Kształcenie w zakresie podstawowym. Klasa 1

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

PLAN WYNIKOWY DLA KLASY DRUGIEJ POZIOM PODSTAWOWY I ROZSZERZONY. I. Proste na płaszczyźnie (15 godz.)

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

ROZDZIAŁ 2. Operatory

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Propozycja szczegółowego rozkładu materiału dla 4-letniego technikum, zakres podstawowy i rozszerzony. Klasa I (90 h)

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Transkrypt:

Niektóre stałe i funkcje z pliku nagłówkowego math.h. Stałe Identyfikator M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4 M_1_PI M_2_PI M_1_SQRTPI M_2_SQRTPI Znaczenie e log 2 (e) log 10 (e) ln(2) ln(10) 2 4 1 2 1 2 M_SQRT2 2 M_SQRT_2 1 2 Biblioteki standardowe Borland C++ zawierają funkcje operujące na liczbach rzeczywistych typu double i typu long double. Dla funkcji, których nazwa zakończona jest literą l argument i wynik są typu long double. Funkcje trygonometryczne: sin,sinl, cos,cosl, tan,tanl obliczające odpowiednio sinus, cosinus i tangens dla zadanego argumentu w radianach. W przypadku tangensa należy pamiętać, że funkcja nie jest określona dla kątów 2 2k, k całkowite. Deklaracja funkcji obliczającej cosinus jest następująca double cos(double x); long double cosl(long double x); Analogicznie dla dwu pozostałych funkcji. 1

Funkcje cyklometryczne: Są to funkcje asin,asinl, acos,acosl, atan, atanl obliczające arcussinus, arcuscosinus oraz arcustangens. Ponadto są funkcje atan2 i atan2l obliczające arcustangens dla ilorazu argumentów. double asin(double x); long double asinl(long double x); Funkcja oblicza arcussinus dla argumentu z przedziału [-1, 1]. Jako wynik otrzymujemy liczbę z przedziału [, ]. 2 2 Podobnie dla acos, acosl z tym, że wynik należy do przedziału [ 0, ]. double atan(double x); long double atanl(long double x); Wartością funkcji jest arcustangens argumentu x. Wartość wynikowa należy do przedziału [, ]. 2 2 double atan2(double x, double y); long double atan2l(long double x, long double y); Wartością funkcji jest arcustangens dla ilorazu argumentów x/y. Zaletą funkcji jest, że zwraca poprawne wartości dla y bliskich zero. Funkcje hiperboliczne Są to funkcje wyznaczania wartości sinusa, cosinusa i tangensa hiperbolicznego: sinh, x x sinhl, cosh, coshl, tanh tanhl. Wartościami ich są odpowiednio: ( e e ) / 2, ( e x x e ) / 2 i sinh(x)/cosh(x). Nagłówek dla sinusa hiperbolicznego jest następujący double sinh(double x); long double sinhl(long double x); i podobnie dla dwu pozostałych funkcji. 2

Funkcje wykładnicze i logarytmiczne exp, expl double exp(double x); long double expl(long double x); oblicza wartość x e. ldexp, ldexpl double ldexp(double x, int wykl); long double expl(long double x, int wykl); oblicza wartość wykl x * 2 funkcje log, logl, log10, log10l pozwalają obliczyć wartość logarytmu naturalnego i logarytmu dziesiętnego. Ich deklaracje są podobne do dotychczas przytaczanych Przykład zastosowania cout << log(m_e); wyświetli wartość 1. W dalszym ciągu nie będziemy przytaczali wszystkich funkcji z przyrostkiem l. Potęgi, pierwiastki i wielomiany Wartość wielomianu można obliczy przy pomocy funkcji poly, polyl double poly(double x, int n, double a[]); oblicza wartość wielomianu stopnia n o współczynnikach w tablicy a dla argumentu x. Postać wielomianu stopnia n jest następująca a n *x n + a n-1 *x n-1....+ a 1 *x + a 0 Przykład: #include <iostream > #include <math.h > using namespace std; /* wielomian: x**3-2x**2 + 5x - 1 */ void main(void) 3

{ } double wspolcz[] = { -1.0, 5.0, -2.0, 1.0}; double result; result = poly(2.0, 3, wspolcz); cout<<"wartość wielomianu: \n x^3-2x^2 + 5x 1 ; cout<< \nw 2.0 wynosi :" << result<<endl; system("pause"); Na ekranie otrzymamy następujące wyniki Wartość wielomianu: x^3-2x^2 + 5x - 1 w 2.0 wynosi :9 Wartość x y można obliczyć przy pomocy funkcji pow, powl double pow(double x, double y); Uwaga: dla x<0, y powinien być całkowitą liczbą. Poprawne jest wywołanie pow(- 2.0,3.0) a pow(-2.0,3.5) jest niepoprawne. Wartość 10 n można obliczyć przy pomocy funkcji pow10, pow10l double pow10(int n); I tak cout <<pow10(3.50); jako wynik daje 1000 ( 3.5 konwertowane jest na typ int). Przy pomocy funkcji sqrt i sqrtl obliczamy wartość pierwiastka kwadratowego. double sqrt(double x); Funkcje zaokrągleń Zaokrąglenie w górę realizują funkcje ceil i ceill. Deklaracja pierwszej to double ceil(double x); Wartością funkcji jest najmniejsza liczba całkowita nie mniejsza niż x. 4

Zaokrąglenie w dół realizują funkcje floor i floorl. Deklaracja double ceil(double x); wartością funkcji jest największa liczba całkowita nie większa niż x. Przykład: x=floor(123.45); // x=123; y=ceil(123.45); // y=124; Inne funkcje Wartość bezwzględną można wyznaczyć przy pomocy int abs(int x); //daje wynik całkowity double fabs(double x); // wynik double long double fabsl(long double x); // wynik long double Funkcje double fmod(double x, double y); i fmodl obliczają resztę z dzielenia x przez y. Reszta f określona jest tak, że x = ay + f dla pewnego całkowitego a, i 0 <=abs(f) < abs(y). Jeśli y = 0 to fmod i fmodl zwracają 0. cout <<fmod(6.44,2.5)<< <<fmod(-6.44,2.5)<< <<fmod(6.44,-2.5)<< <<fmod(-6.44,-2.5); wyświetli na ekranie liczby 1.44-1.44 1.44-1.44 Funkcja double frexp(double x, int *exponent); (jest frexpl) dzieli liczbę rzeczywistą x na mantysę m[0.5,1] i całkowity wykładnik tak aby zachodziła równość x = m*2 n. Obliczona mantysa jest wartością funkcji a wykładnik n jest zapamiętywany w zmiennej wskazywanej przez exponent. 5

Przykład int n; double m;... m = frexp(8, &n); cout<<m<<"*2^"<<n<<endl;... wyświetli 0.5*2^4 Funkcja zadeklarowana double modf(double x, double *ipart); rozdziela liczbę rzeczywistą x na część całkowitą, która jest przypisywana zmiennej wskazywanej przez ipart, i ułamkową, która jest wartością funkcji. (jest również wersja long) I tak ulamek=modf(-100.45,&calkowita); jako wyniki daje ulamek=-0.45 i calkowita=-100. Funkcja double hypot(double x, double y); oblicza wartość sqrt(x*x+y*y); 6

Funkcje konwersji (plik nagłówkowy stdlib.h) Konwersja łańcuch -> liczba całkowita Funkcje o deklaracji int atoi(const char *s); long atol(const char *s); przekształcają łańcuch wskazywany przez parametr s w liczbę całkowitą typu int lub long odpowiednio. Łańcuch musi zawierać zapis w postaci [spacje][znak][ddd] gdzie spacje oznaczają dowolną liczbę znaków spacji lub tabulacji, znak jest + lub -, ddd jest łańcuchem cyfr dziesiętnych. Obie funkcji nie obsługują błędów związanych z przekroczeniem zakresu liczb. Pierwszy nie rozpoznany znak kończy konwersję. Jako wartość zwracana jest dotychczas utworzona liczba lub zero. Przykład: atoi("1234") // 1234; atoi("1234567890123") // przekroczenie zakresu wynik nieokreślony atoi("123.4") // 123 atoi("123w4") //123; atoi(" w1234") // 0 Są również funkcje konwersji dla systemu ósemkowego i szesnastkowego. Liczba całkowita -> łańcuch char *itoa(int value, char *string, int radix); char *ltoa(long value, char *string, int radix); char *ultoa(unsigned long value, char *string, int radix); 7

Funkcje te zamieniają liczbę całkowitą określoną parametrem value na łańcuch reprezentujący ją w systemie o podstawie radix i zapisie znak moduł. Funkcje zwracają adres określony parametrem string. Uwagi: parametr radix powinien być z przedziału [2,36]; w przypadku podania złej podstawy wynikiem jest łańcuch pusty funkcja itoa na wynik może wykorzystać maksymalnie 17 znaków (2 bajty + NULL) a pozostałe dwie 33 znaki. Następujący ciąg instrukcji wyświetli zapis liczby 2015 w różnych systemach liczenia: { char LiczbaStr[20]; for (int i=2; i<37; i++) cout << setw(2)<<i<<" "<< itoa(1999,liczbastr,i)<<endl; } łańcuch -> liczba rzeczywista double atof(const char *s); long double _atold(const char *s); double strtod(const char *s, char **endptr); long double _strtold(const char *s, char **endptr); Dwie pierwsze funkcje osiągalne są również w pliku nagłówkowym math.h. Wynikiem funkcji jest wartość liczby otrzymanej z łańcucha s. Funkcje rozpoznają +INF i -INF jako nieskończoności. Lepszą kontrolę błędów konwersji zapewnia drugi zestaw funkcji. W nich ostatni parametr zawiera adres pierwszego znaku nie wchodzącego w skład liczby rzeczywistej. Dla char *znak,liczba[]="123.56w456"; cout << strtod(liczba,&znak); cout <<" "<<*znak<<endl; otrzymamy na ekranie 123.56 w 8