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
scanf(“ %d”, £); //รับค่าจำนวนเต็ม 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);
}