uit<<"Для
продолжения нажмите любую клавишу. . .";
//pauze om het resultaat te bekijken
//beëindig het hoofdprogramma
Alle wiskundige functies zijn geïmplementeerd als methoden van de klasse Math, waarvan de belangrijkste worden weergegeven in Tabel 4.1
Tabel 4.1 – Hoofdvelden en methoden van de klasse Math
Naam van methode
|
Beschrijving
|
Uitleg
|
|
|
|x|, geschreven als Abs(x)
|
|
boogcosinus
|
Acos(dubbele x), hoek wordt gespecificeerd in radialen
|
|
boogsinus
|
|
|
Boogtangens
|
|
|
Boogtangens
|
Atan2(dubbel x,dubbel y) – hoek waarvan de raaklijn het resultaat is van het delen van y door x
|
|
Werk
|
BigMul(int x,int y)
|
|
Ronden naar boven
|
Cellen (dubbel x)
|
|
|
|
|
Hyperbolische cosinus
|
|
|
Verdeling en rest
|
|
|
|
2,71828182845905
|
|
Exposant
|
|
|
Rond naar beneden af
|
Verdieping(dubbel x)
|
|
Rest van de verdeling
|
IEEEREmainder(dubbel x, dubbel y)
|
|
Natuurlijke logaritme
|
|
|
Decimale logaritme
|
|
|
Maximaal 2 nummers
|
|
Vervolg van tabel 4.1
Naam van methode
|
Beschrijving
|
Uitleg
|
|
Minimaal 2 nummers
|
|
|
De waarde van pi
|
3,14159265358979
|
|
Machtsverheffing
|
Pow(x,y) – x tot de macht y
|
|
Afronding
|
Ronde(3,1)=3 Ronde(3,8)=4
|
|
Hekje
|
|
|
|
|
|
Hyperbolische sinus
|
|
|
Vierkantswortel
|
|
|
|
|
|
Hyperbolische raaklijn
|
|
Een voorbeeld van een lineair rekenprogramma met een bepaalde formule
naamruimte ConsoleApplicationl
( statische leegte Main()
Console.WriteLine(“Voer x in”);
buf=Console.ReadLine();
dubbel x=Convert.ToDouble(buf);
Console.WriteLine(“Voer alfa in”);
buf=Console.ReadLine();
dubbel a=dubbel.Parse(buf);
dubbel y=Wiskunde.Sqrt(Wiskunde.PI*x)-
Wiskunde.Exp(0,2*Wiskunde.Sqrt(a))+
2*WiskundeTan(2*a)+
1.6e3*Wiskunde.Log10(Wiskunde.Pow(x,2));
Console.WriteLine(“Voor x= (0) en alfa =(1)”, x,a);
Console.WriteLine(“Resultaat =” +y); )))
Lezing 5. C#-taaloperatoren
De samenstelling van de C#-taaloperatoren, hun syntaxis en semantiek zijn overgenomen van de C++-taal. Elke expressie die eindigt met een puntkomma is een statement.
Blok- of samengestelde instructie
Met behulp van accolades kunnen uitspraken in meerdere talen (mogelijk afgewisseld met declaraties) worden gecombineerd tot een enkele syntactische constructie die een blok- of samengestelde instructie wordt genoemd:
exploitant_1
exploitant_N
Syntactisch gezien wordt een blok behandeld als een enkele instructie en kan het overal worden gebruikt in constructies waarbij de syntaxis een enkele instructie vereist. Het lichaam van de lus en de takken van de if-instructie worden meestal weergegeven als een blok.
Lege operator
De lege instructie is "leeg", afgesloten met een puntkomma. Het wordt gebruikt wanneer de syntaxis een operator vereist, maar de betekenis niet. Soms is het handig om ontbrekende instructies te behandelen als een bestaande lege instructie. Het is syntactisch acceptabel om extra puntkomma's in te voegen, ervan uitgaande dat er lege instructies worden ingevoegd. De volgende constructie is bijvoorbeeld syntactisch geldig:
voor (int j=1; j<5;
j++)
//оператор цикла
(;;;); //lege operator
Het kan worden beschouwd als een tijdsvertraging, inactieve werking.
Alle wiskundige functies vereisen een header . C-programma's gebruiken een header
1
|
aco's
|
Functie dubbele acos(dubbel arg arg |
2
|
asin
|
Functie dubbel asin (dubbel arg) retourneert de boogcosinus van het argument arg. De waarde van het functieargument moet tussen -1 en 1 liggen, anders treedt er een fout op. |
3
|
atan
|
Functie dubbel atan(dubbel arg) retourneert de boogtangens van het argument arg.
|
4
|
atan2
|
Functie dubbel atan2(dubbel X, dubbel j) retourneert de boogtangens van de waarde j/X.
|
5
|
plafond
|
Functie dubbel plafond (dubbel num) retourneert het dichtstbijzijnde gehele getal (weergegeven als een reëel getal met drijvende komma) dat niet kleiner is dan de waarde van het argument num. Ceil(1.02) retourneert bijvoorbeeld 2.0. Deze conversie wordt overafronding genoemd. |
6
|
want
|
Functie dubbele cos(dubbel arg) retourneert de cosinus van het argument arg |
7
|
cosh
|
Functie dubbele cosh (dubbel arg) retourneert de hyperbolische cosinus van het argument arg.
|
8
|
exp
|
Functie dubbele exp(dubbel arg) retourneert de basis van de natuurlijke logaritme e, tot een macht verheven arg.
|
9
|
fantastisch
|
Functie dubbele fabs (dubbel num) retourneert de absolute waarde (modulowaarde) van het argument num.
|
10
|
vloer
|
Functie dubbele bodem(dubbel num) retourneert het grootste gehele getal (weergegeven als een reëel getal met drijvende komma) dat niet groter is dan de waarde van het argument num. floor(1.02) retourneert bijvoorbeeld het getal 1.0. Deze conversie wordt afronding naar beneden genoemd. |
11
|
fmod
|
De functie dubbel fmod(dubbel x, dubbel y) retourneert de rest van deling x/y. |
12
|
frexp
|
Functie dubbele frexp(dubbel num, int * exp) breidt een getal uit num door een mantisse variërend van 0,1 tot 1, exclusief 1, en een gehele exponent, dus num = mantisse. De functie retourneert de mantisse en de waarde van de exponent wordt opgeslagen in de variabele waarnaar de aanwijzer verwijst exp.
|
13
|
loggen
|
Functie dubbele log (dubbel num) retourneert de natuurlijke logaritme van een getal num. Als de argumentatie num |
14
|
log10
|
Functie dubbele log10(dubbel num) retourneert de decimale logaritme van een getal num. Als de argumentatie num negatief of nul is, treedt er een fout op. |
15
|
poe
|
Functie dubbele pow (dubbel baseren, dubbel exp) retourneert een getal baseren, tot de macht verheven exp. Als de basis van het diploma baseren gelijk is aan nul, en de exponent exp kleiner is dan of gelijk is aan nul, kan er een fout optreden doordat het argument het domein van de functiedefinitie verlaat (domeinfout). Deze fout treedt ook op als het argument baseren is negatief en het argument exp is geen geheel getal. |
16
|
zonde
|
Functie dubbele zonde(dubbel arg) retourneert de sinus van het argument arg. De argumentwaarde moet worden uitgedrukt in radialen. |
17
|
zonde
|
Functie dubbele sinh (dubbel arg) retourneert de hyperbolische sinus van het argument arg.
|
18
|
sqrt
|
Functie dubbele sqrt(dubbel num) retourneert de vierkantswortel van het argument num. Als het argument negatief is, treedt er een fout op omdat de functie buiten het bereik valt. |
19
|
bruinen
|
Functie dubbele tan(dubbel arg) retourneert de tangens van het argument arg. De argumentwaarde moet worden uitgedrukt in radialen. |
20
|
tanh
|
Functie dubbele tanh (dubbel arg) retourneert de hyperbolische tangens van het argument arg.
|
Schort AdBlock op deze site op.
Wiskundige berekeningen zijn niet beperkt tot alleen rekenkundige bewerkingen. Daarnaast kun je ook wortels, modules, logaritmen, trigonometrische functies, enz. vinden. Laten we leren hoe we dergelijke functies in onze programma's kunnen gebruiken.
Om wiskundige functies te gebruiken, moet u het headerbestand math.h opnemen. Het definieert veel verschillende functies, maar voor nu zullen we naar het volgende kijken:
Enkele wiskundige functies
fabs(x) modulus van getal x
sqrt(x) wortel van getal x
sin(x) sinus van x (x in radialen)
cos(x) cosinus van x (x in radialen)
pow(x, y) berekening x y
exp(x) berekening e x
log(x) natuurlijke logaritme van x
log10(x) decimale logaritme van x
Twee belangrijke punten.
- Alle functies retourneren een dubbele waarde.
- Functieparameters zijn reële getallen (dubbel), maar u kunt ook gehele getallen doorgeven. Dit zal gebeuren impliciete typeconversie. De compiler maakt van een geheel getal, bijvoorbeeld 3, een reëel getal 3,0.
Voorbeelden.
De lengtes van de benen van een rechthoekige driehoek zijn gegeven. Bereken de lengte van de hypotenusa. Een eenvoudig probleem om uw kennis van de stelling van Pythagoras te testen.
Lijst 1.
#erbij betrekken #erbij betrekken // connect math.h int main (void) ( int a, b, c2; scanf("%d",&a); scanf("%d",&b); c2 = a*a + b*b; printf ("c = %.2f\n", sqrt(c2));
Bereken de sinus van de hoek die u via het toetsenbord invoert. De hoek wordt in graden ingevoerd.
Lijst 2.
#erbij betrekken #erbij betrekken // connect math.h int main (void) ( double alpha, sin_a, pi = 3.1415926; scanf("%lf",&alpha); alpha = alpha*pi/180; sin_a = sin(alpha); printf("% .2f\n", sin_a); retourneert 0; )
Er valt veel te bespreken in dit programma. Trigonometrische functies die zijn gedefinieerd in math.h werken met radiale hoekmetingen. Mensen zijn meer gewend om met diploma’s te werken. Daarom hebben we in dit programma eerst de waarde omgezet van graden naar radialen. Als dit niet wordt gedaan, is het resultaat onjuist. Bekijk het zelf.
Impliciete typeconversie
Bij het uitvoeren van een expliciete typeconversie hebben we tussen haakjes vóór de waarde aangegeven naar welk type de waarde moet worden gecast. Bij een impliciete conversie is dit niet nodig. De compiler selecteert automatisch het vereiste type.
Impliciete typeconversie wordt uitgevoerd in de volgende gevallen:
- voordat u argumenten aan de functie doorgeeft (zoals in ons hoofdvoorbeeld. Lijst 1.)
- het uitvoeren van rekenkundige bewerkingen met verschillende soorten argumenten
- voordat u de opdracht uitvoert
Impliciete typeconversieregels
- als rekenkundige bewerkingen worden uitgevoerd met verschillende soorten argumenten. Beide argumenten worden naar het grotere type gegoten.
Typevolgorde: int< float
< double
- wanneer toegewezen. De waarde rechts van de toewijzingsoperator wordt omgezet naar het type variabele links van de toewijzingsoperator. Als echter een groter type wordt toegewezen aan een kleiner type, kan er verlies aan nauwkeurigheid optreden.
int+float wordt automatisch omgezet in float+float
float/int wordt automatisch omgezet naar float/float
double*float wordt omgezet in double*double
int = double double wordt geconverteerd naar int met verlies van het fractionele deel
float = int int wordt omgezet in float
Wiskundige functies van C-taal
De talen C en C++ definiëren een grote verscheidenheid aan wiskundige functies. Aanvankelijk ondersteunden beide talen dezelfde set van 22 wiskundige functies. Naarmate de C++-taal zich ontwikkelde, breidde het arsenaal aan daarin gedefinieerde functies zich echter uit. Vervolgens nam in versie C99 de omvang van de wiskundige bibliotheek aanzienlijk toe. Als resultaat van deze veranderingen begonnen de bibliotheken met wiskundige functies van de talen C en C++ aanzienlijk van elkaar te verschillen. Daarom beschrijft dit hoofdstuk de wiskundige functies van de C-taal (inclusief de functies die zijn toegevoegd in versie C99), en richt hoofdstuk 9 zich uitsluitend op de functies van de C++-taal. Houd er echter rekening mee dat de oorspronkelijke set wiskundige functies nog steeds wordt ondersteund door alle versies van C en C++.
Om alle wiskundige functies in het programma te gebruiken, moet u de header opnemen . Naast het declareren van wiskundige functies, definieert deze header een of meer macro's. In versie C89 de header Alleen de macro HUGE_VAL is gedefinieerd, wat een dubbele waarde is die een overflow signaleert.
De volgende macro's zijn gedefinieerd in versie C99.
De C99-versie definieert de volgende macro's (functioneel) die een waarde classificeren.
In versie C99 zijn de volgende vergelijkingsmacro's gedefinieerd, waarvan de argumenten (a en b) drijvende-kommawaarden moeten zijn.
Deze macro's verwerken waarden die geen getallen zijn prima zonder uitzonderingen van het echte type.
De EDOM- en ERANGE-macro's worden ook gebruikt door wiskundige functies. Deze macro's worden gedefinieerd in de koptekst .
Fouten in versies C89 en C99 worden anders afgehandeld. Als een argument voor een wiskundige functie in C89 dus niet binnen het domein valt waarvoor het is gedefinieerd, wordt er een implementatiespecifieke waarde geretourneerd en wordt de ingebouwde globale integer-variabele errno ingesteld op de waarde van EDOM. In C99 resulteert een domeinschendingsfout er ook in dat een implementatiespecifieke waarde wordt geretourneerd. De waarde van math_errhandling kan echter aangeven of er andere acties worden uitgevoerd. Als math_errhandling de waarde MATH_ERRNO bevat, wordt de ingebouwde globale integervariabele errno ingesteld op de waarde EDOM. Als math_errhandling de waarde MATH_ERREXCEPT bevat, wordt er een echte uitzondering gegenereerd.
Als in C89 een functie een resultaat genereert dat te groot is om door de representatie te worden verwerkt, treedt er een overflow op. In dit geval retourneert de functie HUGE_VAL en wordt errno ingesteld op de ERANGE-waarde, wat een bereikfout aangeeft. Als er een onderstroom wordt gedetecteerd, retourneert de functie nul en wordt errno ingesteld op ERANGE. In C99 zorgt een overflow-fout er ook voor dat de functie een waarde retourneert. HUGE_VAL, en als het aan betekenis verliest: nul. Als math_errhandling de waarde MATH_ERRNO bevat, wordt de globale variabele errno ingesteld op de waarde ERANGE, wat een bereikfout aangeeft. Als math_errhandling de waarde MATH_ERREXCEPT bevat, wordt er een echte uitzondering gegenereerd.
In versie C89 moeten argumenten voor wiskundige functies dubbele waarden zijn en moeten waarden die door functies worden geretourneerd dubbele waarden zijn. In versie C99 zijn float- en long double-varianten van deze functies toegevoegd, die respectievelijk de achtervoegsels f en l gebruiken. In versie C89 is de functie sin() bijvoorbeeld als volgt gedefinieerd.
Dubbele zonde(dubbele arg);
In versie C99 wordt de bovenstaande definitie van de functie sin() ondersteund en zijn er nog twee wijzigingen toegevoegd: sinf() en sinl().
Zweven sinf(zweven arg); lange dubbele sinl(lange dubbele arg);
De bewerkingen die door alle drie de functies worden uitgevoerd, zijn hetzelfde; alleen de gegevens die aan deze bewerkingen worden onderworpen, verschillen. Door f- en 1-wijzigingen aan wiskundige functies toe te voegen, kunt u de versie gebruiken die het beste bij uw gegevens past.
Omdat C99 zoveel nieuwe functies heeft toegevoegd, is het de moeite waard om de functies die door C89 worden ondersteund afzonderlijk op te sommen (ze worden ook gebruikt in C++).
aco's |
asin |
atan |
atan2 |
plafond |
want |
cosh |
exp |
fantastisch |
vloer |
fmod |
frexp |
ldexp |
loggen |
log10 |
modf |
poe |
zonde |
zonde |
sqrt |
bruinen |
tanh |
|
|
|
En nog iets: alle hoeken zijn gespecificeerd in radialen.
Zie ook
acos - Geeft de boogcosinuswaarde terug
acosh - Retourneert de waarde van de hyperbolische boogcosinus
asin - Retourneert de arcsine-waarde
asinh - Retourneert de hyperbolische boogsinuswaarde
atan - Geeft de boogtangenswaarde terug
atan2 - Geeft de boogtangens van a/b terug
atanh - Geeft de waarde van de hyperbolische boogtangens terug
cbrt - Retourneert de derdemachtswortelwaarde
ceil - Retourneert het kleinste gehele getal dat groter is dan de waarde van het gegeven argument
copysign - Geeft het gegeven argument het teken dat het opgegeven argument heeft
cos - Retourneert de cosinuswaarde
cosh - Retourneert de waarde van de hyperbolische cosinus
erf - Retourneert de waarde van de foutfunctie
erfc - Retourneert een optionele foutfunctiewaarde
exp - Retourneert de exponentwaarde
exp2 - Geeft het getal 2 terug verheven tot de gegeven macht
expm1 - Retourneert de waarde van de natuurlijke logaritme e verminderd met één
fabs - Retourneert de absolute waarde
fdim - Retourneert nul of het verschil tussen twee gegeven argumenten
floor - Retourneert het grootste gehele getal dat kleiner is dan of gelijk is aan de waarde van het opgegeven argument
fma - Geeft de waarde van a*b+c gegeven argumenten terug
fmax - Retourneert de grootste van twee waarden
fmin - Retourneert de kleinste van twee waarden
fmod - Geeft de rest van de deling terug
frexp - Splitst een bepaald getal in zijn mantisse en exponent
hypot - Geeft de lengte van de hypotenusa terug, gegeven de lengte van twee benen
ilogb - Extraheert exponentiële waarde
ldexp - Retourneert de waarde van de expressie num*2^exp.