ในตอนนี้จะพูดถึง ตัวแปร การประกาศตัวแปร และการแสดงค่าตัวแปรออกทางจอภาพโดยใช้คำสั่ง printf()
ตัวแปร
ในการเขียนโปรแกรม มักจะต้องมีการเก็บข้อมูล หรือ เก็บผลลัพธ์ในการคำนวณ ซึ่งคอมพิวเตอร์จะเก็บค่าเหล่านี้ไว้ในหน่วยความจำ โดยโปรแกรมเมอร์จะอ้างถึงหน่วยความจำผ่านตัวแปร เปรียบเสมือนตัวแปรเหมือนกล่องใส่ข้อมูล โปรแกรมสามารถดูได้ว่าในกล่องแต่ละกล่องมีข้อมูลอะไรอยู่ หรือจะเอาข้อมูลใหม่ไปใส่แทนข้อมูลเก่า ก็ทำได้
การประกาศตัวแปร (Variable declaration)
ในภาษา C ก่อนจะเริ่มใช้งานตัวแปร จะต้องมีการประกาศตัวแปรก่อนรูปแบบคำสั่งการประกาศตัวแปรมีดังนี้
แบบที่ 1: ประกาศตัวแปรตัวเดียว โดยไม่ระบุค่าเริ่มต้น
datatype identifierName;แบบที่ 2: ประกาศตัวแปรตัวเดียว โดยระบุค่าเริ่มต้น
datatype identifierName = initialValue;แบบที่ 3: ประกาศตัวแปรหลายตัวที่เป็นชนิดขัอมูลแบบเดียวกัน โดยอาจจะกำหนดค่าเริ่มต้นให้กับตัวแปรบางตัว หรือไม่กำหนด หรือกำหนดทั้งหมดก็ได้
datatype identifierName1, identifierName2 = initialValue2, identifierName3;
โดย dataType คือชนิดข้อมูล ส่วน identiferName คือ ชื่อตัวแปร และ initialValue คือ ค่าเริ่มต้นของตัวแปร ซึ่งถ้าเราประกาศตัวแปรโดยไม่กำหนดค่าเริ่มต้น เราจะไม่ทราบว่าตัวแปรที่ประกาศขึ้นมานี้เก็บค่าอะไรอยู่ อาจจะเป็นค่าที่ค้างอยู่เดิมในหน่วยความจำ ซึ่งอาจทำให้การคำนวณในโปรแกรมของเราผิดพลาดได้
สำหรับชนิดข้อมูลในภาษา C มีดังนี้
ชนิดข้อมูล หลัก มี 3 ประเภท ได้แก่
- ข้อมูลจำนวนเต็ม (Integer) แบ่งเป็น 3 ประเภทย่อยตามขนาดของหน่วยความจำที่ใช้ คือ
- short int หรือ short เป็นข้อมูลจำนวนเต็มขนาดสั้น
- int เป็นข้อมูลจำนวนเต็มขนาดปกติ
- long int หรือ long เป็นข้อมูลจำนวนเต็มขนาดยาว
- ข้อมูลจำนวนจริงมีทศนิยม (Floating-point) แบ่งเป็น 3 ประเภทย่อยตามขนาดของหน่วยความจำที่ใช้ คือ
- float เป็นข้อมูลจำนวนจริงขนาดปกติ
- double เป็นข้อมูลจำนวนจริงขนาดยาว หรือ ความละเอียด 2 เท่า (double precision)
- long double เป็นข้อมูลจำนวนจริงขนาดยาวกว่า double
- ข้อมูลอักขระ (Character) เป็นข้อมูลชนิดอักขระ ซึ่งในภาษาซีจะเก็บข้อมูลโดยเข้ารหัสตัวอักขระเป็นเลขจำนวนเต็มเพื่อเก็บข้อมูล ส่วนการนำไปแสดงเป็นตัวอักขระก็จะถอดรหัสเลขจำนวนเต็มเป็นตัวอักขระ ซึ่งรหัสที่ใช้ในภาษา C และเป็นรหัสที่นิยมใช้มากที่สุดในระบบคอมพิวเตอร์ คือรหัส ASCII ย่อมาจาก (American Standard Code for Information Interchange) ดูตารางแสดงรหัส ASCII ได้ที่เว็บ http://www.asciitable.com/
ขนาดของ long >= ขนาดของ int >= ขนาดของ short
ขนาดของ long double >= ขนาดของ double >= ขนาดของ floatรูปด้านล่างนี้แสดงตัวอย่างขนาดของหน่วยความจำที่ใช้สำหรับแต่ละชนิดข้อมูล ในระบบ c9.io
หมายเหตุ นอกจากการแบ่งชนิดข้อมูลตามขนาดของหน่วยความจำที่ใช้แล้ว เรายังสามารถแบ่งย่อยข้อมูลจำนวนเต็มตามลักษณะการคิดเครื่องหมายได้อีกด้วย คือ
- แบบคิดเครื่องหมาย (signed) เป็นข้อมูลที่มีค่าเป็นบวกหรือลบได้
- แบบไม่คิดเครื่องหมาย (unsigned) เป็นข้อมูลที่เป็นบวกเพียงอย่างเดียว
โดยปกติชนิดข้อมูลทั้งหมดที่กล่าวมาก่อนหน้านี้จะเป็นแบบคิดเครื่องหมาย แต่เราสามารถประกาศตัวแปรให้เป็นแบบไม่คิดเครื่องหมายได้โดยเติมคำว่า unsigned ไปข้างหน้า เช่น unsigned int aa; คือ การประกาศตัวแปรชื่อ aa เป็นข้อมูลจำนวนเต็มแบบไม่คิดเครื่องหมาย ทั้งนี้ int และ unsigned int จะใช้พื้นที่ในการเก็บข้อมูลเท่ากัน แต่ int จะเก็บค่าได้ตั้งแต่ -2,147,483,648 ถึง 2,147,483,647 ในขณะที่ unsigned int จะเก็บค่าได้ตั้งแต่ 0 ถึง 4,294,967,295
การแสดงค่าตัวแปรออกทางจอภาพโดยใช้คำสั่ง printf()
printf() สามารถใช้แสดงค่าตัวแปรออกทางจอภาพได้ โดยใช้รูปแบบดังต่อไปนี้printf("Message with %specifier", variable);โดย variable คือตัวแปรที่ต้องการแสดงค่า ส่วน specifier คือ สิ่งที่ใช้ระบุชนิดหรือรูปแบบข้อมูลที่จะแสดง ซึ่ง specifier ที่ควรรู้เบื้องต้นมีดังนี้
- %c จะแสดงตัวอักขระ 1 ตัว
- %d หรือ %i จะแสดงค่าจำนวนเต็มเลขฐานสิบแบบคิดเครื่องหมาย
- %e หรือ %E จะแสดงเลขจำนวนจริง float หรือ doubleในรูปแบบเลขยกกำลัง เช่น \[2.56\times10^5\] จะแสดงเป็น 2.56e5 (ถ้าใช้ %E จะเป็น E ตัวใหญ่แทน e)
- %f จะแสดงเลขจำนวนจริง float หรือ double ในรูปแบบเลขทศนิยม
- %u จะแสดงเลขจำนวนเต็มแบบไม่คิดเครื่องหมาย
นอกจากนี้เราสามารถใช้ตัว l สำหรับการระบุข้อมูลชนิด long ร่วมกับ specifier ตัวอื่นได้ เช่น
- %ld จะแสดงเลขจำนวนเต็มแบบยาวและคิดเครื่องหมาย (long int)
- %lu จะแสดงเลขจำนวนเต็มแบบยาวไม่คิดเครื่องหมาย (unsigned long int)
ในกรณีที่ต้องการแสดงค่าตัวแปรมากกว่า 1 ตัวในข้อความเดียวกันก็ทำได้ ตัวอย่างเช่น
printf("Var1 = %d Var2 = %d Var3 = %d", a, b, c);โปรแกรมจะแสดงข้อความโดยนำค่าจากตัวแปร a, b, และ c ไปใส่แทน %d ในข้อความตามลำดับ
Source code listing
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | /*---------------------------------------------------- Program: VariableDemo Objectives: (1) Variables and declaration (2) Displaying variables by using printf() Created by Panupong Sornkhom email: panupongs@nu.ac.th -----------------------------------------------------*/ #include <stdio.h> int main() { /*---------------------------------------------- เมื่อคอมพิวเตอร์ต้องเก็บข้อมูล เช่น รับข้อมูลจากผู้ใช้ หรือเก็บผลลัพธ์จากการคำนวณ คอมพิวเตอร์จะเก็บข้อมูลไว้ใน หน่วยความจำ ซึ่งการเข้าถึงหน่วยความจำนั้น ในการเขียนโปรแกรมจะทำผ่านตัวแปร โดยจะต้องทำการ ประกาศตัวแปร ซึ่งรูปแบบของคำสั่งในการประกาศตัวแปร คือ dataType variableName; หรือ dataType variableName = initialValue; เมื่อ dataType คือ ชนิดข้อมูล variableName คือ ชื่อตัวแปร กรณีมีตัวแปรหลายตัว ระบุโดยคั่นด้วยเครื่องหมาย , -------------------------------------------------*/ /* ประกาศตัวแปรจำนวนเต็ม ชื่อ iVariable1*/ int iVariable1 = 5; /* ประกาศตัวแปรจำนวนจริง ชื่อ fVariable2 */ float fVariable2 = 3.14; /* ประกาศตัวแปรอักขระ ชื่อ cVariable3 */ char cVariable3 = 'A'; /*---------------------------------------------- การแสดงค่าตัวแปรโดยใช้ printf() ทำได้โดย ระบุ Format Specifiers โดยใช้เครื่องหมาย % ภายในเครื่องหมายคำพูดที่จะแสดงข้อความ แล้วระบุตัวแปรที่ต้องการแสดงค่า ตัวอย่างเช่น printf("A = %d",var); คือ แสดงข้อความ A = ค่่าของตัวแปรvar หากมีตัวแปรที่ต้องการแสดงค่าหลายตัว ให้ระบุโดยคั่นด้วย , ----------------------------------------------*/ printf("Answer = %d\n",iVariable1); printf("Answer2 = %f\n",fVariable2); printf("Answer3 = %c\n",cVariable3); printf("FinalAnswer = %f\n", iVariable1+fVariable2); printf("%d * %f = %f\n",iVariable1,fVariable2, iVariable1*fVariable2); return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | /*---------------------------------------- Program: Datatypes in C program Objectives: (1) Show various datatypes and size of memory required (2) Show format identifiers related to datatypes (3) Show the limitation value of each datatype Created by Panupong Sornkhom email: panupongs@nu.ac.th ----------------------------------------*/ #include <stdio.h> #include <limits.h> // ใช้กับค่าคงที่ เช่น INT_MAX #include <float.h> // ใช้กับค่าคงที่ที่เกี่ยวกับกับ floating-point number int main() { // declare character variable c char c = 'x'; // declare short variable s short s = 12345; // declare integer variable i int i = 1234567890; // declare long variable l long l = 1234567890123; // declare floating-point vairable f float f = 12.9876543210; // declare double precision variable d double d = 12.9876543210; // declare long double variable ld long double ld = 12.9876543210L; /* * ใช้ sizeof เพื่อดูขนาดของหน่วยความจำ * เป็นจำนวน byte ที่ใช้ในแต่ละตัวแปร */ printf("Size of char = %lu byte\n",sizeof c); printf("Size of short = %lu bytes\n",sizeof s); printf("Size of int = %lu bytes\n",sizeof i); printf("Size of long = %lu bytes\n",sizeof l); printf("Size of float = %lu bytes\n",sizeof f); printf("Size of double = %lu bytes\n",sizeof d); printf("Size of long double = %lu bytes\n",sizeof ld); /* * แสดงความแตกต่างระหว่าง signed กับ unsigned * โดยแสดงค่าคงที่ที่ประกาศไว้ในไฟล์ limits.h */ printf("Minimum value of type (signed) int = %d\n",INT_MIN); printf("Maximum value of type (signed) int = %d\n",INT_MAX); printf("Minimum value of type unsigned int = %d\n",0); printf("Maximum value of type unsigned int = %u\n",UINT_MAX); /* * แสดงค่าของตัวแปรชนิดต่าง ๆ ด้วย printf */ printf("c = %c\n",c); printf("s = %d\n",s); printf("i = %d\n",i); printf("l = %ld\n",l); printf("f = %e\n",f); printf("f = %f\n",f); printf("f = %.6f\n",f); printf("d = %e\n",d); printf("d = %f\n",d); printf("d = %.15f\n",f); printf("ld = %Le\n",ld); printf("ld = %Lf\n",ld); printf("ld = %.18Lf\n",ld); printf("Number of digits in float = %d\n",FLT_DIG); printf("Number of digits in double = %d\n",DBL_DIG); printf("Number of digits in long double = %d\n",LDBL_DIG); return 0; } |
No comments:
Post a Comment