การรับข้อมูลนำเข้า
1. การับข้อมูลนำเข้า
คำสั่ง scanf() อยู่ในไลบรารีมาตรฐานของภาษาซี มีหน้าที่รับข้อมูลในรูปของรหัสแอสกีที่ผู้ใช้ป้อนผ่านแผงแป้นอักขระแล้วนำไปเก็บไว้ในตำแหน่งที่กำหนดบนหน่วยความจำ
ตัวอย่างที่ 1.1 โปรแกรมรับ และพิมพ์อายุ
| //Program : GetAge.c
#include <stdio.h>
void main() {
int age;
printf(“How old are you? ”);
scanf(“%d”, &age);
printf(“\nYou are %d year old.\n\n”,age);
printf(“The address used to store age is %x.\n”, &age);
}
|
ผลลัพธ์ คือ
| How old are you? 18
You are 18 year old.
The address used to store age is fff4
|
จากบรรทัดที่ 6 จะพบว่าอาร์กิวเมนต์แรกของคำสั่ง scanf() มีชนิดเป็นสายอักขระที่ภายในประกอบด้วยชุดอักขระจัดรูปแบบ เช่นเดียวกับคำสั่ง printf()
ภาษาซีใช้ตัวดำเนินการ & สำหรับแสดงตำแหน่งหน่วยความจำของตัวแปรที่เป็นตัวถูกดำเนินการ เช่น ในบรรทัดที่ 8 โปรแกรมจะแสดงค่าตำแหน่งหน่วยความจำของตัวแปร age ซึ่งในที่นี้ใช้เก็บค่าที่รับจากคำสั่ง scanf() ในบรรทัดที่ 10
ตัวอย่างที่ 1.2 โปรแกรมแปลงเลขฐานต่างๆ
| Program: BaseConv.c
#include <stdio.h>
void main() {
int val;
printf(“Enter a decimal integer: ”);
scanf(“%d”, &val);
printf(“\nThe value entered is %d in decimal, ”, val);
printf(“%o in octal.”, val);
printf(“Enter an octal integer: ”);
scanf(“%o”,&val);
printf(“\nThe value entered is %x in hexadecimal.”, val);
printf(“Enter an hexadecimal integer: ”);
scanf(“%x”,&val);
printf(“\nThe value entered is %d in decimal.”, val);
}
|
ผลลัพธ์ คือ
| Enter a decimal integer: 78
The value entered is 78 in decimal, 116 in octal.
Enter an octal integer: 116
The value entered is 4e in hexadecimal.
Enter a hecadecimal integer: 4e
The value entered is 78 in decimal
|
2. ตัวดำเนินการคำนวณ
2.1) ตัวดำเนินการคำนวณพื้นฐาน
ตัวดำเนินการคำนวณของภาษาซี ประกอบด้วย
+ ดำเนินการบวก
– ดำเนินการลบ
* ดำเนินการคูณ
/ ดำเนินการหาร
% ดำเนินการมอดูลัส (modulus)
ลำดับความสำคัญของตัวดำเนินการคำนวณจากมากไปหาน้อยสรุปได้ดังนี้
– ตัวดำเนินการเอกภาคลบ
* / % ตัวดำเนินการคูณ หาร และมอดูลัส
+ – ตัวดำเนินการบวก และลบ
ตัวอย่างที่ 2.1 โปรแกรมพิมพ์ผลลัพธ์จากการใช้ตัวดำเนินการคำนวณ 1 ตัว
| //Program: SignOp.c
#include <stdio.h>
void main() {
int a=4, b, c, d;
b=a+5;
c=a-5;
d=-c;
printf(“a, b, c, and d is”);
printf(“%d, %d, %d, and %d. \n”, a, b, c, d);
b=a*5;
c=a/5;
d=a%5;
printf(“a, b, c, and d is”);
printf(“%d, %d, %d, and %d. \n”, a, b, c, d);
printf(“7.0/2 is %f.\n”, 7.0/2);
printf(“a/5.0 is %f.\n”, a/5.0);
printf(“b/4.5 is %f.\n”, b/4.5);
}
|
ผลลัพธ์ คือ
| a, b, c, and d is 4, 9, -1, and 1.
a, b, c, and d is 4, 20, 0, and 4.
7.0/2 is 3.500000.
a/5.0 is 0.800000.
b/4.5 is 4.444444.
|
ตัวอย่างที่ 2.2 โปรแกรมพิมพ์ผลลัพธ์จากการใช้ตัวดำเนินการแปลงชนิดข้อมูล
| //Program: Cast.c
#include <stdio.h>
void main() {
int num1, num2, num3, sum;
float average;
printf(“Enter first integer: ”);
scanf(“%d”, &num1);
printf(“Enter second integer: ”);
scanf(“%d”, &num2);
printf(“Enter third integer: ”);
scanf(“%d”, &num3);
sum=num1+num2+num3;
average=(float)sum/3;
printf(“\nAverage of the three number is ”);
printf(“%6.4f.\n”, average);
}
|
ผลลัพธ์ คือ
| Enter first integer: 8
Enter second integer: 5
Enter third integer: 13
Average of the three numbers is 8.6667.
|
จากตัวอย่าง 2.2 คำสั่ง sum /3 ควรจะให้ผลลัพธ์เป็นจำนวนเต็ม 8 เนื่องจากตัวถูกดำเนินการทั้งสองตัวมีชนิดเป็นจำนวนเต็ม แต่ในที่นี้เราได้แปลงชนิดข้อมูลของตัวแปร sum แบบชั่วคราว จากจำนวนเต็มให้เป็นจำนวนจริง โดยใช้ (float)sum/3 ในบรรทัดที่ 15 ให้ผลลัพธ์เป็นจำนวนจริงก่อนนำไปกำหนดให้เป็นค่าของตัวแปร average
2.2) คำสั่งกำหนดค่าเชิงประกอบ
คำสั่งกำหนดค่าเชิงประกอบ (Compound assignment) มีรูปแบบ คือ
c op= d;
ซึ่งมีความหมายเทียบเท่ากับ
c = c op d;
เมื่อ op เป็นตัวดำเนินการใดๆ
ตัวอย่างที่ 2.3 โปรแกรมแสดงการใช้คำสั่งกำหนดค่าเชิงประกอบ
| //Program: ComAssi.c
//แสดงการใช้คำสั่งกำหนดค่าเชิงประกอบ
#include <stdio.h>
void main() {
int a = 0, b = 5;
a += 4;
printf(“a is %d.\n”,a);
a *= 3;
printf(“a is %d.\n”,a);
a /= 4;
printf(“a is %d.\n”,a);
a %= 5;
printf(“a is %d.\n”,a);
a = 7;
a /= a – b;
printf(“a is %d.\n”,a);
b *= b+a;
printf(“b is %d.\n”,b);
}
|
ผลลัพธ์ คือ
| a is 4.
a is 12.
a is 3.
a is 3.
a is 3.
b is 40.
|
ในบรรทัดที่ 9 คำสั่ง a += 4 มีความหมายเดียวกับ a = a + 4 และคำสั่งในบรรทัดที่ 11 13 และ 15 มีความหมายเดียวกับ a = a * 3 a = a / 4 และ a = a % 5 ตามลำดับ
ในบรรทัดที่ 18 ค่าของ a จะเป็นผลลัพธ์ที่ได้จากการประมวลผลคำสั่ง a = a / (a – b) เนื่องจากตัวดำเนินการ /= มีลำดับความสำคัญต่ำกว่าตัวดำเนินการคำนาณอื่นๆ
ทำนองเดียวกัน ในบรรทัดที่ 20 ค่าของ b จะเป็นผลลัพธ์ที่ได้จากการประมวลผลคำสั่ง b = b * (b + a)
2.3 คำสั่งเพิ่มและลดค่า
นอกจากการใช้คำสั่งกำหนดค่าเชิงประกอบแล้ว ภาษาซียังมีรูปแบบการเขียนคำสั่งเพื่อเพิ่มหรือลดค่าตัวแปรชนิดจำนวนเต็มทีละ 1 ในแบบย่อ โดยอาศัยตัวดำเนินการเอกภาคเพิ่มค่า ++ และตัวดำเนินการเอกภาคลดค่า – ดังในตัวอย่างต่อไปนี้
| int x = 4;
X = x + 1;
X += 1;
X++;
| int y = 8;
Y = y – 1;
Y -= 1;
–y;
|
| รูปที่ 3-1 ตัวดำเนินการเอกภาคเพิ่มค่า | รูปที่ 3-2 ตัวดำเนินการเอกภาคลดค่า |
แต่ละคำสั่งด้านบน จะมีผลทำให้ x ในรูปที่ 3-1 มีค่าเพิ่มขึ้นทีละ 1 และ y ในรูปที่ 3-2 มีค่าลดลงทีละ 1 และ y ในรูป 2.3 มีค่าลดลงทีละ 1 ดังนั้นหลังจากประมวลผลคำสั่งข้างต้นและ x และ y จะมีค่าเป็น 7 และ 5 ตามลำดับ
ตัวดำเนินการ ++ และตัวดำเนินการ – อาจวางอยู่ด้านหลังหรือด้านหน้าตัวแปร ดังเช่น x++ หรือ ++x เป็นต้น เมื่อวางตัวดำเนินการเอกภาคเพิ่มค่า (หรือเอกภาคลดค่า) ไว้ด้านหลังตัวแปรจะมีผลใหการเพิ่ม (หรือการลด) ค่าตัวแปรอีก 1 เกิดขึ้นหลังจากการอ้างอิงค่าตัวแปรดังกล่าวในคำสั่งเดียวกัน และเมื่อวางตัวดำเนินการเอกภาคเพิ่มค่า (หรือเอกภาคลดค่า) ไว้ด้านหน้าตัวแประมีผลให้การเพิ่ม(หรือลด) ค่าตัวแปรอีก 1 เกิดขึ้นก่อนการอ้างอิงค่าตัวแปรดังกล่าวในคำสั่งเดียวกัน เช่น
| int a = 20; b = a++ * 2; | int a = 20; c = ++a * 2; |
| รูปที่ 3-3 เพิ่มค่าหลังการอ้างอิง | รูปที่ 3-4 เพิ่มค่าก่อนการอ้างอิง |
คำสั่งในรูปที่ 2.4 จะมีผลให้ตัวแปร b มีค่าเท่ากับ 40 และคำสั่งในรูปที่ 2.5 จะมีผลให้ตัวแปร c มีค่าเท่ากับ 42 ในขณะที่ตัวแปร a ทั้งสองกรณีมีค่าเป็น 21
ตัวอย่างที่ 2.4 โปรแกรมแสดงการเพิ่มและลดค่าตัวแปรในแบบย่อ
| //Program: IncDec1.c
//เพิ่มและลดค่าตัวแปรในแบบย่อ
#include <stdio.h>
void main() {
int x = 8;
printf(“x is %d.\n”, x);
printf(“x++ is %d.\n”, x++);
printf(“x is %d.\n\n”, x);
x = 4;
printf(“x is %d.\n”, x);
printf(“–x is %d.\n”, –x);
printf(“x is %d.\n”, x);
}
|
ผลลัพธ์ คือ
| x is 8.
X++ is 8.
X is 9.
x is 4.
–x is 3.
x is 3.
|
ตัวอย่างที่ 2.5 โปรแกรมแสดงการเพิ่มและลดค่าตัวแปรในแบบย่อ
| //Program: IncDec2.c
//เพิ่มและลดค่าตัวแปรในแบบย่อ
#include <stdio.h>
void main() {
int x = 3, y;
y = x++;
printf(“x is %d, and y is %d.\n”, x, y);
y = ++x;
printf(“Now x is %d, and y is %d.\n”, x, y);
y = 5 % –x;
printf(“Now x is %d, and y is %d.\n”, x, y);
printf(“Now x– is %d, and ++y is %d.\n”,x–, ++y);
printf(“Now x is %d, and y is %d.\n”, x, y);
}
|
ผลลัพธ์ คือ
| x is 4, and y is 3.
Now x is 5, and y is 5.
Now x is 4, and y is 1.
Now x– is 4, and ++y is 2.
Now x is 3, and y is 2.
|
ดีมากครับ
ตอบลบดีมากค่ะ
ตอบลบ