Mga pag-andar ng matematika ng wikang C
Ang mga wikang C at C++ ay tumutukoy sa maraming pagkakaiba mga function ng matematika. Sa una, sinusuportahan ng parehong wika ang parehong hanay ng 22 mathematical function. Gayunpaman, habang nabuo ang wikang C++, lumawak ang arsenal ng mga function na tinukoy dito. Tapos sa C99 version ang laki aklatan ng matematika tumaas nang malaki. Bilang resulta ng mga pagbabagong ito, ang mga aklatan ng mga pag-andar ng matematika ng mga wikang C at C++ ay nagsimulang magkaiba nang malaki sa isa't isa. Samakatuwid, inilalarawan ng kabanatang ito ang matematikal na pag-andar ng wikang C (kabilang ang mga idinagdag sa bersyon C99), at ang Kabanata 9 ay eksklusibong nakatuon sa mga paggana ng wikang C++. Gayunpaman, tandaan na ang orihinal na hanay ng mga function ng matematika ay sinusuportahan pa rin ng lahat ng bersyon ng C at C++.
Para magamit ang lahat ng mathematical function, dapat isama ng program ang header
Ang mga sumusunod na macro ay tinukoy sa bersyon C99.
Tinutukoy ng bersyon ng C99 ang mga sumusunod na macro (tulad ng function) na nag-uuri ng isang halaga.
Sa bersyon C99, ang mga sumusunod na macro sa paghahambing ay tinukoy, ang mga argumento kung saan (a at b) ay dapat na mga floating point value.
Ang mga macro na ito ay pinangangasiwaan ang mga halaga na hindi mga numero nang maayos nang hindi nagtatapon ng mga tunay na uri ng pagbubukod.
Ang EDOM at ERANGE macros ay ginagamit din ng mga math function. Ang mga macro na ito ay tinukoy sa header
Ang mga error sa mga bersyon C89 at C99 ay pinangangasiwaan nang iba. Kaya, sa C89, kung ang argumento ng math function ay hindi nasa loob ng domain kung saan ito tinukoy, ibinabalik ang ilang value na partikular sa pagpapatupad at ang built-in na global integer variable na errno ay nakatakda sa halaga ng EDOM. Sa C99, ang isang error sa paglabag sa domain ay nagreresulta din sa isang value na partikular sa pagpapatupad na ibinalik. Gayunpaman, ang halaga ng math_errhandling ay maaaring magpahiwatig kung ang ibang mga aksyon ay ginagawa. Kung ang math_errhandling ay naglalaman ng value na MATH_ERRNO, ang built-in na global integer variable na errno ay itatakda sa halaga ng EDOM. Kung ang math_errhandling ay naglalaman ng value na MATH_ERREXCEPT, isang tunay na exception ang ihahagis.
Sa C89, kung ang isang function ay bumubuo ng isang resulta na masyadong malaki para sa representasyon na pangasiwaan, isang overflow ang magaganap. Sa kasong ito, ang function ay nagbabalik ng HUGE_VAL at ang errno ay nakatakda sa ERANGE na halaga na nagpapahiwatig ng isang error sa saklaw. Kapag may nakitang underflow, ang function ay nagbabalik ng zero at itinatakda ang errno sa ERANGE. Sa C99, ang isang overflow na error ay nagiging sanhi din ng pag-andar na magbalik ng isang halaga. HUGE_VAL, at kung mawawalan ito ng kabuluhan - zero. Kung ang math_errhandling ay naglalaman ng value na MATH_ERRNO, ang global variable na errno ay itatakda sa value na ERANGE na nagsasaad ng error sa range. Kung ang math_errhandling ay naglalaman ng value na MATH_ERREXCEPT, isang tunay na exception ang ihahagis.
Sa bersyon C89, ang mga argumento sa mathematical function ay dapat na doble ang uri at ang mga halaga na ibinalik ng mga function ay may uri ng doble. Sa bersyon C99, idinagdag ang float at long double variant ng mga function na ito, na gumagamit ng mga suffix na f at l, ayon sa pagkakabanggit. Halimbawa, sa bersyon C89, ang sin() function ay tinukoy bilang mga sumusunod.
Dobleng kasalanan(double arg);
Sa bersyon C99, ang kahulugan sa itaas ng sin() function ay sinusuportahan at dalawa pang pagbabago ang idinagdag - sinf() at sinl().
Float sinf(float arg); mahabang double sinl(mahabang double arg);
Ang mga operasyon na ginagawa ng lahat ng tatlong mga function ay pareho; tanging ang data na sumailalim sa mga operasyong ito ang naiiba. Ang pagdaragdag ng f- at 1-modifications sa mga mathematical function ay nagbibigay-daan sa iyong gamitin ang bersyon na pinakaangkop sa iyong data.
Dahil nagdagdag ang C99 ng napakaraming bagong feature, sulit na ilista nang hiwalay ang mga feature na sinusuportahan ng C89 (ginagamit din ang mga ito sa C++).
acos | asin | atan | atan2 | kisame |
cos | cosh | exp | fabs | sahig |
fmod | frexp | ldexp | log | log10 |
modf | pow | kasalanan | sinh | sqrt |
kayumanggi | tanh |
At isa pang bagay: ang lahat ng mga anggulo ay tinukoy sa mga radian.
Tingnan din
acos - Ibinabalik ang halaga ng arc cosine
acosh - Ibinabalik ang halaga ng hyperbolic arc cosine
asin - Ibinabalik ang halaga ng arcsine
asinh - Ibinabalik ang hyperbolic arcsine value
atan - Ibinabalik ang halaga ng arctangent
atan2 - Ibinabalik ang arctangent ng a/b
atanh - Ibinabalik ang halaga ng hyperbolic arctangent
cbrt - Ibinabalik ang cube root value
ceil - Ibinabalik ang pinakamaliit na integer na mas malaki kaysa sa halaga ng ibinigay na argumento
copysign - Binibigyan ang ibinigay na argumento ng tanda na mayroon ang tinukoy na argumento
cos - Ibinabalik ang halaga ng cosine
cosh - Ibinabalik ang halaga ng hyperbolic cosine
erf - Ibinabalik ang halaga ng function ng error
erfc - Nagbabalik ng opsyonal na halaga ng function ng error
exp - Ibinabalik ang exponent value
exp2 - Ibinabalik ang numero 2 na itinaas sa ibinigay na kapangyarihan
expm1 - Ibinabalik ang halaga ng natural na logarithm e binawasan ng isa
fabs - Nagbabalik ganap na halaga
fdim - Nagbabalik ng zero o ang pagkakaiba ng dalawang ibinigay na argumento
floor - Ibinabalik ang pinakamalaking integer na mas mababa sa o katumbas ng halaga ng ibinigay na argumento
fma - Ibinabalik ang halaga ng a*b+c na ibinigay na mga argumento
fmax - Ibinabalik ang mas malaki sa dalawang value
fmin - Ibinabalik ang mas maliit sa dalawang value
fmod - Ibinabalik ang natitirang bahagi ng dibisyon
frexp - Mga break binigay na numero sa mantissa at exponent
hypot - Ibinabalik ang haba ng hypotenuse na ibinigay sa haba ng dalawang binti
ilogb - Kinukuha ang exponential value
ldexp - Ibinabalik ang halaga ng expression na num*2^exp.
Ang mga operasyon +, -, * at ** ay tinukoy para sa mga integer. Ang dibisyon / operasyon para sa mga integer ay bumabalik tunay na numero(ibig sabihin uri ng float). Gayundin, ang exponentiation function ay nagbabalik ng float value kung ang exponent ay negatibong numero.
Ngunit mayroon ding isang espesyal na operasyon integer division, na ginagawa sa pamamagitan ng pagtatapon ng fractional na bahagi, na tinutukoy ng // (ito ay tumutugma sa div operation sa Pascal). Nagbabalik ito ng integer: ang integer na bahagi ng quotient. Ang isa pang kaugnay na operasyon ay ang operasyon ng pagkuha ng natitirang bahagi, na tinutukoy ng % (ito ay tumutugma sa mod operation sa Pascal). Halimbawa:
Print(17 / 3) # ay magpi-print ng 5.66666666667 print(17 // 3) # will print 5 print(17 % 3) # will print 2
Ang ilan sa nakalistang mga function(int , round , abs) ay karaniwan at hindi nangangailangan ng math module na gagamitin.
Function | Paglalarawan |
---|---|
Pag-ikot | |
int(x) | Nira-round ang isang numero patungo sa zero. Ito karaniwang pag-andar, hindi mo kailangang isama ang math module para magamit ito. |
bilog(x) | Nira-round ang isang numero sa pinakamalapit na integer. Kung praksyonal na bahagi numero ay 0.5, pagkatapos ay ang numero ay bilugan sa pinakamalapit na kahit na numero. |
bilog(x, n) | Nira-round ang numerong x sa n decimal na lugar. Ito ay isang karaniwang function; hindi mo kailangang isama ang math module upang magamit ito. |
sahig(x) | Nira-round down ang isang numero (“floor”), na may floor(1.5) == 1 , floor(-1.5) == -2 |
kisame(x) | Nira-round up ang isang numero (“ceiling”), na may ceil(1.5) == 2 , ceil(-1.5) == -1 |
abs(x) | Module ( ganap na halaga). Ito ay isang karaniwang tampok. |
Mga ugat, logarithms | |
sqrt(x) | Kuwadrado na ugat. Paggamit: sqrt(x) |
log(x) | Likas na logarithm. Kapag tinawag bilang log(x, b), ibinabalik ang logarithm sa base b . |
e | Ang base ng natural logarithms ay e = 2.71828... |
Trigonometry | kasalanan(x) | Sine ng anggulo na tinukoy sa radians |
cos(x) | Cosine ng anggulo na tinukoy sa radians |
tan(x) | Tangent ng anggulo, na tinukoy sa radians |
asin(x) | Arcsine, ibinabalik ang halaga sa radians |
acos(x) | Arc cosine, ibinabalik ang halaga sa radians |
atan(x) | Arctangent, ibinabalik ang halaga sa radians |
atan2(y, x) | Polar angle (sa radians) ng isang punto na may mga coordinate (x, y). |
digri(x) | Kino-convert ang isang anggulo na tinukoy sa radians sa mga degree. |
radians(x) | Kino-convert ang isang anggulo na tinukoy sa mga degree sa radians. |
pi | pare-pareho π = 3.1415... |
Ang lahat ng mga function sa matematika ay nangangailangan ng isang header
1 | acos | Function na double acos(double arg arg |
2 | asin | Function double asin(double arg) ibinabalik ang arc cosine ng argumento arg. Ang halaga ng argument ng function ay dapat nasa hanay mula -1 hanggang 1, kung hindi, magkakaroon ng error. |
3 | atan | Function double atan(double arg) ibinabalik ang arctangent ng argumento arg. |
4 | atan2 | Function double atan2(double x, doble y) ibinabalik ang arctangent ng halaga y/x. |
5 | kisame | Function na double ceil(double num) ibinabalik ang pinakamalapit na integer (kinakatawan bilang isang floating-point real number) na hindi mas mababa sa halaga argumento num. Halimbawa, ang ceil(1.02) ay magbabalik ng 2.0. Ang conversion na ito ay tinatawag na over-rounding. |
6 | cos | Function na double cos(double arg) ibinabalik ang cosine ng argumento arg |
7 | cosh | Function na double cosh(double arg) ay nagbabalik ng hyperbolic cosine ng argumento arg. |
8 | exp | Function na double exp(double arg) ibinabalik ang base ng natural na logarithm e, itinaas sa isang kapangyarihan arg. |
9 | fabs | Function na double fabs(double num) ibinabalik ang absolute value (modulo value) ng argument num. |
10 | sahig | Function na double floor(doble num) ay nagbabalik ng pinakamalaking integer (kinakatawan bilang isang floating-point real number) na hindi mas malaki kaysa sa halaga ng argumento num. Halimbawa, ibabalik ng floor(1.02) ang numerong 1.0. Ang conversion na ito ay tinatawag na down rounding. |
11 | fmod | Ang function na double fmod(double x, double y) ay nagbabalik ng natitira sa division x/y. |
12 | frexp | Function na double frexp(double num, int * exp) nagpapalawak ng isang numero num sa pamamagitan ng isang mantissa mula 0.1 hanggang 1, hindi kasama ang 1, at isang integer exponent, kaya num = mantissa. Ibinabalik ng function ang mantissa at ang halaga ng exponent ay nakaimbak sa variable na itinuro ng pointer exp. |
13 | log | Function na double log(doble num) nagbabalik natural na logarithm mga numero num. Kung ang argumento num |
14 | log10 | Function na double log10(double num) ibinabalik ang decimal logarithm ng isang numero num. Kung ang argumento num negatibo o katumbas ng zero, may nangyayaring error. |
15 | pow | Function na double pow(double base, doble exp) ay nagbabalik ng isang numero base, itinaas sa kapangyarihan exp. Kung ang batayan ng antas base ay katumbas ng zero, at ang exponent exp ay mas mababa sa o katumbas ng zero, ang isang error ay maaaring mangyari dahil sa argument na umaalis sa domain ng kahulugan ng function (domain error). Nagaganap din ang error na ito kung ang argument base ay negatibo at ang argumento exp ay hindi isang integer. |
16 | kasalanan | Function double sin(doble arg) ay nagbabalik ng sine ng argumento arg. Ang halaga ng argumento ay dapat na ipahayag sa radians. |
17 | sinh | Function double sinh(double arg) ibinabalik ang hyperbolic sine ng argumento arg. |
18 | sqrt | Function na double sqrt(double num) nagbabalik parisukat na ugat argumento num. Kung ang argument ay negatibo, ang isang error ay nangyayari dahil sa pag-andar na lumalabas sa saklaw. |
19 | kayumanggi | Function na double tan(double arg) ay nagbabalik ng tangent ng argumento arg. Ang halaga ng argumento ay dapat na ipahayag sa radians. |
20 | tanh | Function na double tanh(double arg) ay nagbabalik ng hyperbolic tangent ng argumento arg. |
Ang mga sumusunod na operator ng arithmetic ay tinukoy sa C++.
Pagdaragdag;
– pagbabawas;
* pagpaparami
/ dibisyon
% modulo division
– – pagbaba (bawasan ng 1)
Pagtaas (pagtaas ng 1).
Ang aksyon ng mga operator +, –, * at / ay kasabay ng pagkilos ng mga katulad na operator sa algebra. Maaaring ilapat ang mga ito sa anumang built-in na numeric na uri ng data.
Pagkatapos ilapat ang division operator (/) sa isang integer, ang natitira ay itatapon. Halimbawa, ang resulta ng integer division 10/3 ay 3. Ang natitira sa dibisyon ay maaaring makuha gamit ang modulo operator (%). Halimbawa, ang 10%3 ay katumbas ng 1. Nangangahulugan ito na sa C++ ang % operator ay hindi magagamit sa mga non-integer na uri ng data.
Ang increment (++) at decrement (– –) operator ay may napakakagiliw-giliw na katangian. Samakatuwid, dapat silang bigyan ng espesyal na pansin.
Ang increment operator ay nagdaragdag ng numero 1 sa operand nito, at ang decrement operator ay nagbabawas ng 1 mula sa operand nito. Nangangahulugan ito na ang mga tagubilin:
katulad ng tagubiling ito:
At ang mga tagubilin:
katulad ng tagubiling ito:
Ang increment at decrement operator ay maaaring lumitaw alinman sa harap ng kanilang operand (prefix form) o pagkatapos nito (postfix form). Halimbawa, mga tagubilin
maaaring muling isulat bilang unlapi
X;//prefix form ng increment operator
o postfix form:
x++;//postfix form ng increment operator
Sa nakaraang halimbawa, hindi mahalaga kung ginamit ang increment operator sa anyong prefix o postfix. Ngunit kung ang increment o decrement operator ay ginagamit bilang bahagi ng isang mas malaking expression, kung gayon ang form kung saan ito ginagamit ay napakahalaga. Kung ang naturang operator ay ginagamit sa anyo ng prefix, pagkatapos ay gagawin muna ng C++ ang operasyong ito upang ang operand ay makakuha ng bagong halaga, na pagkatapos ay gagamitin ng natitirang bahagi ng expression. Kung ang operator ay ginagamit sa postfix form, ginagamit ng C++ ang lumang value nito sa expression at pagkatapos ay nagsasagawa ng operasyon na nagiging sanhi ng operand na kumuha ng bagong value.
Mga function ng matematika
Ang wikang C++ ay may mga espesyal na function para sa pagkalkula ng mga algebraic na expression. Ang lahat ng naturang function ay nakapaloob sa isang hiwalay na header file, math.h. Samakatuwid, upang magamit ang mga function sa code ng programa, dapat kang kumonekta ang file na ito gamit ang direktiba
#isama
Narito ang mga pangunahing algebraic function ng C++.
abs(x) - modulus ng isang integer;
labs(x) - module ng isang "mahabang" integer;
fabs(x) - modulus ng isang floating point number;
sqrt(x) - square root extraction;
pow(x,y) - pagtataas ng x sa kapangyarihan y;
cos(x) - cosine;
kasalanan(x) - sine;
tan(x) - padaplis;
acos(x) - arc cosine;
asin(x) - arcsine;
atan(x) - arctangent;
exp(x) - exponent sa x power;
log(x) - natural logarithm;
log10(x) - decimal logarithm
Kapag tinataas ang isang numero sa isang fractional na kapangyarihan, ang denominator ng fractional na kapangyarihan ay dapat na nakasulat sa tunay na anyo. Halimbawa: ang square root ng a ay nakasulat na ganito: pow(a,1/ 2.0 )
Ipakita natin ang paggamit ng mga function na may mga halimbawa.
5. I/O operator sa C++
Upang magpakita ng mensahe sa screen, gamitin ang sumusunod na pahayag ng C++:
cout<<”текст”;
#isama
Ang impormasyong nakapaloob sa dobleng panipi ay ang mensaheng dapat ipakita. Sa C++, ang anumang pagkakasunud-sunod ng mga character na nakapaloob sa double quote ay tinatawag na isang string dahil binubuo ito ng ilang mga character na pinagsama-sama upang bumuo ng isang mas malaking bloke (elemento).
Ang linya sa pahayag ng COUT ay maaaring maglaman ng tinatawag na mga wildcard na character - mga character na wala sa keyboard o ginagamit para sa mga pangunahing character sa teksto ng programa. Ang bawat wildcard na character ay pinangungunahan ng isang "\" character.
Narito ang isang listahan ng mga naturang simbolo:
\a – signal ng tunog
\n – pumunta sa bagong linya
\t – pahalang na tab
\v – patayong tab
\\ - backslash
\’ – nag-iisang quote
\” – dobleng panipi
\? – tandang pananong.
Halimbawa, isang operator tulad ng:
cout>>“halimbawa\nteksto”;
Ang salitang "halimbawa" ay lalabas sa isang linya, at ang salitang "teksto" sa kabilang linya.
Operator ng form:
cout>>“shop\””seagull\””;
Ang salitang "Seagull" ay ipapakita sa double quotes.
Bilang karagdagan sa teksto, maaaring ipakita ng operator ang mga halaga ng mga variable sa screen, pagsamahin ang mga ito sa teksto.