78
Data_type Variable name [=<Value>];
Data_type คือ ชนิดข้อมลู แบบต่างๆ เชน่ long, int, short, byte, double, float,
char, boolean หรือตวั แปรชนิดของคลาสต่างๆเชน่ String เปน็ ตน้
Variable_name คือช่ือของตัวแปรตามกฎการต้งั ชอื่ ตวั แปร
Value คอื คา่ ของข้อมูล มีค่าตามขอบเขตชนิดขอ้ มลู ท่ีประกาศ
ตัวอย่างการประกาศตวั แปร
int num; /*ประกาศตัวแปรชนิดจานวนเตม็ ช่ือ num*/
float x;
char grade, age; /*ประกาศตัวแปรชนิดอักขระ ชือ่ grade และ age */
ตวั อยา่ งเช่น การประกาศตัวแปรชนดิ ตา่ งๆพร้อมกับค่าเริ่มตน้ ให้กับตวั แปร
int x = 0;
float sum =0.0f;
char garde =‘F’;
float temp = 123.45; /*ประกาศตัวแปรชนิดเลขทศนิยมพร้อมกาหนดคา่ 123.45*/
char c = "A", t = "B"; /*ประกาศตวั แปรชนดิ อักขระสองตัว พร้อมกาหนดค่าให้แต่ละตวั */
int oct = 0555; /*ประกาศตัวแปรชนิดจานวนเต็มชื่อ num พรอ้ มกาหนดค่าคือ 555 (เป็น
เลขฐานแปดเพราะมี 0 นาหน้า)*/
int hex = 0x88; /*ประกาศตัวแปรชนิดจานวนเตม็ ชอื่ hex พรอ้ มกาหนดคา่ คือ 88 (เป็นเลข
ฐาน 16 เพราะมี 0x นาหนา้ )*/
การประกาศตวั แปรพร้อมกันหลายๆตวั และมกี ารกาหนดคา่ เริ่มต้นให้กับตัวแปร
int x, y, z = 10;
float a = 1.5f, b ,c = 10f;
การประกาศตวั แปรโดยใช้ คา Modifier
static int min = 0;
private float salary = 0.0f;
3.3.4 การประกาศ User Defined Type
User Defined Type หมายถงึ ประเภทของตวั แปรทผี่ เู้ ขียนโปรแกรมสามารถประกาศ
79
ขนึ้ เพื่อใช้งานในโปรแกรมทีเ่ ขียนข้ึนได้ แต่จะต้องอ้างอิงกบั ประเภทข้อมลู มาตรฐานของภาษาซีดว้ ย
เชน่
ตวั อยา่ ง การประกาศ User defined type ประกาศ User defined type
typedef float salary;
typedef int employee ;
salary i;
employee p;
นา ไปประกาศตวั แปร และ
ประกาศ User Defined Type ชื่อ salary เพ่ือใชส้ าหรบั เก็บขอ้ มูลประเภทเลขทศนยิ ม
และประกาศ User Defined Type ช่ือ employee เพ่ือใช้สาหรับเกบ็ ข้อมลู ประเภทตวั เลขจานวนเต็ม
เม่อื ประกาศประเภทข้อมูลทั้งสองแลว้ สามารถใช้ประเภทท่ีประกาศทั้งสองนี้ในการกาหนดตวั แปร
ได้ เนือ่ งจากข้อมูลถูกเกบ็ อยู่ในหน่วยความจา การอ้างถึงตาแหนง่ ของข้อมูลนมี้ ีความซับซอ้ น ไม่
สะดวกตอ่ การเขียนโปรแกรม จงึ มีการเรียกหนว่ ยความจาในตาแหนง่ ทส่ี นใจผ่านตวั แปร
3.3.5 การประกาศตวั แปรชนิดข้อความ (string)
หากมีคาถามว่า ต้องการเก็บข้อความ "C programming language" ไว้ในตัวแปร จะทาได้
อย่างไร ที่ผ่านมาการเก็บข้อมูลชนิดตัวอักขระไว้ในตัวแปรชนิด char ได้ แต่ตัวแปรชนิด char นั้น
สามารถเก็บตัวอักขระได้เพียงตัวเดียวเท่าน้ัน ไม่สามารถเก็บทั้งข้อความ จึงแก้ได้โดยให้ตัวอักขระ
(ตัวอักษร+สัญลักษณ์) หลายๆ ตัวเรียงต่อกันเป็นสายซึ่งเป็นลักษณะของตัวแปรแบบอาร์เรย์ (array)
การประกาศตวั แปรแบบ array เพอ่ื เก็บขอ้ มูลดงั กลา่ วสามารถทาไดด้ งั น้ี
type variable-name[size];
โดยที่ size คือ ขนาดของข้อความ+1 โดยขนาดที่เพ่มิ ขึน้ เพราะต้องเก็บอักขระสุดท้ายของ
ขอ้ ความเปน็ อักขระ
\0 หรอื NULL เพอ่ื บอกวา่ สิ้นสุดขอ้ ความแลว้
80
ตวั อยา่ งการประกาศตัวแปรแบบ array เพ่ือเก็บขอ้ ความ "C programming language" (22
ตวั อกั ษร) ทาได้หลายวธิ ดี ังน้ี
char[23] text = "C programming language";
/*กาหนดขนาดเพมิ่ ขน้ึ 1 ตวั สาหรบั เก็บค่า \0 หรอื NULL ในตาแหน่งสุดท้าย*/
char[23] text = {'C',' ','p','r','o','g','r','a','m','m','i','n','g',' ','l','a','n','g','u','a','g','e','\0'};
/*กาหนดขนาดเพมิ่ ขึ้น 1 ตวั สาหรบั เกบ็ คา่ \0 หรือ NULL ในตาแหน่งสดุ ท้าย*/
char[] text = "C programming language";
/*ถา้ ไม่กาหนดขนาดของ array แลว้ ตวั แปรภาษาซจี ะกาหนดให้โดยมีขนาดเท่ากบั ขนาดขอ้ ความ+1*/
นอกจากน้ยี งั สามารถแก้ไขตวั อกั ษรท่ีเก็บอยใู่ น array ไดโ้ ดยการอา้ งอิงตาแหนง่ เชน่
text[0] = 'A'; /*แก้ตวั อักษรตัวแรก (เรมิ่ นับจาก 0) จะได้ผลลพั ธค์ ือ A programming language*/
text[2] = ' '; /*ผลลัพธค์ ือ A programming language (ใสช่ ่องวา่ ง)*/
ตวั อยา่ งท่ี 3.1 การเขยี นโปรแกรมแสดงผลตวั แปรชนดิ จานวนเต็ม
#include
void main(void)
{
float pi = 3.14592;
printf(":%d:\n",123);
printf(":%2d:\n",123);
printf(":%10d:\n",123);
printf(":%-10d:\n",123);
printf("\a");
}
ผลการทางาน
:123:
81
: 123:
: 123:
:123 :
ตวั อย่างท่ี 3.2 การเขียนโปรแกรมประกาศตัวแปรชนิดจานวนเตม็ ทศนยิ มและอักขระ โดยท่ี พิมพ์อายุ
ชอ่ื จากนน้ั รบั คา่ ความเร็ว และเวลา แลว้ คานวณหาความเร่ง รับคา่ ช่วั โมง นาที แล้วคานวณเป็นวินาที
#include
void main()
{
int age = 10;
float speed,distance,time;
float total_min,hour,minutes;
char ch ='A';
char name[10] ="computer";
printf ("Age=%d\n",age);
printf ("char=%c\n",ch);
printf ("Name=%s\n",name);
printf ("input distance:");scanf("%f",&distance);
printf ("input time:");scanf("%f",&time);
speed = distance/time;
printf("Speed = %f\n",speed);
printf ("input hour;");scanf("%f",&hour);
printf ("input minutes;");scanf("%f",&minutes);
total_min = 60*hour+minutes;
printf("total_min = %f\n",total_min);
}
3.4 ค่าคงท่ี
คา่ คงทจ่ี ะตา่ งจากตัวแปรที่ค่าคงท่จี ะเก็บค่าเอาไวเ้ พียงค่าเดียวตลอดท้ังโปรแกรม โดยที่เรา
สร้างค่าคงที่แลว้ จะไม่สามารถเปลีย่ นแปลงค่าของมันได้ การตง้ั ชอ่ื คา่ คงท่จี ะใชก้ ฎเดยี วกันกบั การตงั้ ช่อื
ตัวแปร แต่นยิ มตัง้ ชอื่ ค่าคงท่ใี หเ้ ป็นตัวอกั ษรพมิ พ์ใหญ่ทง้ั หมด เพ่ือใหเ้ กิดความแตกต่างระหวา่ งชอ่ื ตวั
แปรกบั ช่ือค่าคงท่ี คา่ คงทใ่ี นภาษาซมี ี 2 คาสั่งคือ
1. คาสั่ง const
2. #define
82
ตัวอย่างที่ 3.3 การใช้คาสั่ง const สร้างค่าคงที่
#include<stdio.h>
void main()
{
const double pi=3.14;
const float K=4;
const char ch= ‘A’;
const char company[10]=“INTER”;
printf(“pi = %d\n”,pi);
printf(“K = %f\n”,K);
printf(“ch = %d\n”,ch);
printf(“company name = %s”,company);
}
ตัวอย่างที่ 3.4 การใชค้ าส่งั #define สร้างคา่ คงที่
#include<stdio.h>
#define PI 3.14
#define NAME “SASALAK”
#define CH ‘a’
void main()
{
printf(“PI = %f\n”,PI);
printf(“NAME = %s\n”,NAME);
printf(“PI = %c\n”,CH);
}
ตวั อย่างที่ 3.5 ตัวอย่างประกาศค่าคงที่ ดว้ ยคาสั่ง define
#include<stdio.h>
#define PI 3.14
#define AREA(x) PI*x*x
83
void main()
{
int r;
printf(“R = ?”);
scanf(“%d”, &r);
printf(“Area = %f”,AREA(r) );
}
84
บทสรปุ
ในการเขียนโปรแกรมด้วยภาษาซจี ะต้องมกี ารกาหนดช่ือตัวแปรเพ่ือให้โปรแกรมทางาน โดยช่อื
ตวั แปรจะเป็นตาแหน่งหนว่ ยความจาที่เก็บข้อมูลอยู่โดยเป็นข้อมูลตามประเภททก่ี าหนดและข้อมลู ที่
เปน็ ตัวแปรนีจ้ ะสามารถเปลย่ี นแปลงไดจ้ ากการทางานของโปรแกรม การเขียนโปรแกรมคอมพิวเตอร์
สว่ นใหญ่จะมกี ารประกาศตวั แปรเสมอ ตัวอยา่ งของตวั แปรอาทิ เช่น ตวั แปรแบบ char เปน็ ตัวแปรทใ่ี ช้
สาหรบั เกบ็ ข้อมลู ทเ่ี ป็นตวั อกั ษรขนาด 1 ตัว โดยใช้ เน้ือทใ่ี นการเกบ็ 1 ไบต์ ตวั แปรแบบ integer เป็น
ตัวแปรท่ใี ชส้ าหรบั การเก็บคา่ ตวั เลขท่เี ปน็ จานวนเตม็ ตวั แปรแบบ long เปน็ ตัวแปรท่เี ก็บคา่ เป็น
จานวนเต็มท่มี ีจานวนไบต์เป็น 2 เท่าของ จานวนเดมิ ตัวแปรแบบ float เปน็ ตวั แปรที่ใช้เกบ็ ข้อมูลท่ี
เปน็ เลขทศนิยม ตัวแปรแบบ double เปน็ ตัวแปรทเี่ ก็บข้อมลู ทเ่ี ปน็ เลขทศนิยมเหมือนกับ float แตจ่ ะ
ใชพ้ นื้ ทใี่ นการเก็บมากกว่าเดิม 2 เท่า คือมขี นาด 8 และตวั แปรแบบ unsigned แสดงว่าเปน็ ตวั แปรท่ี
เก็บคา่ เปน็ จานวนเต็ม แบบไมค่ ิดเครื่องหมาย ( เป็นบวกเทา่ น้นั ) มักจะใช้เปน็ คานาหนา้ ตัวแปร
ตัวอย่างการใชง้ าน เช่น unsigned int
85
แบบฝึกหัด
1. จงเขยี นโปรแกรมคานวณหาสูตรคณู แบบเลือกมาตราสตู รคูณได้
2. จงเขยี นโปรแกรมคานวณหาพื้นทข่ี องวงกลม โดยกาหนดค่าของรัศมีได้
3. จงเขยี นโปรแกรมคานวณราคาสินคา้ โดยกาหนดคา่ คงที่ ดังน้ี
สนิ คา้ ช้ินท่ี 1 จานวน 10 ราคา 15 บาท
สนิ ค้าช้ินท่ี 2 จานวน 5 ราคา 20 บาท
สนิ ค้าชิ้นท่ี 3 จานวน 12 ราคา 5 บาท
ใหห้ าจานวนสนิ ค้าทง้ั หมด และคานวณราคารวม
4. จงเขยี นโปรแกรมคานวณเกรด 3 วิชา โดยรบั คา่ หน่วยกิต และเกรดกาหนดเปน็ 4, 3, 2, 1
และ 0 แล้วคานวณเกรดเฉลย่ี ที่ได้
5. จงเขยี นโปรแกรมคานวณหาพน้ื ที่ของสีเ่ หลย่ี มผนื ผา้ โดยมีการกาหนดให้รบั คา่ ตวั แปรทาง
แป้นพิมพ์ และคานวณหาพ้นื ที่ของสี่เหล่ียมจตรุ สั โดยกาหนดตัวแปรเปน็ คา่ คงท่ี
86
เอกสารอา้ งองิ
ไกรศร ตง้ั โอภากุล และกิตนิ ันท์ พลสวสั ด.์ิ (2556). คู่มอื เรียนเขียนโปรแกรมภาษา C ฉบับ
สมบูรณ์ พิมพ์ครั้งที่ 1 . นนทบุรี : ไอดีซฯี .
ไกรศร ตงั้ โอภากลุ . (2554). คมู่ อื เรยี นเขยี นโปรแกรมภาษา C. พมิ พ์ครงั้ ท่ี 1. นนทบรุ ี: บริษทั ไอซีดี
พรีเมยี ร์จากัด.
ดอนสัน ปงผาบ. (2543). การเขียนโปรแกรมภาษาซีในงานควบคมุ . พมิ พค์ ร้ังที่ 3. กรุงเทพฯ:
สมาคมสง่ เสรมิ เทคโนโลยี (ไทย-ญ่ปี นุ่ ).
ดอนสัน ปงผาบ. (2546). การเขยี นโปรแกรมภาษาซีในงานควบคุม. พิมพค์ ร้ังที่ 9. กรุงเทพฯ:
สมาคมสง่ เสริมเทคโนโลยี (ไทย-ญป่ี ุ่น).
ธีรวัฒน์ ประกอบผล. (2556). ค่มู อื การเขยี นโปรแกรมภาษา C ฉบับสมบรู ณ์. พิมพค์ รั้งที่ 1.
กรุงเทพฯ.สานกั พิมพ์ ซิมพลิฟาย.
ฝา่ ยตาราทางวิชาการคอมพวิ เตอร.์ (2556). คู่มือเรยี นคอมพวิ เตอร์และการบารุงรกั ษา,บริษทั ซเี อ็ด
ยเู คช่ัน จากัด(มหาชน).
ฝา่ ยตาราทางวชิ าการคอมพิวเตอร์. (2555). คู่มอื เรยี นคอมพวิ เตอร์ภาษาC,บริษัท ซเี อด็ ยเู คชั่น จากดั
(มหาชน).
วิจักษ์ ศรสี จั จะเลศิ วาจา, ดุษฎี ประเสริฐธิติพงษ์. (2545). การเขียนโปรแกรมภาษาซี. ภาควิชา
วิทยาการคอมพวิ เตอร์ คณะวิทยาศาสตร์ มหาวทิ ยาลยั เชียงใหม่.
โอภาส เอ่ียมสริ วิ งศ์. (2552) . การเขยี นโปรแกรมดว้ ยภาษา C (Programming with C).—
กรุงเทพฯ: ซเี อด็ ยเู คช่ัน.
https://sites.google.com/site/programdotc/threedotseven สืบคน้ ณ วนั ที่ 16 สิงหาคม 2557
การเขียนโปรแกรมคอมพวิ เตอร์:87
แผนบรหิ ารการสอนประจาบทที่ 4
รายวิชา การเขยี นโปรแกรมคอมพวิ เตอร์
Computer Programming
หัวข้อเนอ้ื หา
4.1 ตวั ดาเนนิ การกาหนดค่า
4.2 ตวั ดาเนินการทางคณติ ศาสตร์
4.3 ตัวดาเนินการเพ่ิมคา่ และลดค่า
4.4 ตวั ดาเนนิ การเปล่ียนข้อมูล
4.5 ตวั ดาเนินการความสัมพันธ์
4.6 ตวั ดาเนินการความเทา่ กัน
4.7 ตัวดาเนินการตรรกะ
4.8 ตัวดาเนินการเงื่อนไข
วัตถุประสงค์เชิงพฤติกรรม
1. เพ่ือให้ผู้เรียนมีความเข้าใจเก่ียวกบั ตวั ดาเนนิ การทางภาษาซีได้
2. เพ่อื ใหผ้ ู้เรียนมีความเข้าใจเกี่ยวกับตวั ดาเนนิ การทางคณิตศาสตร์ได้
3. เพ่ือให้ผเู้ รยี นมีความเข้าใจเก่ยี วกับตัวดาเนินการตรรกะได้
4. เพ่ือใหผ้ เู้ รียนมีความเขา้ ใจเกย่ี วกับตัวดาเนนิ การเชิงสมั พันธ์ได้
5. เพื่อใหผ้ เู้ รียนมีความเขา้ ใจเกย่ี วกับตัวดาเนินการกาหนดค่าได้
6. เพอื่ ใหผ้ ู้เรียนมีความเข้าใจเก่ยี วกับตวั ดาเนนิ การเงือ่ นไขได้
7. เพือ่ ให้ผเู้ รยี นมีความเขา้ ใจเกี่ยวกับลาดบั การทางานในการคานวณได้
8. เพอื่ ใหผ้ ู้เรยี นมีความเขา้ ใจและเขยี นโปรแกรมเก่ยี วกับตัวดาเนนิ การได้
9. เพ่ือให้ผเู้ รียนสามารถเขียนโปรแกรมตามลาดับการทางานได้
88:การเขยี นโปรแกรมคอมพวิ เตอร์
วธิ สี อนและกิจกรรมการเรยี นการสอนประจาบท
1. บรรยายเนอื้ หาในแตล่ ะหวั ขอ้ พร้อมยกตวั อยา่ งประกอบ
2. ศกึ ษาจากเอกสารประกอบการสอน
3. ผสู้ อนสรุปเนื้อหา
4. ทาแบบฝกึ หัดเพ่ือทบทวนบทเรียน
5. ผเู้ รียนถามขอ้ สงสัย
6. ผสู้ อนทาการซักถาม
ส่อื การเรียนการสอน
1. เอกสารประกอบการสอนวิชาการโปรแกรมคอมพิวเตอร์
2. ภาพเลอ่ื น (Slide)
3. บทความจากหนงั สือ หรอื เว็บไซตต์ า่ งๆ
4. เครอื่ งคอมพวิ เตอร์
การวัดผลและการประเมนิ
1. ประเมินจากการซักถามในชน้ั เรยี น
2. ประเมินจากความร่วมมือและความรับผิดชอบต่อการเรยี น
3. ประเมินจากการทาแบบฝึกหัดทบทวนท้ายบทเรียน
4. ประเมนิ จากการฝกึ ปฏิบัติ
การเขยี นโปรแกรมคอมพวิ เตอร์:89
บทท่ี 4
ตัวดาเนนิ การและนิพจน์
ในการเขียนโปรแกรมองค์ประกอบท่ีสาคัญส่งิ หน่ึงคอื ตวั ดาเนินการซึง่ มักจะนาใช้รว่ มกบั
นิพจนใ์ นลักษณะต่าง ๆ ตัวดาเนนิ การทีส่ าคญั ได้แก่ ตัวดาเนินการกาหนดค่า (Assignment
Operator) ตวั ดาเนนิ การคณิตศาสตร์ (Arithmetic Operators) ตวั ดาเนนิ การกาหนดค่าแบบผสม
(Compound Assignment Operators) ตัวดาเนินการเพิ่มค่าและลดคา่ (Increment and
Decrement Operators) ตวั ดาเนินการเปลี่ยนชนิดขอ้ มูล (Type Cast Operator) ตวั ดาเนนิ การ
เนนิ การความสมั พนั ธ์ (Relational Operators) ตัวดาเนินการความเท่ากัน (Equality Operators)
ตัวดาเนินการตรรกะ (Logical Operators) ตัวดาเนินการเงอื่ นไข(Conditional Operator) ตวั
ดาเนินการคอมมา (Comma Operator) ตัวดาเนนิ การเหล่าน้เี มอื่ นาไปใช้กับนิพจนจ์ ะทาจะทาให้
เกดิ นิพจนใ์ นรูปแบบตา่ ง ๆ เช่น นพิ จน์กาหนดค่า นิพจนค์ ณิตศาสตร์ นพิ จน์ตรรกศาสตร์ เป็นต้น ตวั
ดาเนนิ การสาคญั ๆ ดงั ตอ่ ไปน้ี
4.1 ตัวดาเนนิ การกาหนดค่า
ในภาษา C มหี ลายวธิ ดี ว้ ยกันในการกาหนดค่าให้กับตวั แปร ซง่ึ ปกติตวั ดาเนนิ การ
กาหนดคา่ มกั จะใชเ้ คร่ืองหมายเท่ากบั (=) และการกาหนดคา่ นิพจน์ก็จะใช้เคร่ืองหมาย = เช่นกัน
ตวั ดาเนนิ การกาหนดคา่ ใช้สาหรบั การกาหนดค่าใหก้ ับตัวแปรทางดา้ นซา้ ยของตวั ดาเนนิ การในการ
กาหนดคา่ ของตัวดาเนินการแต่ละชนดิ จะมหี ลักการทางานทแี่ ตกต่างกัน ตวั ดาเนนิ การ ความหมาย
= เทา่ กับ : การนาคา่ ตัวถูกกระทาที่ไดจ้ ากด้านขวาของตัวดาเนินการ มา ใสใ่ นตัวถูกกระทาทาง
ด้านซา้ ยของตวั ดาเนนิ การ += บวกเท่ากับ : การกาหนดคา่ ตัวถกู กระทาทางดา้ นซา้ ย เท่ากับ คา่ ตัว
ถูกกระทาด้านซ้าย บวกกับ คา่ ตวั ถกู กระทาด้านขวาของตัวดาเนินการ -= ลบเทา่ กับ : การกาหนด
คา่ ตวั ถูกกระทาทางด้านซา้ ย เทา่ กบั คา่ ตวั ถูก กระทาด้านซ้าย ลบกับ คา่ ตวั ถูกกระทาด้านขวาของ
90:การเขยี นโปรแกรมคอมพวิ เตอร์
ตวั ดาเนินการ *= คูณเท่ากับ : การกาหนดค่าตัวถกู กระทาทางด้านซา้ ย เท่ากับ ค่าตวั ถูก กระทา
ดา้ นซา้ ย คูณกับ ค่าตัวถูกกระทาด้านขวาของตวั ดาเนนิ การ ตัวดาเนนิ การ ความหมาย /= หาร
เทา่ กับ : การกาหนดค่าตวั ถูกกระทาทางด้านซ้าย เท่ากับ ค่าตวั ถูกกระทาดา้ นซ้าย หารกบั คา่ ตัวถกู
กระทาดา้ นขวาของตวั ดาเนินการ %= หารเอาเศษเทา่ กบั : การกาหนดค่าตวั ถูกกระทาทางด้านซา้ ย
เท่ากบั เศษเหลอื จากการหารระหวา่ งคา่ ตวั ถูกกระทาด้านซา้ ยกับค่าตวั ถูกกระทาด้านขวาของตัว
ดาเนินการ
สาหรบั รปู แบบของตัวดาเนนิ การกาหนดค่า สามารถเขยี นไดต้ ามรูปแบบดังน้ี
รูปแบบ
Variable_name = expression ;
โดยท่ี variable_name หมายถงึ ช่อื ตัวแปร
Expression หมายถึง นิพจน์ ซึง่ สามารถเป็นคา่ คงที่ ตัวแปร รวมถึงสตู รทางคณิตศาสตร์ท่ี
ซับซ้อน
ตวั อยา่ งการกาหนดค่านพิ จนด์ ้วยตัวดาเนินการกาหนดค่า
a = 3;
x = y;
delta = 0.001;
sum = a+b;
area = length * width;
การเขยี นโปรแกรมคอมพวิ เตอร์:91
ตวั อย่างท่ี 4.1 ตวั อย่างการกาหนดค่านิพจนแ์ ละผลลพั ธ์ทไ่ี ด้ ซ่งึ ในท่นี ีต้ ัวแปร i ถูกกาหนดเปน็ ชนดิ
ข้อมูลแบบเลขจานวนเตม็
นพิ จน์ ผลลัพธ์
i =3.3 3
i=3.9 3
i=-3.9 -3
ตวั อยา่ งที่ 4.2 ตวั อยา่ งการกาหนดค่านิพจน์และผลลพั ธ์ท่ไี ด้ โดยท่ตี วั แปร i และ j เป็นชนดิ ขอ้ มลู
แบบเลขจานวนเตม็ โดยตวั แปร j ถกู กาหนดใหม้ ีคา่ เทา่ กบั 5
นิพจน์ ผลลัพธ์
i=j 5
i=j/2 2
i=2*j/2 5
i=2*(j/2) 4
92:การเขยี นโปรแกรมคอมพวิ เตอร์
ตวั อยา่ งที่ 4.3 ตวั อย่างการกาหนดคา่ นพิ จน์และผลลพั ธ์ท่ีได้โดยทต่ี ัวแปร i เปน็ ชนดิ ข้อมูลแบบเลข
จานวนเต็ม และถูกกาหนดด้วยตัวอักขระแอสกี
นพิ จน์ ผลลพั ธ์
i = ‘x’ 120
i = ‘0’ 48
i = (‘x’-‘0’)/3 24
i = ( ‘y’-‘0’ )/3 24
การกาหนดคา่ ขา้ งต้นเปน็ การกาหนดในรปู แบบปกตทิ ว่ั ไป แตใ่ นภาษา C ยงั สามารถกาหนดค่าให้กบั ตัว
แปรหลายๆตัวในคราวเดยี วกัน ท่ีเรยี กวา่ Multiple Assignments ซึ่งเปน็ ไปดังตัวอย่างต่อไปนี้
กาหนดให้ตวั แปร i และ j มีค่าเท่ากบั 5
i = j = 5;
การประกาศตวั แปรพรอ้ มกนั หลายตวั แปร พรอ้ มกาหนดค่าเรม่ิ ตน้ มคี า่ เท่ากับศนู ย์ท้ังหมด
int a, b, c ;
a=b=c=0;
อย่างไรกต็ าม หากประกาศตัวแปรหลายตวั พรอ้ มกาหนค่าเรมิ ต้นตามรูปแบบตอ่ ไปนจ้ี ะถือว่าผิด ไม่
สามารถใช้งานได้
int a = b = c = 0 ; // wrong assignment
ในขณะทก่ี ารสะสมคา่ ซง่ึ ปกตทิ ั่วไปมักจะกาหนดเช่นนี้
sum = sum+i;
หมายความวา่ ตวั แปร sum จะนาคา่ ของ i มาเกบ็ ไวท้ ี่ sum ซ่งึ รูปแบบดงั กล่าวสามารถถกู
เขยี นใหมใ่ ห้เป็น
การเขียนโปรแกรมคอมพวิ เตอร์:93
sum +- I;
โดยภาษา C อนุญาตให้ใชต้ ัวดาเนินการกาหนดค่าในรปู แบบ ดงั นี้ +=,-=,*=,/= และ %=
ตัวอยา่ งที่ 4 กาหนดให้ i และ j เปน็ ตวั แปรชนดิ เลขจานวนเต็ม ซง่ึ มคี ่าเท่ากบั 5 และ 7 ตามลาดบั
และตัวแปร f และ g เป็นตัวแปรชนิดเลขจานวนจริง ซงึ่ มคี ่าเทา่ กบั 5.5 และ -3.25 ตามลาดบั และ
ต่อไปนีเ้ ปน็ นิพจน์ตรรกะในรูปแบบตา่ งๆ และผลลพั ธท์ ี่ได้ ท้งั นีแ้ ตล่ ะนิพจน์ใหใ้ ชค้ ่าตัวแปรเรม่ิ ต้นตามท่ี
กลา่ วมา
นิพจน์ นิพจนท์ เี่ ขยี นในรปู แบบท่ัวไป ผลลัพธ์
I += 5 I=i+1 10
F -= g F=f-g 8.75
J *= ( i – 3 ) 14
F /= 3 J=j*(i–3)
I %= ( j – 2 ) F=f/3 1.833333
0
I=i %(j–2)
นอกจากน้ี ภาษา C ยังสามารถกาหนดชนิดข้อมลู หนา้ นิพจน์ หรือท่ีเรียกว่าการแคสต์ เพื่อ
แปลงชนดิ ข้อมลู จากชนดิ หนง่ึ มาอีกชนิดหนงึ่ ได้ โดยพจิ ารณาจากโปรแกรมต่อไปนี้
int ans ;
float x = 5.5 ;
float y = 7.1 ;
ans = (int) ( x + y)% 2 ;
94:การเขียนโปรแกรมคอมพวิ เตอร์
จากตัวอยา่ งจะพบวา่ มีการนาตัวแปร x และ y ไปมอดลู สั ด้วย 2 ซ่งึ ตัวแปรทงั้ สองถูกประกาศ
เปน็ เลขจานวนจรงิ ท้ังคู่ แต่อยา่ งไรก็ตาม นพิ จน์นส้ี ามารถคอมไพลผ์ า่ นได้ดว้ ยการใช้ (int) แคสต์หนา้
นิพจนด์ ังกล่าว ท้ังนี้ผลลัพธ์ที่ไดจ้ ะเปน็ เลขจานวนเตม็ เก็บไวท้ ี่ตัวแปร ans
4.2 ตัวดาเนินการทางคณิตศาสตร์
ในภาษา C มีตวั ดาเนินการหรือตัวดาเนินการทางคณิตศาสตร์อยู่ 5 ตัวดว้ ยกนั คือ
ตวั ดาเนนิ การ จดุ ประสงค์
+ การบวก(addition)
- การลบ(subtraction)
* การคูณ(multiplication)
/ การหาร(division)
% การหารเอาเศษ(modulus)
อย่างไรกต็ าม ภาษา C จะไม่มตี ัวดาเนนิ การท่ีใชส้ าหรบั ค่ายกกาลัง แตจ่ ะใชฟ้ ังก์ชนั pow()
แทน ซึ่งจะกลา่ วรายละเอียดตอ่ ไปในหวั ขอ้ ฟงั กช์ ันทางคณิตศาสตร์
ตัวดาเนนิ การจะประกอบด้วยสัญลักษณ์ทั้ง 5 ท่ีแสดงไว้ข้างตน้ ในขณะทต่ี ัวถูกดาเนนิ การหรือ
โอเปอแรนด์ น้ันจะตอ้ งถูกแทนทีด่ ว้ ยค่าตัวเลข ซึ่งอาจเป็นตัวแปรหรือค่าคงท่ี ท้งั นต้ี ัวถูกดาเนินการยัง
สามารถเปน็ ไดท้ ้งั เลขจานวนเตม็ เลขจานวนจรงิ และตวั อักขระ เม่อื นาทงั้ ตัวถูกดาเนินการ และตวั
ดาเนนิ การประบกอบเขา้ ด้วยกนั กจ็ ะเรยี กวา่ นพิ จนน์ ั่นเอง เช่น a/b ถอื เปน็ นิพจน์ มีการใชต้ วั
ดาเนินการหาร (/) โดยท่ี a เปน็ ตัวถกู ดาเนนิ การตัวแรกท่ีใช้เปน็ ตวั ตง้ั ในขณะท่ี b เป็นตวั ถกู
ดาเนนิ การตัวที่สองท่ใี ชเ้ ปน็ ตัวหาร
การเขยี นโปรแกรมคอมพวิ เตอร์:95
อยา่ งไรกต็ าม สาหรับตัวถูกดาเนินการสองตัว ท่ีนามาคานวณผ่านตวั ดาเนนิ การมอดูลสั (%)น้นั
จะตอ้ งเป็นเลขจานวนเตม็ ทัง้ คู่ และตัวถูกดาเนินการทเ่ี ป็นตัวหารจะต้องไมเ่ ท่ากับศนู ย์ ในทานอง
เดยี วกัน ตวั ถกู ดาเนินการทนี่ ามาคานวณผา่ นตัวดาเนนิ การหาร(/)น้นั ตวั ถูกดาเนินการท่ีเป็นตัวหาร ก็
จะต้องไมเ่ ป็นค่าศนู ย์เช่นกัน และจากรายละเอยี ดของตัวอยา่ งตอ่ ไปนี้ จะแสดงถึงนพิ จนท์ ี่กาหนดข้ึน
และผลลพั ธ์ทไ่ี ด้
ตัวอยา่ งที่ 4.4 สมมติวา่ a และ b ถกู กาหนดใหเ้ ป็นตวั แปรชนิดเลขจานวนเต็ม ซึ่งถูกกาหนดค่าเปน็
10 และ 3 ตามลาดบั เมอ่ื นาตัวแปรท้งั สองมาผา่ นนิพจน์คณติ ศาสตรต์ ามตารางต่อไปน้ี กจ็ ะได้
นิพจน์ ผลลพั ธ์
a+b 13
a –b + 1 8
a*b 30
a/b 3
a%b 1
96:การเขียนโปรแกรมคอมพวิ เตอร์
ตัวอยา่ งท่ี 4.5 สมมตวิ ่า n1 และ n2 ถูกกาหนดให้เปน็ ตัวแปรชนดิ เลขจานวนจริง ซง่ึ ถูกกาหนดคา่
เป็น 12.5 และ 2.0 ตามลาดบั เมอื่ นาตวั แปรท้ังสองมาผ่านนอพจน์คณติ ศาสตรต์ ามดา้ นลา่ งต่อไปนี้ ก็
จะได้
นพิ จน์ ผลลพั ธ์
n1 + b 14.5
n1 –b + 1 10.5
n1 * b 25.0
n1 / b 6.25
ตวั อย่างท่ี 4.6 สมมตวิ ่า c1 และ c2 ถกู กาหนดให้เปน็ ตัวแปรชนดิ ตวั อกั ษร ซึ่งถกู กาหนดค่าเป็น P
และ T ตามลาดบั เมือ่ นาตัวแปรทง้ั สองมาผ่านนิพจน์คณติ ศาสตรต์ ามด้านล่างต่อไปนี้กจ็ ะได้
นพิ จน์ ผลลพั ธ์
c1 80
c1 + c2 164
c1 + c2 + 5 169
c1 + c2 + ‘5’ 217
4.3 ตวั ดาเนินการเพิ่มค่าและลดค่า
ตวั ดาเนนิ การเพิม่ คา่ และลดคา่ เปน็ ตวั ดาเนนิ การเพื่อใช้เพิม่ ค่าตัวแปรขนึ้ 1 หรอื ลดคา่ ตวั แปรลง 1
โดยใช้เครือ่ งหมาย ++ แทนการเพม่ิ ค่าขึ้น 1 และ – แทนการลดคา่ ลง 1 และสามารถใช้ตัวดาเนนิ เพ่มิ
คา่ หรือลดค่ากบั ตัวแปรได้ 2 ตาแหนง่ คือวางตวั ดาเนินการเพิ่มค่าหรือลดคา่ ไว้หนา้ ตวั แปรและวางไว้
หลังตัวแปร ดงั ตัวอย่าง
การเขยี นโปรแกรมคอมพวิ เตอร์:97
a++;
++a;
ทง้ั 2 คาสัง่ จะมีค่าเท่ากบั a = a + 1 ; ส่วนคาส่งั
a- -;
- -a;
จะมีคา่ เทา่ กับ a = a - 1 ;
ความแตกต่างของตาแหนง่ การวางตวั ดาเนนิ การเพ่ิมคา่ หรือลดค่าตาแหนง่ ของการวางตัวดาเนนิ การ
เพ่มิ ค่าหรือลดคา่ ส่งผลถงึ การทางานของคาสั่งน้ัน ตัวอยา่ งเช่น
b=5;
a = 10+b++ *2 ;
ผลลัพธท์ ี่ได้จะมผี ลเทา่ กบั คาส่งั
a = 10+b *2 ;
b = b+ 1;
จะไดว้ า่ a มีคา่ เทา่ กับ 10 + 5 * 2 = 20 และ b มคี า่ เทา่ กับ 6
แตห่ ากนาตวั ดาเนนิ การเพิ่มค่ามาไว้ดา้ นหน้าตวั แปรดังตวั อย่าง โดยกาหนดให้ b มีค่าเทา่ กบั 5
เชน่ เดยี วกัน
98:การเขยี นโปรแกรมคอมพวิ เตอร์
4.4 ตัวดาเนนิ การเปล่ียนข้อมลู
ตัวดาเนินการเชิงสัมพันธ์ หรือการเปล่ียนชนดิ ขอ้ มูลในภาษา C การเปลีย่ นข้อมูลมี 2 ลักษณะคือ
การเปลยี่ นชนิดขอ้ มลู โดยไมต่ ้องใชค้ าสงั่ (Implicit Casting) และการเปลี่ยนชนดิ ข้อมลู โดยใช้คาสง่ั
(Explicit Casting) เชน่ หากตอ้ งแปลงขอ้ มูลชนดิ float ไปเป็นอีกข้อมลู ชนิด int จะตอ้ งใช้คาสง่ั
จะได้ว่า a มคี ่าเท่ากบั 12 การบวนการทางานจะมีการเปลีย่ นชนิดขอ้ มลู ทอ่ี ยู่ใกล้กบั ตัว
ดาเนินการเปลย่ี นชนิดข้อมลู ใหเ้ ป็นชนดิ ขอ้ มลู ทรี่ ะบุในวงเล็บ แลว้ จงึ มกี ารกาหนดคา่ ใหม่นั้นให้กบั a
ท้ังน้ีสามารถกาหนดชนดิ ข้อมูลทีจ่ ะเปลี่ยนคา่ เป็นชนิดข้อมูลใดๆกไ็ ด้แสดงตวั อย่างเพิ่มเติม ดังตัวอยา่ ง
ต่อไปนี้
4.5 ตวั ดาเนนิ การความสัมพนั ธ์
ตวั ดาเนนิ การความสัมพนั ธไ์ ด้แก่ ตวั ดาเนนิ การท่ีใช้เปรียบเทยี บนิพจน์ 2 นิพจน์ มักใช้กับคาสัง่ ควบคุม
ซงึ่ จะกลา่ วถึงในบทท่ี 3 ดังตารางข้างลา่ ง
ตัวดาเนินการ ความหมาย
> มากกว่า
< น้อยกว่า
>= มากกวา่ หรือเท่ากับ
<= นอ้ ยกวา่ หรอื เท่ากับ
ผลท่ไี ดจ้ ากการใชต้ วั ดาเนนิ การความสัมพนั ธค์ ือ จรงิ หรือ เท็จ ซึ่งในภาษา C แทนด้วยเลขจานวนเต็ม
กรณีเทจ็ จะแทนด้วยค่า 0 และกรณจี รงิ จะแทนดว้ ยค่าท่ีไม่ใช่ 0 ทดสอบคา่ การเปรียบเทียบดงั ตวั อยา่ ง
ที่ 1 และแสดงตัวอย่างการประมวลผลนิพจนค์ วามสมั พนั ธ์ดังตาราง
การเขียนโปรแกรมคอมพวิ เตอร์:99
แสดงตัวอย่างการประมาณผลนิพจนค์ วามสัมพันธ์กาหนดให้ a = 5 และ b = 3
นพิ จน์ แปลงนิพจน์ ค่าตรรกะ คา่ ท่ีได้
1
5+2*4<(5+2)*4 5+(2*4)<(5+2)*4 True
a+b <= b+a (5+3)<=(3+5) True 1
a/b <b/a (5/3)<(3/5) False 0
4.6 ตัวดาเนนิ การความเท่ากนั
ตวั ดาเนนิ การความเทา่ กันเป็นตัวดาเนินการเพ่อื ใช้เปรียบเทียบความเท่ากันของนิพจน์ 2 นิพจน์
มกั ใชก้ บั คาสัง่ ควบคุม ซ่ึงจะกล่าวถงึ ในบทที่ 3มีตวั ดาเนนิ การดงั ตาราง
ตัวดาเนนิ การ ความหมาย
= = เทา่ กนั
! = ไมเ่ ทา่ กนั
ผลลพั ธ์ของการเปรียบเทียบมีคา่ คือ จรงิ หรอื เท็จ การใช้งานจะต้องระวังเพราะมคี วามสับสน
ระกว่างการใชต้ วั ดาเนินการความเทา่ กัน = = กับตัวดาเนนิ การกาหนดค่า = ซึ่งมีการทางานท่ตี ่างกนั
และวธิ ดี าเนนิ การไมเ่ ทา่ กันใช้เครอ่ื งหมาย != ไมใ่ ชเ่ ครอ่ื งหมายเหมอื นในภาษาอ่นื ๆ เช่น
a==2 เปน็ การเปรยี บเทยี บว่าตัวแปร a มีค่าเท่ากับ 2 หรือไม่
a=2 เป็นการกาหนดคา่ 2 ให้กบั ตัวแปร a
ในการเปรียบเทยี บค่าจะต้องระวงั เรือ่ งของเลขทศนิยมซงึ่ เกิดจากการคานวณของเครื่องคอมพวิ เตอร์ซึง่
คอมพวิ เตอร์แตล่ ะเคร่อื งอาจจะให้ผลการคานวณท่ตี า่ งกนั ดงั ตัวอยา่ ง
100:การเขยี นโปรแกรมคอมพวิ เตอร์
Float a = 1.0 f;
คาสงั่ a == a /3.0*3.0 อาจจะให้คา่ ที่คาดไม่ถึง เน่ืองจากในทางคณิตศาสตร์ 1/3*3 จะได้ค่าเท่ากบั 1
แตใ่ นทางคอมพวิ เตอรเ์ ครื่องคอมพวิ เตอรบ์ างเครื่อง 1/3 จะได้ค่า 0.33333 เมอ่ื นากลับมาคูณกบั 3
จะได้ค่า 0.99999 ซึง่ ผลลพั ธ์จะไมเ่ ท่ากับ 1.0 ตามทผ่ี ู้เขียนโปรแกรมตั้งใจ
4.7 ตัวดาเนินการตรรกะ
ตวั ดาเนนิ การตรรกะเปน็ ตวั ดาเนินการทีใ่ ช้คู่กับตวั ดาเนนิ การความสมั พนั ธ์และตัวดาเนินการ
ความเทา่ กัน ซึ่งมักจะใช้กบั คาสั่งควบคมุ
แสดงตวั ดาเนินการตรรกะ
ตวั ดาเนินการตรรกะ ความหมาย
&& และ(and)
|| หรือ(or)
! ไมใ่ ช่(not)
ซง่ึ ผลที่ได้จากตัวดาเนนิ การดังกลา่ ว จะเปน็ ไปตามตารางค่าความจรงิ ดังนี้
ตัวถูกดาเนนิ การ ผลลัพธ์
a b a&&b a||b !a
11 1 1 0
10 0 1 0
01 0 1 1
00 0 0 1
การเขียนโปรแกรมคอมพวิ เตอร์:101
ในการใช้ตวั ดาเนินการตรรกะสงิ่ ที่ต้องระวังคือ Short Circuit เนื่องจากเราทราบวา่ ในกรณี
ของ && หากนิพจนแ์ รกเปน็ เทจ็ เสมอ และในกรณขี อง || หากนิพจนแ์ รกเป็นจริงไมว่ า่ นิพจน์ท่ี 2 เป็น
อะไร จะทาใหน้ พิ จนน์ น้ั เป็นจรงิ เสมอ คอมไพเลอร์ใชห้ ลกั การคดิ นีเ้ ชน่ เดียวกัน ทาให้ไม่มีการ
ประมวลผลนิพจน์ที่ 2 ในกรณที ี่นพิ จน์แรกทาใหเ้ กดิ short circuit
นอกจากนี้การเขยี นนิพจน์ตรรกะศาสตรท์ ค่ี ้นุ เคยในชีวติ ประจาวันในบางลักษณะไม่สามารถ
ทาไดใ้ นทางคอมพิวเตอร์ ตัวอย่างเช่น หากต้องการทราบว่า x มคี า่ อยู่ในชว่ งตัง้ แต่ 10 ถึง 20 จรงิ
หรอื ไม่ ปกติแลว้ จะเขียนว่า 10<=x<=20 ซึ่งรปู แบบน้ีไม่สามารถใช้ได้ในทางคอมพิวเตอร์ ทถ่ี กู ต้อง
จะต้องเขยี นว่า
x>=10 && x<=20
4.8 ตวั ดาเนนิ การเงอื่ นไข
ตัวดาเนินการเงื่อนไข จะนามาใชเ้ พ่อื ทดสอบคา่ นพิ จน์ทางตรรกะว่าจริงหรือเท็จ โดยมีรูปแบบ
ดังน้ี
รปู แบบ
Expression1 ? expression2 : expression3
โดยที่ expression1 หมายถึง นพิ จนเ์ งอื่ นไข
expression2 หมายถึง คา่ ทีไ่ ด้ กรณีเป็นจริง
expression3 หมายถงึ ค่าทีไ่ ด้ กรณีเป็นเทจ็
ตวั อยา่ ง จากนิพจน์เง่ือนไขต่อไปนี้ กาหนดใหต้ วั แปร i และ ans เปน็ ข้อมูลชนดิ เลขจานวนเต็ม
ans = ( i <0 ) ? 0 : 100 ;
นพิ จน์ ( i < 0 ) จะถกู ดาเนินการก่อน
ถ้านิพจน์มีเงอื่ นไขเป็นจริง ตวั แปร ans จะถูกกาหนดคา่ เป็น 0
ถ้านพิ จน์มเี งอ่ื นไขเปน็ เท็จ ตัวแปร ans ก็จะถกู กาหนดคา่ เป็น 100
ซึ่งหากเขยี นอยใู่ นรูปแบบชดุ ของคาสงั่ if ก็จะได้ดังนี้
102:การเขยี นโปรแกรมคอมพวิ เตอร์
อยา่ งไรกต็ าม ตวั ดาเนินการเงื่อนไข ยงั สามารถนามาเขยี นเพ่อื การตรวจสอบเงื่อนไขท่ซี ับซ้อน
ได้ ดังตัวอยา่ งเช่น
ans += ( a > 0 && a <= 10 ) ? ++a : a/b ;
นพิ จนข์ องภาษาซี คลา้ ยกับนิพจน์ทางคณติ ศาสตร์ ประกอบขน้ึ จากค่าคงท่ี ตวั แปร (เรยี กว่า
ตวั ถกู ดาเนินการ) กับตัวดาเนินการ นพิ จน์หนงึ่ ๆ อาจมหี ลายนิพจน์ยอ่ ยโดยขนาดของข้อมูลต้องอยู่ใน
ขอบเขตของหนว่ ยความจาที่จะใช้เก็บข้อมลู นนั้ ๆ การจะได้มาซง่ึ ผลลพั ธ์จากนิพจน์ท่ีกาหนดตอ้ งนาตวั
ถูกดาเนินการตามชนิดของตัวดาเนินการนน้ั ๆ
การเขยี นโปรแกรมคอมพวิ เตอร์:103
บทสรุป
ตวั ดาเนินการในภาษา C มีมากมายหลายตวั ทเี ดยี ว แต่สาหรบั ในทน่ี จ้ี ะขอกล่าวถงึ ตวั
ดาเนนิ การสาคญั ๆ ดงั ต่อไปน้ี ตัวดาเนนิ การกาหนดคา่ ใชส้ าหรบั การกาหนดค่าให้กับตัวแปรทาง
ด้านซา้ ยของตัวดาเนนิ การ ตวั ดาเนนิ การทางคณติ ศาสตร์ ใช้สาหรับคานวณคา่ ทางคณิตศาสตร์
ตัวดาเนินการเพ่ิมค่าและลดค่า ตวั ดาเนนิ การเปล่ียนข้อมลู ตัวดาเนินการความสัมพันธ์ ตัวดาเนนิ การ
ความเท่ากัน ตวั ดาเนนิ การตรรกะ ตวั ดาเนนิ การเงอื่ นไข
104:การเขียนโปรแกรมคอมพวิ เตอร์
แบบฝกึ หัด
1. หาทผ่ี ดิ ในนพิ จนต์ ่อไปนี้ และแก้ไขให้ถูกต้อง
(ก) a = + a – b * 3 2 .
(ข) a = ab + c .
(ค) x <> y .
(ง) a => b .
(จ) a1 > a2 OR a1 > a3 .
(ฉ) 10 <= x <= 20 .
(ช) (((a+b) > 10) && ((a-b) > 5))) .
2. ใหเ้ ขยี นนพิ จน์ตามทีโ่ จทย์ระบุ
(ก) มีตวั แปร a b และ c ให้เขยี นนิพจนเ์ พอื่ หาค่าของ a ซง่ึ เกดิ จาก b ยกกา ลงั สองบวกกบั c
(ข) มตี ัวแปร a b และ c ใหเ้ ขยี นนพิ จน์เพ่อื หาคา่ ของ a ซง่ึ เกิดจาก a คูณ กบั c แลว้ หารด้วย
b
(ค) มตี ัวแปร a b และ ให้เขยี นนิพจน์เพ่ือเปรียบเทยี บ a บวก b มีคา่ มากกวา่ a บวกดว้ ย c
หรือไม่
(ง) มีตัวแปร a และ ให้เขยี นนิพจน์เพ่ือเปรยี บเทียบ a มีค่ามากกว่า 0 และเม่ือบวก a ด้วย 5
มคี า่ ไม่เกิน 100
(จ) มตี วั แปร x เกบ็ อายุของพนกั งานคนหนง่ึ ในบรษิ ทั ให้ตรวจสอบวา่ x มีอายุอยู่ในช่วงตั้งแต่
25 ปีขน้ึ ไป
แต่ว่าไม่เกิน 60 ปี
(ฉ) มตี ัวแปร x เกบ็ จานวนจรงิ ใหต้ รวจสอบวา่ x มคี า่ น้อยกว่า 100 หรอื มากกวา่ 500
3. ใหค้ า ตอบของนิพจน์ต่อไปน้ี
(ก) int a=5, b=10, c=15, d;
d = a + 5 * b;
d = a + 5 * b;
d = b / a * c;
d = a + b * 3 / 2 – b / 4 + a % 2 + 10;
d=5
d += a + b % 3;
d %= b - 3;
d = a++ + b++ + 2;
การเขยี นโปรแกรมคอมพวิ เตอร์:105
d = ++a + a++;
d = a + b++ 2 – b++ / 4 + ++a % 2;
(ข) int a=5, b;
float x=12.5, y;
b = 15.7;
y = 10;
b = a / 2;
y = x / 2;
b = a % 3 * 2.5;
y = x + 6 / 3;
(ค) int a=5, b=10, c=3;
a > b || a < c
(a + b / 3) > 10
a*c > b && b*a/c < b/a*c
a >= 10 || b >=10 && c*a >= 10
! (a < b) && (a > c) || !(a+c > b)
4. เขยี นโปรแกรมคานวณพนื้ ท่ขี องวงกลม โดยรบั รศั มีของวงกลมจากผใู้ ช้ สตู รการหาพื้นท่ีของวงกลม
ได้แก่กาหนดให้ค่า PI คือ 3.14159265
5. เขยี นโปรแกรมรบั ข้อมลู จานวนเตม็ 5 จานวนจากผู้ใช้ และหาวา่ คา่ เฉลี่ยของขอ้ มลู ทร่ี ับเขา้ มามีคา่
เทา่ ใด
6. เขียนโปรแกรมใหร้ บั ค่าจา วนจริงจากผู้ใช้ 1 จานวน และใหห้ าวา่ เลขดงั กล่าวอยู่ในชว่ งของเลข
จานวนเต็มใด เช่น หากผูใ้ ชป้ ้อนเลข 12.5 ใหต้ อบว่า “12.5 is between 12 and 13” (ใชต้ วั
ดาเนินการเปล่ยี นชนดิ ข้อมลู ในการเขียนโปรแกรม)
106:การเขียนโปรแกรมคอมพวิ เตอร์
เอกสารอา้ งอิง
ไกรศร ตัง้ โอภากลุ และกติ นิ นั ท์ พลสวัสด์.ิ (2556). คูม่ ือเรยี นเขียนโปรแกรมภาษา C ฉบับ
สมบูรณ์. พิมพค์ รัง้ ที่ 1 . นนทบรุ ี : ไอดีซฯี .
ไกรศร ตั้งโอภากุล. (2554). ค่มู ือเรียนเขยี นโปรแกรมภาษา C. พิมพค์ รงั้ ท่ี 1. นนทบุรี: บริษัทไอซีดี
พรีเมียรจ์ ากัด.
ดอนสัน ปงผาบ. (2546). การเขยี นโปรแกรมภาษาซใี นงานควบคุม. พิมพ์ครั้งท่ี 9. กรุงเทพฯ:
สมาคมส่งเสรมิ เทคโนโลยี (ไทย-ญี่ปุน่ ).
ธีรวัฒน์ ประกอบผล. (2556). คูม่ ือการเขียนโปรแกรมภาษา C ฉบบั สมบูรณ์. พมิ พค์ รั้งท่ี 1.
กรงุ เทพฯ.สานกั พิมพ์ ซมิ พลฟิ าย. 2556.
ฝา่ ยตาราทางวชิ าการ. (2555). คอมพวิ เตอร.์ คู่มือเรยี นตอมพิวเตอร์และการบารงุ รกั ษา. บริษัท ซี
เอ็ดยเู คชนั่ จากัด(มหาชน).
ฝ่ายตาราทางวชิ าการคอมพิวเตอร์.(2556). คู่มือเรยี นคอมพิวเตอรภ์ าษาC. กรงุ เทพฯ:บรษิ ทั ซีเอ็ด
ยูเคช่ัน จากัด(มหาชน).
วจิ ักษ์ ศรีสัจจะเลิศวาจา, ดษุ ฎี ประเสริฐธิติพงษ์. (2545). การเขียนโปรแกรมภาษาซ.ี ภาควิชา
วิทยาการคอมพวิ เตอร์ คณะวิทยาศาสตร์ มหาวิทยาลยั เชียงใหม่.
โอภาส เอย่ี มสิรวิ งศ์ . การเขยี นโปรแกรมด้วยภาษา C (Programming with C).--กรงุ เทพฯ: ซี
เอด็ ยเู คช่ัน , 2552 . 504 หนา้
การเขียนโปรแกรมคอมพวิ เตอร์:107
แผนบรหิ ารการสอนประจาบทท่ี 5
รายวชิ า การโปรแกรมคอมพิวเตอร์
Computer Programming
หวั ข้อเน้อื หา
5.1 ฟงั กช์ ันการรับขอ้ มูล
5.2 ฟงั ก์ชนั การแสดงผลขอ้ มูล
5.3 การรบั และแสดงผลข้อมูลดว้ ยฟังก์ชัน getchar() ฟงั ก์ชนั getch() และ putchar()
5.4 การรบั และแสดงผลข้อมูลแบบสตรงิ ด้วยฟงั ก์ชนั gets() และ puts()
วัตถปุ ระสงคเ์ ชิงพฤติกรรม
1. เพือ่ ใหผ้ ู้เรียนมีอธิบายเกี่ยวกบั ฟังก์ชันการรับข้อมลู ได้
2. เพ่อื ให้ผู้เรยี นมีอธิบายเก่ยี วกบั ฟงั ก์ชนั การแสดงผลข้อมูลได้
3. เพอ่ื ใหผ้ ู้เรียนเขยี นโปรแกรมด้วยฟงั กช์ ันรับขอ้ มลู ได้
4. เพ่อื ใหผ้ เู้ รยี นเขียนโปรแกรมดว้ ยฟงั ก์ชนั แสดงผลข้อมูลได้
5. เพอื่ ใหผ้ ้เู รียนเขียนโปรแกรมด้วยฟังก์ชนั gets() ได้
6. เพอ่ื ให้ผู้เรียนเขียนโปรแกรมดว้ ยฟังก์ชนั puts()ได้
วธิ สี อนและกจิ กรรมการเรยี นการสอนประจาบท
1. บรรยายเนือ้ หาในแต่ละหัวขอ้ พร้อมยกตวั อยา่ งประกอบ
2. ศกึ ษาจากเอกสารประกอบการสอน
3. ผู้สอนสรุปเน้อื หา
4. ทาแบบฝกึ หดั เพือ่ ทบทวนบทเรยี น
5. ผูเ้ รียนถามข้อสงสยั
6. ผู้สอนทาการซักถาม
108 : การเขยี นโปรแกรมคอมพวิ เตอร์
สอ่ื การเรียนการสอน
1. เอกสารประกอบการสอนวิชาการโปรแกรมคอมพิวเตอร์
2. ภาพเลอื่ น (Slide)
3. บทความจากหนงั สือ หรือเวบ็ ไซตต์ ่างๆ
4. เครอ่ื งคอมพวิ เตอร์
การวดั ผลและการประเมิน
1. ประเมนิ จากการซกั ถามในชัน้ เรียน
2. ประเมนิ จากความรว่ มมือและความรับผดิ ชอบต่อการเรยี น
3. ประเมนิ จากการทาแบบฝึกหัดทบทวนท้ายบทเรยี น
4. ประเมินจากการฝึกปฏิบัติ
การเขยี นโปรแกรมคอมพวิ เตอร์:109
บทที่ 5
การรบั และแสดงผลข้อมูล
ในบทน้จี ะกล่าวถงึ การทางานพ้นื ฐานทต่ี อ้ งมีอยูใ่ นทกุ โปรแกรมซ่ึงก็คือ การแสดงผล
การทางานออกทางหน้าจอและการรับข้อมูลจากผูใ้ ช้เขา้ มาทางคียบ์ อรด์ โดยในภาษาซี การแสดงผล
ออกทางหนา้ จอ และการรับเข้ามาทางคีย์บอรด์ น้ันสามารถทาได้ง่าย ๆ จากการเรียกใชฟ้ ังก์ชนั ท่ี
ภาษาซเี ตรียมไวใ้ ห้ การส่ังใหเ้ คร่ืองคอมพวิ เตอร์ทางานใดๆ และรอรับค่าผลลพั ธจ์ ากเคร่อื ง จะต้องมี
การตดิ ต่อกับเคร่ือง โดยการส่งผา่ นค่าอินพทุ ไปยังเคร่ืองคอมพวิ เตอร์ และรบั ค่าเอาท์พุทจากเครื่อง
คอมพวิ เตอร์ดังน้ี
อนิ พุต คือ การรบั คา่ ข้อมูลของผ้ใู ชเ้ ข้าไปในเครอื่ งคอมพวิ เตอร์ อุปกรณ์ อินพุทมาตรฐาน
ไดแ้ ก่ คียบ์ อรด์ สแกนเนอร์ หรือ เมาส์
เอาท์พุท คือ การแสดงผลข้อความ ข้อมลู หรอื ค่าตัวแปรใดๆ ออกมาแสดงใหก้ บั ผู้ใช้ทาง
อุปกรณ์แสดงผลเอาท์พุทตา่ งๆ อปุ กรณ์เอาท์พุตมาตรฐาน ได้แก่ จอภาพ ลาโพง หรือ เครอ่ื งพิมพ์
เครื่องคอมพิวเตอร์ท่ัวไป ไม่สามารถจดจาตวั อักษรในลักษณะของรูปร่างตัวอักษรได้ การจดจารปู รา่ ง
ตัวอักษรเพอ่ื นาไปใช้งานนนั้ คอมพวิ เตอร์จะจดจาในรปู รหัสแทนตวั อกั ษร เมอ่ื ต้องการแสดงตัวอักษร
คอมพวิ เตอร์กจ็ ะนาคา่ รหัสเหล่านีไ้ ปเปดิ ตารางภาพตวั อักษร แลว้ นาภาพตวั อักษรตามรหัสนน้ั ไปแสดง
ต่อไป
5.1 ฟังกช์ ันการรบั ข้อมูล
การทางานของโปรแกรมสว่ นใหญม่ กั จะเปน็ การเชื่อมโยงกับผใู้ ช้แบบ 2 ทิศทาง คือ ท้ังภาค
ของการแสดงผลการทางานออกทางหน้าจอ และภาคของการรบั ข้อมลู จากผใู้ ช้เข้ามาทางแป้นพิมพ์
เพอ่ื รว่ มในการประมวลผลของโปรแกรม
5.1.1 คาสัง่ scanf()
ในภาษา C การรับข้อมูลจากคีย์บอรด์ สามารถทาไดโ้ ดยการเรียกใช้ฟังกช์ ัน scanf() ซง่ึ เปน็
ฟังกช์ นั มาตรฐานสาหรับรบั ข้อมูลจากคยี บ์ อรด์ โดยสามารถรับข้อมลู ได้ทุกประเภท ไม่ว่าจะเป็น
จานวนเต็ม ทศนยิ ม อกั ขระ หรือขอ้ ความ
รูปแบบคาสัง่
scanf ( control , argument list );
110 : การเขยี นโปรแกรมคอมพวิ เตอร์
สว่ น control
สว่ นของ control เปน็ รหัสรูปแบบ(format code)ท่ีใชใ้ นการรับข้อมูลซึ่งจะต้องเขียนอยู่
ภายใตเ้ คร่ืองหมาย “ ” ใช้ในการแสดงผลซงึ่ ทุกรหัสรูปแบบจะตอ้ งอยตู่ ามหลังเครื่องหมาย % รหสั
รูปแบบท่ีนิยมใช้ได้แก่
ตารางที่ 5.1 แสดงรหสั รูปแบบท่ีใช้ในฟงั ก์ชนั scanf()
รหสั รปู แบบ ชนิดตัวแปร ลกั ษณะการแสดงผลออกจอภาพ
%d Int ใชแ้ สดงขอ้ มูลทเ่ี ปน็ เลขจานวนเตม็ ฐานสบิ
%ld long int ใชแ้ สดงข้อมูลทเ่ี ป็นเลขจานวนเต็มฐานสิบแบบ long
%u unsigned int ใชแ้ สดงขอ้ มลู ทเ่ี ป็นเลขจานวนเตม็ ฐานสิบแบบ unsigned
%c Char ใช้แสดงขอ้ มลู ทีเ่ ป็นตวั อักษร
%s String ใช้แสดงขอ้ มูลทีเ่ ป็นตวั แปรสตรงิ หรอื ชดุ ตวั อักษร
%o int (octal) ใช้แสดงขอ้ มลู ที่เป็นเลขฐานแปด
%x int (hexa) ใช้แสดงข้อมลู ที่เป็นเลขฐานสิบหก
%f Float ใช้แสดงขอ้ มลู ทีเ่ ป็นเลขทศนิยม ที่ไม่มเี ลขยกกาลัง
%e float, double ใชแ้ สดงขอ้ มลู ที่เป็นเลขทศนิยม ทมี่ เี ลขชกี้ าลัง
%lf Double ใช้แสดงข้อมูลทเ่ี ป็นเลขทศนยิ มแบบ double
**หมายเหตุ ห้ามมขี ้อความใดๆ ในส่วน control ของ ฟงั ก์ชนั scanf ()
ส่วน argument list
ส่วนของ argument list เป็นตัวแปรท่ีจะรบั ค่าจากแป้นพิมพ์มาเก็บไว้ ถ้ามีมากกวา่ หนึง่ คา่
จะต้องแยกกันดว้ ยเคร่ืองหมายคอมมา่ ( , ) และ เนือ่ งจากเปน็ การรับข้อมูลมาเก็บในหน่วยความจา
แทนการรับคา่ จากหนว่ ยความจาไปแสดง ดังน้นั การใช้ scanf () จึงตอ้ งมีอกั ขระ & นาหนา้ ตวั แปรเสมอ
ยกเวน้ การรบั ข้อความ (string) จะไมต่ ้องใช้เคร่ืองหมายนี้ ในฟังกช์ นั scanf() จะต้องมีสว่ น
argument list เสมอ
การเขยี นโปรแกรมคอมพวิ เตอร์:111
ส่วน argument list น้ีจะมีก็ต่อเมื่อในส่วน Control มีการใช้รหัสรูปแบบ แต่ถ้าในส่วน
Control เป็นการแสดงข้อความธรรมดา ก็ไม่จาเป็นต้องมี Argument list ข้อควรระวัง ภาษาซีจะไม่มี
การตรวจสอบว่าชนิดของตัวแปรท่ีนาค่าออก กับรหัสรูปแบบข้อมูล (Format Code) ท่ีกาหนดในการ
แสดงตรงกันหรอื ไม่ ดังนั้นจึงเปน็ หน้าท่ีของผู้เขียนโปรแกรมท่ีจะต้องระวงั ดว้ ยตัวเอง
ตวั อยา่ งการใช้คาสงั่ scanf() เพ่อื รบั ขอ้ มูลจากแป้นพมิ พ์ เข้ามาเกบ็ ไว้ในตัวแปร แสดงดังตอ่ ไปน้ี
int speed; สรา้ งตัวแปรชนิด int สาหรับเก็บค่าตวั เลขจานวนเตม็
printf("Enter wind speef : "); แสดงข้อความให้กรอกค่าความเร็วลมเปน็ จานวนเตม็
scanf("%d",&speed); รบั คา่ ความเร็วลมเข้ามาเก็บไว้ในตวั แปร speed
char answer; สรา้ งตัวแปรชนิด char สาหรับเกบ็ อักขระ
printf("Enter Figure (Y : N) : ") แสดงข้อความให้ป้อนอักขระ Y หรอื N
scanf("%c",&answer รับอักขระเข้ามาเกบ็ ไว้ในตวั แปร answer
char name[10]; สร้างตวั แปรสตรงิ สาหรบั เก็บข้อความ
printf("Enter your name = "); แสดงข้อความใหป้ ้อนชื่อ
scanf("%s",name รบั ช่ือเข้ามาเกบ็ ไว้ในตัวแปร name สงั เกตจะไมใ่ ส่เครื่องหมาย
& ตวั แปรชนดิ ขอ้ ความ
scanf(%s,name); scan ข้อมลู จากคียบ์ อรด์ เปน็ ชนดิ string เกบ็ ในตวั แปร name
scanf(%c %d,&a,&b); scan ข้อมลู จากคีย์บอรด์ เปน็ ชนดิ char เก็บในตัวแปร a
และ scan ข้อมูลจากคยี ์บอร์ดเปน็ ชนิด int เก็บในตวั แปร b
ตัวอยา่ งท่ี 5.1 ถา้ ตอ้ งการเขียนโปรแกรมรับคา่ integer ไปเก็บไวใ้ นตัวแปร x1 และรับค่าชุดตวั อักษร
ที่มคี วามยาวไม่เกิน 30 ตวั อกั ษรไปเก็บไว้ในตัวแปร letter จะเขียนได้ ดังน้ี
#include<stdio.h>
main( )
{ int x1;
char letter[30];
scanf(“%d”,&x1);
scanf(“%s”,letter);
}
112 : การเขียนโปรแกรมคอมพวิ เตอร์
ตวั อยา่ งที่ 5.2 เขยี นโปรแกรมคานวณหาระยะทางจากการรับค่าอตั ราความเรว็ กม./ชม. และเวลา
#include<stdio.h>
main( )
{ int speed;
float time,distance;
printf(“Input Speed:”);scanf(“%d”,&speed);
printf(“Input Time: “);scanf(“%f”,&time);
distance = speed* time;
printf(“Distance = %d km”,distance);
}
ตัวอย่างท่ี 5.3 คานวณคา่ x และ y ซง่ึ รับทงั้ สองค่าทางแป้นพมิ พ์
#include <stdio.h>
#include <conio.h>
void main()
{
int x,y,sum;
printf("Enter The Length is : ");
scanf ("%d",&x);
printf("Enter The Width is : ");
scanf ("%d",&y);
sum = x*y;
printf("The area is :%d",sum);
getch();
}
ผลลพั ธโ์ ปรแกรม
Enter The Length is : 15
Enter The Width is : 5
The area is : 75
5.1.2 ฟังกช์ ัน getch ( )
getch ( ) เปน็ ฟังก์ชันท่ใี ชร้ ับข้อมลู ที่เปน็ ตวั อักษร 1 ตัว เข้ามาทางแป้นพิมพ์ โดยเมือ่ ป้อน
ข้อมูลเสรจ็ ไมต่ อ้ งกดปุ่ม enter และอกั ษรทป่ี ้อนเข้ามาจะไม่ปรากฎบนจอภาพ
รูปแบบ
getch ( ) ;
การเขียนโปรแกรมคอมพวิ เตอร์:113
ตวั อย่างที่ 5.4 รบั ค่าของตัวแปร x ด้วยฟังกช์ นั getch()
#include <stdio.h>
main ( )
{ char x;
x = getch( ) ;
}
เครอื่ งจะรอรบั ข้อมลู จากแป้นพิมพเ์ ขา้ มา 1 ตวั เพื่อนามาเก็บไว้ในตวั แปร x โดยผู้ใช้ไมต่ ้องกด enter
หลงั จากท่ีปอ้ นข้อมลู เสร็จแล้ว
ตวั อยา่ งที่ 5.5 รบั คา่ ตัวแปร ch
#include<stdio.h>
#include<conio.h>
void main(void)
{
char ch;
printf("Enter a single character : ");
ch = getch( );
printf("\nYou type a character is ...%c \n",ch);
getch( );
}
5.1.3 ฟังกช์ ัน getche()
getche() เปน็ ฟงั กช์ ันที่ใชร้ บั ข้อมลู จากแปน้ พิมพ์เพียง 1 ตวั อักขระ เหมือนฟงั ก์ชัน getch()
แตกตา่ งกนั ตรงท่ีขอ้ มูลทีป่ ้อนเขา้ ไป จะปรากฏให้เหน็ บนจอภาพด้วย นอกน้ันมีการทางาน และ
ลกั ษณะการใชง้ านเหมอื นฟังก์ชัน getch( ) ทกุ ประการ
รปู แบบ
getche( ); หรือ char_var = getche( );
โดยท่ี
getche( ) คอื ฟงั ก์ชนั ท่ีใชร้ บั ข้อมลู เพยี ง 1 ตัวอกั ขระจากแปน้ พิมพ์ โดยฟงั ก์ชันนีจ้ ะไม่มี
argument ดังนัน้ อาจจะใช้ getche(void) แทนคาว่า getche( ) ก็ได้แต่นิยมใช้ getche( )
มากกว่า
char_var คือ ตวั แปรชนดิ char ซง่ึ จะเก็บข้อมลู 1 ตวั อกั ขระทปี่ ้อนผ่านทางแปน้ พิมพ์
114 : การเขยี นโปรแกรมคอมพวิ เตอร์
ตวั อย่างท่ี 5.6 การรบั คา่ ตัวแปรด้วยฟงั ก์ชัน getche()
#include<stdio.h>
#include<conio.h>
void main(void)
{
char e;
clrscr( );
printf("Enter a single character : ");
e = getche( );
printf("\nYou type a character is ...%c \n",e);
getch( );
}
5.2 ฟังก์ชันการแสดงผลขอ้ มลู
5.2.1 ฟังกช์ ันแสดงผลออกทางหนา้ จอดว้ ยคาส่ัง printf()
การแสดงผลออกทางหน้าจอสามารถทาไดห้ ลายวิธดี ้วยกันแตว่ ิธที น่ี ิยมใชก้ ันมากท่สี ดุ ก็คือ
การเรียกใช้ฟงั ก์ชัน printf() ถือได้ว่าเป็นคาสงั่ พ้ืนฐานท่ีสดุ ในการแสดงผลข้อมลู ทุกชนดิ ออกทางหน้าจอ
และเป็นฟังกช์ นั มาตรฐานทใี่ ช้ในการแสดงผลข้อมลู ทุกชนิดออกทางหนา้ จอ ฟังกช์ นั printf() ทัง้ จานวน
เต็ม (int) ทศนิยม (float) ข้อความ หรืออักขระ (string) คาส่งั มคี วามยืดหยุน่ สูงโดยสามารถกาหนด
หรือจัดรปู แบบการแสดงผลให้มีระเบยี บหรือเหมาะสมตามความตอ้ งการได้อีกดว้ ย ตัวอย่างการใชค้ าสัง่
printf () แสดงผลข้อความธรรมดาออกทางหนา้ จอ ดังนี้
ตัวอยา่ งการใช้อักขระควบคมุ การแสดงผลรว่ มกับคาส่ัง printf () แสดงดังต่อไปนี้
printf("Hello Program C"); แสดงข้อความ Hello Program C ออกทางจอภาพ
printf("Udon Thani Rajabhat"); แสดงขอ้ ความ Udon Thani Rajabhat ออกทางจอภาพ
printf(" Thailand"); แสดงข้อความ Thailand ออกทางจอภาพ
printf("Hello ... \n"); แสดงขอ้ ความ Hello ... แลว้ ขน้ึ บรรทดั ใหม่
printf("Hello...\nLampang\n"); แสดงขอ้ ความ Hello ...แลว้ ข้ึนบรรทดั ใหม่พร้อมกับแสดง
ขอ้ ความLampang จากนนั้ ข้ึนบรรทัดใหม่อกี ครั้ง
printf("Num1 = %d\tNum2 = %f\n",x,z); แสดงขอ้ ความ Num1 = 45 ตามดว้ ยการเวน้ ช่องวา่ ง 1
แทบ็ แลว้ ตอ่ ดว้ ยข้อความ Num2 = 20.153
การเขียนโปรแกรมคอมพวิ เตอร์:115
ตวั อย่างท่ี 5.7 โปรแกรมแสดงขอ้ ความออกทางจอภาพดว้ ยฟังกช์ นั printf()
#include <stdio.h>
#include <conio.h>
void main()
{
prinft('Udon Thani Rajabhat\n");
printf("Program C\n");
getch();
}
ผลลพั ธ์โปรแกรม
Udon Thani Rajabhat
Program C
ตวั อย่าง 5.8 การใชง้ านฟังก์ชนั printf ()
#include<stdio.h>
main( )
{ int sum=5; float e=11.55;
printf(“This is the test Program. “);
printf(“The result is %d \n”,sum);
printf(“The result is %f %e “,e,e);
}
ผลลัพธ์
This is the test Program. The result is 5
The result is 11.550000 1.155000e+01
ตัวอย่าง 5.9 การใช้งานฟังก์ชนั printf()
#include<stdio.h>
main()
{ char a=’A’ ;
char name=”Aree”;
int x,y;
printf(“What is the first character \n”);
printf(“The first character is %c \n\n”,a);
x=10; y=15;
printf(“x+y= %d \n”,x+y);
116 : การเขียนโปรแกรมคอมพวิ เตอร์
printf(“ %d – 5 = %d \n”,y,y-5);
x=65;
printf(“x is %c”,x);
printf(“This program run by %s”,name);
}
ผลลพั ธ์
What is the first character
The first character is A
x+y=25
15-5=10
x is 65 This program run by Aree
ฟลิ ด์ (field) คอื การกาหนดพ้นื ทแ่ี ละรปู แบบในการแสดงค่า โดยจะเขียนเป็นเคร่ืองหมาย + หรอื -
เป็นตัวเลข หรือ จุดทศนิยมผสมกับตวั เลขแทรกอย่ภู ายในฟอร์เมต ดงั แสดงในตวั อยา่ งที่ 5.9
ตวั อย่าง 5.10 การใช้งานฟังก์ชนั printf () แสงดงตวั เลข
#include <stdio.h>
void main()
{
printf(|1234567890|\n);
printf(|%10s|\n,price);
}
จากตัวอย่างจะเป็นการสัง่ ให้แสดงข้อความ price ในพ้ืนท่ีท่ีจองไว้ 10 ตัวอกั ษร เราจะใช้
ตวั เลขในการกาหนดพ้ืนท่ี โดยตัวเลขทก่ี าหนดน้จี ะอยูร่ ะหวา่ งเคร่ืองหมาย%กบั ฟอร์เมตบอกชนดิ ของ
ตัวแปร ผลลพั ธ์ของโปรแกรม ในตวั อย่างที่ 5.9
|1234567890|
| price|
จะเห็นวา่ เมื่อโปรแกรมทางาน บนจอภาพจะแสดงคาว่า price วางชิดขวา ในพื้นที่ 10 อักษร
แต่ถ้าหากใส่เคร่ืองหมาย - นาหน้าตัวเลขที่บอกจานวนฟิลด์ จะเป็นการแจ้งให้วางอักษรชิดซ้าย ถ้า
เปล่ยี นฟงั กช์ ัน printf() ตัวที่สองดังตวั อย่าง ดังนี้
printf(|%-10s|\n,price);
การเขียนโปรแกรมคอมพวิ เตอร์:117
ผลของโปรแกรมจะเป็นดงั นี้
|1234567890|
|price |
หากข้อมลู เป็นชนิด float จะมีการกาหนดฟลิ ดใ์ นรปู a.b โดยที่ a คอื จานวนพ้นื ท่ีอักษรที่
แสดงรวมทงั้ เคร่ืองหมายจดุ ทศนยิ ม b คอื จานวนหลักทศนิยม เช่นเปลย่ี นฟังก์ชนั printf() ตวั ท่สี องดงั
แสดงในตัวอย่างเป็น
printf(|%10.3f|\n,1999.95);
ผลของโปรแกรมได้ดงั น้ี
|1234567890|
|_ _1999.950|
จะเห็นว่า คา่ 1999.95 จะถูกแสดงในพ้ืนท่ี 10 ตวั อกั ษร มีพ้นื ท่ีแสดงทศนยิ ม 3 ตาแหน่ง โดย
จดุ ทศนิยมจะถือเป็นตัวอักษรตัวหนึ่งเช่นกนั
หากจุดทศนยิ มนาหนา้ ฟิลดใ์ นกรณขี องข้อมูล ชนดิ int หรือ string จะเปน็ การแสดงจานวน
ตัวอักษรท่ีจะต้องใชแ้ สดงอยา่ งค่าคงท่ี เชน่ ในตัวอย่างดา้ นลา่ งนี้เปลี่ยนฟงั ก์ชนั printf() ใหเ้ ป็นดงั นี้
printf(|%.10s|\n,This program is running);
printf(|%.10d|\n,20);
ผลของโปรแกรม เป็นดงั น้ี
|1234567890|
|This progr|
|0000000020|
รหสั พิเศษ (escape sequence) ที่แทรกลงไปในคา่ คงท่สี ตรงิ เพ่ือใชค้ วบคมุ การ
แสดงผลของตวั อักษรในลกั ษณะตา่ งๆ โดยการเขียนจะต้องมีเครื่องหมาย \ (Back-Slash) นาหน้า
รหัสควบคุมการแสดงผลดไู ด้จากตารางท่ี 5.2
118 : การเขยี นโปรแกรมคอมพวิ เตอร์
ตารางท่ี 5.2 แสดงตวั Escape Sequence ตา่ งๆ ทีม่ ใี ชใ้ นภาษาซี
Escape Sequence คา่ หนา้ ที่
\a 0x07 เสยี งดงั ออกลาโพงหน่ึงคร้ัง
\b 0x08 เลื่อน cursor ไปลบตวั อักษรทางซา้ ยมือหนึ่งตวั อกั ษร
\f 0x0c ข้นึ หนา้ ใหม่
\n 0x0a ขึน้ บรรทดั ใหม่
\r 0x0d เลื่อน cursor ไปทางซา้ ยมือสุดของบรรทดั
\t 0x09 ตงั้ tab ในแนวนอน
Escape Sequence ค่า หน้าที่
\v 0x0b ตัง้ tab ในแนวตง้ั
\\ 0x5c เครอ่ื งหมาย \
0x2c
\ เครอ่ื งหมาย
\ 0x22
\? เคร่อื งหมาย
0x3f เคร่อื งหมาย ?
5.3 การรบั และแสดงผลข้อมลู ด้วยฟงั ก์ชนั getchar() และ putchar()
5.3.1 ฟงั ก์ชัน getchar ( )
getchar ( ) เป็นฟังกช์ ันทใี่ ช้รับขอ้ มูลเขา้ มาทางแป้นพมิ พท์ ีละ 1 ตวั อักษร โดยตอ้ งกด enter
ทกุ ครงั้ เม่อื สนิ้ สุดข้อมูล และข้อมลู ทป่ี ้อนจะปรากฎใหเ้ ห็นบนหนา้ จอภาพดว้ ย
รูปแบบ
getchar ( ) ;
การเขยี นโปรแกรมคอมพวิ เตอร์:119
ตวั อย่างที่ 5.11
#include<stdio.h>
main ( )
{ char ch;
ch=getchar ( );
}
เครือ่ งจะรอรบั ขอ้ มลู จากแป้นพิมพ์ท่ผี ใู้ ช้ปอ้ น จานวน 1 ตวั อกั ษรเกบ็ ไว้ในตัวแปร ch หลังจาก
ทผ่ี ใู้ ชต้ อ้ งกดปุ่ม enter เพอื่ ใหฟ้ ังก์ชันรับค่าข้อมลู
5.3.2 ฟงั กช์ นั putchar( )
putchar( ) เป็นฟงั ก์ชนั ท่ใี ช้ให้คอมพวิ เตอร์แสดงผลบนจอภาพทีละ 1 ตวั อักษร
รปู แบบ
putchar ( ) ;
ตวั อย่างท่ี 5.12 แสดงฟังก์ชัน putchar()
#include<stdio.h>
main ( )
{ char x;
x=getch ( ) ;
printf (“Here is the output \n”) ;
putchar ( x );
}
ลกั ษณะข้อมลู ท่ปี ้ อน
A
ผลลพั ธ์
Here is the output
A
120 : การเขียนโปรแกรมคอมพวิ เตอร์
5.4 การรับและแสดงผลข้อมลู แบบสตริงดว้ ยฟังกช์ นั gets() และ puts()
5.4.1 ฟังก์ชนั gets ( )
gets ( ) เป็นฟงั ก์ชันท่ใี ชร้ ับข้อมูลทเ่ี ป็นขอ้ ความ (ตัวอักษรจานวนหน่งึ ) จากแป้นพมิ พ์เข้ามา
เกบ็ ไวใ้ นตวั แปร (จาง่ายๆ ว่า gets = get string)
รูปแบบ
gets ( n ) ;
n เป็นชื่อตัวแปรชนดิ ทเ่ี ก็บค่าขอ้ ความ โดยรับค่าข้อความจากแป้นพิมพ์ ฟังก์ชันจะทาการใส่ ‘
\0 ‘ เอาไว้ทีต่ วั สุดท้ายของข้อความ เพ่อื แสดงการสิ้นสุดของข้อความที่รับเขา้ มาเมื่อผู้ใช้กดปุ่ม enter
ตัวอย่างที่ 5.13
#include <stdio.h>
main( )
{ char name[10];
gets(name);
}
เครื่องจะจองท่ตี วั แปรชุดท่ีชอ่ื name ซ่งึ เป็นอกั ขระ ไว้ 10 ตวั และรอรับคา่ ที่เป็นข้อความ
เขา้ มาเก็บไว้ในตวั แปรชดุ ท่ีชื่อ nameได้ยาวไม่เกิน 9 ตวั อักษรเพื่อให้ name ตัวที่ 10 (ตัวสดุ ท้าย) เก็บ
\0 เอาไว้
5.4.2 ฟงั กช์ ัน puts ( )
puts ( ) เปน็ ฟังก์ชนั ท่ีใชแ้ สดงผลข้อมลู ท่ีเป็นข้อความทเี่ ก็บไว้ในตัวแปรชุดออกมาบนจอภาพ
รูปแบบ
puts ( n ) ;
n เปน็ ตวั แปรชุดท่ตี ้องการนาค่ามาแสดงผล
การเขียนโปรแกรมคอมพวิ เตอร์:121
ตัวอย่างที่ 5.14 รบั ค่าตวั แปร name ด้วยฟงั กัชนั gets()
#include <stdio.h>
main ( )
{ char name [10];
gets (name) ;
puts (name);
}
เครอ่ื งจะนาค่าที่เกบ็ ในตัวแปรชดุ name มาแสดงผลบนจอภาพ
ตวั อยา่ งท่ี 5.15 ตวั อย่างการเรยี กใชค้ าส่งั gets() รับข้อความมาจากคยี บ์ อร์ด
#include <stdio.h>
#include <conio.h
main()
{
char provice[30]; => สร้างตวั แปรสาหรับเกบ็ ขอ้ ความขนาด 29 ตวั อกั ษร
printf(“Enter province name:”); => แสดงขอ้ ความให้ป้ อนชื่อจงั หวดั
=> รับขอ้ ความมาเก็บไวใ้ นตวั แปร province
get (proveince);
printf(“you stay in %s \n”,provice); => แสดงขอ้ ความท่ีรับมาเกบ็ ไวใ้ นตวั แปร provine
getch();
}
การเขียนโปรแกรมภาษาซีสามารถคานวณหาผลลัพธข์ องนิพจน์คณติ ศาสตรด์ ้วยการเขียนโปรแกรม
ภาษาซี ตวั อย่างต่อไปนเ้ี ป็นการแสดงลาดบั การประมวลผลทางคณติ ศาสตร์ของนิพจน์ต่าง ๆ
ตวั อย่างท่ี 5.16 ตวั อยา่ งการเขยี นโปรแกรมคานวณนิพจน์ทางคณิตศาสตร์
#include <stdio.h>
#include <conio.h>
void main()
{
int a,b,c,d;
a=(3+4)*5;
b=3+4*5;
c=(2+7)*4%10;
d=2+7*4%10;
e=10+2*8/4*3-5;
printf("(3+4)*5 =%d\n",a);
printf("3+4*5 =%d\n",b);
printf("(2+7)*4%10 =%d\n",c);
printf("(2+7)*4%10 =%d\n",d);
122 : การเขียนโปรแกรมคอมพวิ เตอร์
printf("10+2*8/4*3-5 =%d\n",e);
getch();
}
ผลลพั ธโ์ ปรแกรม
(3+4)*5=35
3+4*5=23
(2+7)*4%10=6
2+7*4%10=10
10+2*8/4*3-5=17
ตัวอยา่ งท่ี 5.17 ตัวอยา่ งโปรแกรมคานวณหาผลลพั ธจ์ ากการหาร
#include <stdio.h>
#include <conio.h>
void main()
{
int a,b;
float c;
a=20;
b=6;
c=6;
printf("20/6 =%d\n",a/b); /*หารเอาเฉพาะส่วน*/
printf("20%6 =%d\n",a%b); /*หารเอาเฉพาะเศษ*/
printf("20/6 =%f\n",a/c); /*หารเอาท้งั เศษและส่วน*/
printf("20/6 =%.2f\n",a/c); /*แสดงผลทศนิยม 2 ตาแหน่ง*/
getch();
}
ผลลพั ธ์โปรแกรม
20/6=3
20%6=2
20/6=3.333333
20/6=3.33
การเขียนโปรแกรมคอมพวิ เตอร์:123
บทสรปุ
เม่ือต้องการรบั ค่าข้อมลู string ควรใช้ฟังก์ชัน gets( ) หรือ scanf( ) เมือ่ ต้องการรับตัวเลขหรอื
ตวั อักษรเพยี ง 1 ตวั ทีไ่ มต่ ้องการเห็นบนจอภาพ และไม่ต้องกดแปน้ enter ควรใช้
ฟังกช์ ัน getch( ) แต่ถา้ ต้องการเหน็ บนจอภาพดว้ ยควรใช้ฟงั ก์ชัน getche( ) เมือ่ ต้องการรับขอ้ มลู
ตวั เลขทม่ี ากกว่า 1 ตวั เชน่ ตัวเลขจานวนเต็มหรือตัวเลขทศนยิ ม ควรใช้ฟงั กช์ ัน scanf( )
คาสง่ั getchar() และ getch() ทั้ง 2 คาสง่ั น้ีใชร้ ับข้อมูลประเภทอักขระ( char ) โดยมีรปู แบบการ
เรยี กใช้คาสั่งดังนี้
ch = getchar();
ch = getch();
ch : ตัวแปรชนิด char เพอื่ ใช้เก็บค่าของอกั ขระหรือตัวอักษรทรี่ บั เขา้ มา
ถงึ แม้ว่าท้ังคาสงั่ getchar() และ getch() จะใช้สาหรับรับข้อมลู ชนิดอักขระเหมือนกนั แต่ทัง้
2 คาสงั่ นี้มคี วามแตกตา่ งกนั อยตู่ รงท่ี คาส่ัง getchar() เมอ่ื ปอ้ นอักขระเขา้ มาแล้ว ตอ้ งกดปมุ่ <Enter>
โปรแกรมจึงจะกลบั ไปทางานต่อได้ และตัวอักขระท่ีเราป้อนจะแสดงขนึ้ มาให้เห็นบนหน้าจอดว้ ย ส่วน
คาสัง่ getch() ไมต่ ้องกดปมุ่ <Enter> เพยี งแคเ่ ราป้อนอกั ขระเข้ามา 1 ตวั โปรแกรมจะกลบั ไปทางาน
ตอ่ ทันที และตัวอักขระทป่ี ้อนจะไม่แสดงขึน้ มาให้เหน็
124 : การเขียนโปรแกรมคอมพวิ เตอร์
แบบฝึกหัด
1. ใหเขยี นโปรแกรมเพื่อรบั ขอมูลและแสดงผลขอมูลทร่ี บั นนั้ ดงั น้ี
1.1 ความสูง มีหนวยเปนเซนตเิ มตร
1.2 นามสกลุ ความยาวไมเกิน 30 ตัวอักษร
1.3 เลขทบี่ ตั รประจ าตวั ประชาชนเปนตัวเลข 13 หลกั
2. ใหเขยี นโปรแกรม 2 โปรแกรมเพ่ือแสดงขอความตอไปน้ีออกทางจอภาพ
I love
C programming
very much.
โดยท่ี
(ก) เขยี นโปรแกรมที่ 1 โดยในฟงกชัน main( ) ประกอบดวยฟงกชนั printf( ) 3 ค าส่ัง
(ข) เขยี นโปรแกรมท่ี 2 โดยใชฟงกชัน main( ) ประกอบดวยฟงกชัน printf( ) 1 ค าสงั่
3. ใหเขยี นโปรแกรมเพือ่ รบั ชื่อและความสูงของคน ๆ หนึ่ง และแสดงชื่อและความสงู น้นั ทางจอภาพ
โดยแสดงในรูปแบบดังตวั อยางตอไปน้ี (ตัวเอนคือสิ่งทีผ่ ูใชปอนสูระบบ)
Enter name : Somchai
Enter height (cm.) : 178
Output :
Name Height (cm.)
Somchai 178
4. ใหเขยี นโปรแกรมรบั ขอมลู เลขจานวนจรงิ แบบ float 3 จานวน และแสดงผลลพั ธเลขท้ัง 3 จ านวน
ดังตวั อยาง (ตัวเอนคือสงิ่ ท่ผี ูใชปอนสูระบบ)
Enter number 1 : 5243.2
Enter number 2 : 13
Enter number 3 : 12.3548
การเขยี นโปรแกรมคอมพวิ เตอร์:125
Output :
5243.20
13.00
12.35
5. ให้หาท่ีผิดพลาดของโปรแกรมตอไปน้ี และแกไขใหถกู ตอง
void main ()
{
float a1;
printf("Enter number : ’);
scanf("%s", a1)
printf(“Your number is %.2d” a 1);
}
6. เขียนผลการรนั จากการเขียนโปรแกรมดว้ ยคาส่ังต่อไปน้ี
printf(“test row 1 %10d\n”,10);
printf(“test row 2 %10d\n”,2500);
printf(“test row 3 %10d\n”,180);
printf(“test row 4 %10d\n”,5);
126 : การเขยี นโปรแกรมคอมพวิ เตอร์
เอกสารอ้างองิ
กวนิ สนิ รุง่ เรือง. (2554). คมู่ ือเรยี นการเขียนโปรแกรมภาษาซี. กรุงเทพฯ:สานกั พมิ พ์แหง่ จฬุ าลงกรณ์
มหาวิทยาลยั .
ไกรศร ต้งั โอภากุล และ กิตนิ ันท์ พลสวสั ด์ิ. (2556). คู่มือเรยี นเขียนโปรแกรมภาษา C .พมิ พ์คร้ังท่ี 1 .
นนทบุรี:บรษิ ัทไอดซี ี พรเี มยี ร์ จากดั .
ธนัญชยั ตรภี าค. งานพัฒนาและบริการสอ่ื อิเล็กทรอนิกส์. (2557). พอยนเ์ ตอร์. (ออนไลน์).
แหลง่ ทม่ี า : http://e-learning.snru.ac.th/els/program1/lesson6/page6_1.html. (14
กมุ ภาพันธ์ 2557)
ธรี วฒั น์ ประกอบผล. (2553). คู่มอื การเขียนโปรแกรม ภาษา C. กรงุ เทพมหานคร : ซิมพลิฟาย.
วิจกั ษณ์ ศรีสจั จะเลศิ วาจา และดุษฎี ประเสรฐิ ธิติพงษ์. การเขียนโปรแกรมภาษาซี.(ม.ป.ท.), 2545
ศิริชัย นามบุรี. (2557). บทท่ี 10 พอยน์เตอร์(pointer). (ออนไลน)์ . แหล่งที่มา :
http://www.scribd.com/doc/33490603/ สบื ค้นเมือ่ (14 กุมภาพันธ์ 2557)
อรพิณ ประวัตบิ รสิ ุทธ.ิ์ (2556). คู่มือเขยี นโปรแกรมด้วย ภาษา C ฉบบั สมบูรณ.์ กรงุ เทพมหานคร :
บรษิ ัท โปรวชิ นั จากดั .
http://e-learning.snru.ac.th/els/program1/lesson2/page2_6.html
http://www.elearning.msu.ac.th/opencourse/1201104/Unit_5/Unit_1_01_3.htm
https://sites.google.com/site/nkpcom328/chan-mathymsuksa-pi-thi-6/niphcn-laea-
taw-danein-kar
http://www.slideshare.net/krutae/ss-14812496
http://www.cmdevhub.com/tutorial/บทท่ี-5-ตัวดาเนินการทางคอมพวิ เตอร์
http://www.cmdevhub.com/tutorial/บทที่-5-ตวั ดาเนนิ การทางคอมพวิ เตอร์
https://sites.google.com/site/yingkanitt/home/31
การเขยี นโปรแกรมคอมพวิ เตอร์:127
แผนบริหารการสอนประจาบทที่ 6
รายวชิ า การโปรแกรมคอมพิวเตอร์
Computer Programming
หัวข้อเน้อื หา
6.1 คาสั่งเงื่อนไข
6.2 คาส่งั ทาซา
วตั ถปุ ระสงคเ์ ชิงพฤติกรรม
1. เพื่อให้ผู้เรียนมีความเขา้ ใจเก่ียวกับคาสัง่ เงื่อนไขได้
2. เพ่อื ใหผ้ ู้เรียนสามารถเขียนโปรแกรมดว้ ยคาสงั่ if ได้
3. เพอื่ ใหผ้ เู้ รียนสามารถเขียนโปรแกรมด้วยคาสัง่ switch ได้
4. เพื่อให้ผเู้ รียนมีความเข้าใจเกีย่ วกับคาสั่งทาซาได้
5. เพอ่ื ใหผ้ ู้เรียนสามารถเขยี นโปรแกรมด้วยคาส่งั for ได้
6. เพอ่ื ให้ผู้เรียนสามารถเขียนโปรแกรมด้วยคาสั่ง while ได้
7. เพ่อื ให้ผูเ้ รียนสามารถเขียนโปรแกรมดว้ ยคาสง่ั do..while ได้
วธิ ีสอนและกิจกรรมการเรยี นการสอนประจาบท
1. บรรยายเนือหาในแต่ละหวั ข้อ พร้อมยกตัวอยา่ งประกอบ
2. ศึกษาจากเอกสารประกอบการสอน
3. ผสู้ อนสรปุ เนอื หา
4. ทาแบบฝกึ หดั เพอ่ื ทบทวนบทเรยี น
5. ผเู้ รยี นถามขอ้ สงสยั
6. ผู้สอนทาการซักถาม