การคำนวณทางคณิตศาสตร์




7.  การคำนวณทางคณิตศาสตร์
                ในการเขียนโปรแกรม เพื่อทำการคำนวณทางคณิตศาสตร์ จะต้องใช้ตัวดำเนินการต่างๆซึ่งมีวิธีการใช้งาน และการทำงาน ดังนี้
การคำนวณ
ตัวดำเนินการ
ตัวอย่าง
การทำงาน
บวก
+
c = a + b;
นำค่าที่เก็บใน a บวกกับค่าที่เก็บใน b แล้วเก็บผลลัพธ์ไว้ใน c
ลบ
-
c = a - b;
นำค่าที่เก็บใน b ลบออกจากค่าที่เก็บใน a แล้วเก็บผลลัพธ์ไว้ใน c
คูน
*
c = a * b;
นำค่าที่เก็บใน a คูณกับค่าที่เก็บใน b แล้วเก็บผลลัพธ์ไว้ใน c
หาร
/
c = a / b;
ให้ค่าที่เก็บใน a เป็นตัวตั้ง ค่าที่เก็บใน b เป็นตัวหารแล้วเก็บผลหารไว้ใน c
ถ้าทั้งตัวตั้งและตัวหารต่างเป็นจำนวนเต็ม
ค่าที่เก็บใน c จะเป็นจำนวนเต็ม
แต่ถ้าตั้งตั้งหรือตัวหารตัวใดตัวหนึ่งเป็นจำนวนจริงที่มีทศนิยม ผลลัพธ์ที่ได้จะเป็นจำนวนจริงที่มีทศนิยมด้วย
มอดูลัส
%
c = a % b;
ให้ค่าที่เก็บใน a เป็นตัวตั้ง ค่าที่เก็บใน b เป็นตัวหารแล้วเก็บเศษไว้ใน c

ตัวอย่างการแสดงผลลัพธ์ของการบวก
#include <stdio.h>
void main()
{
int a, b, sum;
scanf(“%d”, &a);                               //รับค่าจำนวนเต็มมาเก็บไว้ใน a
scanf(“%d”, &b);                               //รับค่าจำนวนเต็มมาเก็บไว้ใน b
printf(“Sum  is  %d \n”, a+b);       //แสดงผลจากการบวก
}
ตัวอย่างการใช้ข้อความสั่งกำหนดค่า และแสดงผลลัพธ์ของการบวก
#include <stdio.h>
void main()
{
                int  a, b, sum;
                scanf(“%d”, &a);                                               //รับค่าจำนวนเต็มมาเก็บไว้ใน a
                scanf(“%d”, &b);                                               //รับค่าจำนวนเต็มมาเก็บไว้ใน b
                sum = a + b;                                                        /*นำค่าที่เก็บใน a บวกกับค่าที่เก็บใน b แล้วนำผลบวก
ไปเก็บใน sum */
                printf(“Sum  is  %d \n”, sum);                      //แสดงค่าที่เก็บไว้ใน sum
}

ตัวอย่างการแสดงผลลัพธ์ของการคูณ
#include <stdio.h>
#define  GP  454
int  gram, poud;
void main()
{
                scanf(“ %d”, &pound);                                                    //รับค่าจำนวนเต็ม pound
                gram = pound * GP;                                                         //แปลงปอนด์ให้เป็นกรัม
                printf(“Weight  in  gram  =  %d\n”, gram);              //แสดงค่ากรัมที่ได้จากการแปลง
}             

ตัวอย่างการแสดงการหารและมอดูลัส
#include <stdio.h>
#define  MS  60                                                                 //กำหนดให้ MS เป็นตัวคงที่มีค่า 60
#define  HM  60                                                                 //กำหนดให้ HM เป็นตัวคงที่มีค่า 60
int  sec, min, hr, sec_left, min_left;
void main()
{
                scanf(“%d”, &sec);                                           //รับค่า sec (วินาที)
                min = sec / MS;                                                  //แปลงวินาทีให้เป็นนาที
                sec_left = sec % MS                                         //หาเศษวินาทีจากการแปลงให้เป็นนาที
                hr = min / HM;                                                   //แปลงนาทีให้เป็นชั่วโมง
                min_left = min % HM;                                    //หาเศษนาทีจากการแปลงเป็นชั่วโมง
                printf(“%d seconds is equal to “, sec);
                printf(“%d  h,  %d  m,  and  %d  s”, hr, min_left, sec_left);
}

ตัวอย่างการแสดงผลลัพธ์ของการหาร
#include <stdio.h>
void main()
{
                printf(“\n  integer  division”);
                printf(“\n 11/4  = %d”, 11/4);                       //การหาร โดยมีตัวตั้งและตัวหารเป็นจำนวนเต็ม
                printf(“\n  3/4  = %d”, 3/4);                           //การหาร โดยมีตัวตั้งและตัวหารเป็นจำนวนเต็ม
                printf(“\n  floating point division”);
                printf(“\n 11./4.  =  %f”,  11./4.);                                /*การหาร โดยมีตัวตั้งและตัวหารเป็นจำนวนจริงที่มี
ทศนิยม*/
                printf(“\n 3./4.  =  %f”,  3./4.);                     /*การหาร โดยมีตัวตั้งและตัวหารเป็นจำนวนจริงที่มี
ทศนิยม*/
}
ผลการกระทำ
integer  division
11/4 = 2
3/4 = 0
floating point division
11./4. = 2.750000
3./4/ = 0.750000

ตัวอย่างการใช้ข้อความสั่งกำหนดค่า และการบวก
#include <stdio.h>
void main()
{
                int  a, b, x;
                a = 20;                                                   //กำหนดให้เก็บค่า 20 ไว้ใน a
                x = a;                                                     //กำหนดให้เก็บค่าที่อยู่ใน a ไว้ใน x
                printf(“x  is  %d\n”, x);                   //แสดงค่าที่เก็บใน x
                x = a+1;                                                                //นำค่าที่เก็บใน a บวก 1 แล้วเก็บใน x
                printf(“x  is  %d\n”, x);                   //แสดงค่าที่เก็บใน x
                b = 30;                                                  //กำหนดให้เก็บค่า 30 ไว้ใน b
                x = a + b;                                             //นำค่าที่อยู่ใน a บวกกับค่าที่อยู่ใน b แล้วเก็บไว้ใน x
                printf(“x  is  %d\n”, x);                   //แสดงค่าที่เก็บใน x
}
ผลการกระทำ
x  is  20
x  is  21
x  is  50
_

ลำดับการดำเนินการในนิพจน์ที่มีตัวดำเนินการหลายตัว
                ในกรณีที่นิพจน์มีตัวดำเนินการหลายตัว จะต้องดำเนินการตามลำดับต่อไปนี้
1.             ()
2.             *  /  %
3.             +  -
ถ้าในนิพจน์มีตัวดำเนินการที่มีลำดับเท่ากัน จะประมวลผลจากซ้ายไปขวา


ตัวอย่างการประมวลนิพจน์มีตัวดำนเนินการหลายตัว
#include <stdio.h>
void main()
{
                int  p, q, r, w, m, n,y;
                p = 30;
                q = 2;
                r = 10;
                w = 7;
                m = 20;
                n = 5;
                y = p + q * r % w – m / n;
                printf(" y =  %d "', y);
}
ผลการกระทำ
                y = 32
การประมวลผลนิพจน์ p + q * r % w – m / n จะทำตามลำดับดังนี้
1.             q * r             =  2 * 10  = 20
2.             20 % w        = 20 % 7  = 6
3.             m / n              =  20 /5    = 4
4.             p + 6              =  30 + 6  =  36
5.             36 – 4            =  32


 
ตัวอย่างการใช้ข้อความสั่งกำหนดค่านรูปแบบที่ซับซ้อน และมีตัวดำเนินการหลายตัว
#include <stdio.h>
void main ()
{
                float  sum,  point,  score1,  score2,  score3;
                scanf("  %f%f%f  "', &score1, &score2, &score3);
                sum = point = score1 * 2 + score2 * 5 + score3 * 3;
                printf("  sum  = %f  \n ", sum);
                printf(" point  =  %f   \n ", point);
}