1. Panimula
Ang wikang programang C ay patuloy na malawakang ginagamit ngayon, lalo na para sa pagbuo ng mga sistema at mga embedded system na nangangailangan ng mahusay, mababang antas na programming. Sa hanay ng mga matematikal na konstant, ang pi (π) ay mahalaga para sa iba’t ibang kalkulasyon. Sa C, may ilang paraan upang hawakan ang pi nang tama at epektibo.
Ang artikulong ito ay nagbibigay ng komprehensibong gabay sa paggamit ng pi sa C, saklaw ang lahat mula sa pangunahing paggamit hanggang sa mga praktikal na halimbawa ng code. Ipaliwanag namin kung paano gamitin ang M_PI mula sa standard na library na math.h, kung paano manu-manong ideklara ang pi, at pati na rin kung paano kalkulahin ang pi gamit ang formula ni Leibniz. Sa pagtatapos, malalaman mo kung paano hawakan ang pi nang epektibo at tumpak sa iyong mga programang C.
2. Mga Batayan ng Paggamit ng π sa C
Pangkalahatang-ideya ng Pi (π)
Ang pi ay isang matematikal na konstant na tinukoy bilang ang ratio ng perimetro ng isang bilog sa kanyang diyametro. Ang halaga nito ay isang walang katapusang desimal, nagsisimula sa 3.14159…, at ito ay pundamental sa mga kalkulasyon sa geometrya at pisika. Sa C, madali mong magagamit ang pi sa pamamagitan pag-include ng library na math.h.
Karaniwang Mga Gamit sa C
Karaniwang senaryo kung saan gagamitin mo ang pi sa C ay kinabibilangan ng:
- Geometric Calculations : Pagkalkula ng area o volume ng mga bilog at sphere ay nangangailangan ng pi.
- Physics Simulations : Kailangan ang pi para sa mga kalkulasyon na may kinalaman sa mga phenomena tulad ng pendulum o paikot na galaw.
- Graphics Programming : Ginagamit ang pi sa pagguhit ng mga bilog at kurba sa 3D graphics at pagbuo ng laro.
Ang mga aplikasyon na ito ay madalas na nangangailangan ng mataas na katumpakan sa kalkulasyon, kaya mahalagang maunawaan kung paano tamaang gamitin ang pi sa C.
3. Paano Gamitin ang M_PI
M_PI sa math.h
Ang standard library ng C na math.h ay naglalaman ng iba’t ibang matematikal na konstant at mga function. Sa mga ito, ang M_PI ay kumakatawan sa halaga ng pi. Narito ang isang simpleng halimbawa ng paggamit ng M_PI upang kalkulahin ang area ng isang bilog:
#include <stdio.h>
#include <math.h> // Include math.h
int main() {
double radius = 5.0; // Circle with radius 5
double area = M_PI * radius * radius; // Calculate area
// Output result
printf("Area of a circle with radius %.2f: %.5fn", radius, area);
return 0;
}
Dito, ginagamit ang M_PI upang kalkulahin ang area ng bilog na may radius na 5. Ang output ay:
Area of a circle with radius 5.00: 78.53982
Kung Ang M_PI Ay Hindi Available
Sa ilang kapaligiran—lalo na sa mga compiler tulad ng Visual Studio—maaaring hindi naka-define ang M_PI sa math.h bilang default. Sa ganitong kaso, maaari mo itong paganahin sa pamamagitan ng pag-define ng _USE_MATH_DEFINES bago i-include ang math.h:
#define _USE_MATH_DEFINES
#include <math.h>
int main() {
printf("Pi: %fn", M_PI); // Output the value of pi
return 0;
}
4. Mga Alternatibo Kapag Ang M_PI Ay Hindi Available
Pagde-define ng Pi Mismo
Kung ang M_PI ay hindi available sa iyong kapaligiran maaari mong manu-manong ideklara ang pi. Narito kung paano ito gawin gamit ang #define:
#include <stdio.h>
// Define pi manually
#define MY_PI 3.14159265358979323846
int main() {
double radius = 5.0;
double area = MY_PI * radius * radius; // Calculate area using custom pi
printf("Area calculated with custom pi: %.5fn", area);
return 0;
}
Ang pamamaraang ito ay nagbibigay-daan sa iyo na gamitin ang pi nang pare-pareho sa anumang kapaligiran, na ginagawang mas portable ang iyong code.

5. Pagkalkula ng Pi Gamit ang Formula ni Leibniz
Ano ang Formula ni Leibniz?
Ang formula ni Leibniz ay nagbibigay ng matematikal na paraan upang tantiyahin ang pi at ito ay ipinapahayag bilang:
π / 4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 - ...
Gamit ito, maaari kang sumulat ng programang C upang tantiyahin ang pi:
#include <stdio.h>
void calculate_pi(unsigned long iterations) {
double pi = 0.0;
int sign = 1;
for (unsigned long i = 0; i < iterations; i++) {
pi += (double)sign / (2 * i + 1); // Leibniz calculation
sign *= -1; // Flip sign
}
printf("Calculated pi: %.15fn", pi * 4); // Output the result
}
int main() {
calculate_pi(1000000); // Calculate pi with 1,000,000 iterations
return 0;
}
Ang kodeng ito ay gumagamit ng Leibniz formula upang tukuyin ang pi. Ang pagtaas ng bilang ng iterations ay nagpapabuti ng katumpakan. Halimbawa, sa 1 milyong iterations, makakakuha ka ng:
Calculated pi: 3.141592653590000
6. Mga Bilang na Floating-Point at ang Katumpakan ng Pi
Katumpakan ng Mga Bilang na Floating-Point
Kapag hawak ang pi sa programming, tandaan ang mga limitasyon ng floating-point precision. Ang C ay nag-aalok ng tatlong floating-point types: float, double, at long double, bawat isa ay may iba’t ibang antas ng katumpakan:
floattype : 32-bit, mga 7 digits ng precision.doubletype : 64-bit, mga 15 digits ng precision.long doubletype : Karaniwang 80 bits o higit pa, 19+ digits ng precision.
Narito ang isang halimbawa ng paghawak ng pi gamit ang iba’t ibang floating-point types:
#include <stdio.h>
#define M_PI 3.14159265358979323846
int main() {
float f_pi = (float)M_PI; // float type
double d_pi = M_PI; // double type
long double ld_pi = (long double)M_PI; // long double type
// Output the differences in precision
printf("float type pi: %.7fn", f_pi);
printf("double type pi: %.15fn", d_pi);
printf("long double pi: %.19Lfn", ld_pi);
return 0;
}
Pag-accumulate ng Mga Error sa Kalkulasyon
Sa paulit-ulit na kalkulasyon, ang mga floating-point errors ay nag-aaccumulate. Ito ay maaaring lalong maging problema sa physics simulations o financial calculations. Halimbawa, tingnan ang error pagkatapos magdagdag ng 0.1 isang milyong beses:
#include <stdio.h>
int main() {
double sum = 0.0;
for (int i = 0; i < 1000000; i++) {
sum += 0.1; // Add repeatedly
}
printf("Expected result: 100000.0n");
printf("Actual result: %.15fn", sum);
return 0;
}
Dito, ang inaasahang resulta ay 100,000.0, ngunit ang floating-point error ay gagawa ng bahagyang iba ang resulta. Ito ay nagpapakita kung paano maaaring mag-accumulate ang mga calculation errors at makaapekto sa mga resulta.
7. Mga Halimbawa ng Tunay na Programa
Halimbawa: Paggamit ng M_PI upang Kalkulahin ang Lawak ng Bilog
Narito ang isang praktikal na programa na gumagamit ng M_PI upang kalkulahin ang lawak ng isang bilog:
#include <stdio.h>
#include <math.h>
int main() {
double radius = 10.0; // Radius
double area = M_PI * radius * radius; // Calculate area
// Output result
printf("The area of a circle with radius %.2f is %.5f.n", radius, area);
return 0;
}
Ang programang ito ay nagkakalkula at nagpapakita ng lawak ng isang bilog na may radius na 10 gamit ang M_PI para sa pi.
Halimbawa: Kalkulahin ang Pi Gamit ang Leibniz Formula
Narito ang isang programa na nag-iimplement ng Leibniz formula para sa pagkalkula ng pi. Ang formula na ito ay nagbibigay-daan sa iyo upang tukuyin ang pi gamit ang isang mathematical series.
#include <stdio.h>
void calc_pi(unsigned long iterations) {
double pi = 0.0;
int sign = 1;
for (unsigned long i = 0; i < iterations; i++) {
pi += sign / (2.0 * i + 1); // Leibniz calculation
sign *= -1;
}
printf("Pi with %lu iterations: %.15fn", iterations, pi * 4);
}
int main() {
calc_pi(1000000); // Calculate pi with 1 million iterations
return 0;
}
Ang programang ito ay gumagamit ng calc_pi() function upang tukuyin ang pi batay sa tinukoy na bilang ng iterations. Sa isang milyong iterations, makakakuha ka ng isang value na malapit sa tunay na value ng pi.
8. Konklusyon
Ang artikulong ito ay nagpakilala ng ilang paraan upang hawakan ang pi (π) sa C: paggamit ng M_PI mula sa math.h, pagdedefine ng pi mismo, at pagkalkula ng pi gamit ang Leibniz formula. Nag-cover din kami ng mga key points tungkol sa floating-point precision, error accumulation sa paulit-ulit na kalkulasyon, at nagbigay ng praktikal na program examples.
Sa kaalamang ito, mayroon ka na ngayon ng mas mahusay na pag-unawa kung paano magsulat ng high-precision numerical computation programs sa C. Upang lalong mapabuti ang iyong programming, isaalang-alang ang paggalugad ng iba pang mathematical constants at functions din.


