ใบความรู้ที่ 5
TRANSCRIPT
สอการวชาการเขยนโปรแกรมภาษาซ : วาทรอยตรยศพล มาส โรงเรยนตาพระยา
ใบความรท 5 - 6
เรอง ตวแปรกบชนดของขอมล
ตวแปรในภาษาซ
ตวแปร (Variable) คอ การจองพนทในหนวยความจ าของคอมพวเตอรส าหรบเกบขอมลทตองใช
ในการท างานของโปรแกรม โดยมการตงชอเรยกหนวยความจ าในต าแหนงนนดวย เพอความสะดวกในการ
เรยกใชขอมล ถาจะใชขอมลใดกใหเรยกผานชอของตวแปรทเกบเอาไว
ชนดของขอมล
ภาษาซเปนอกภาษาหนงทมชนดของขอมลใหใชงานหลายอยางดวยกน ซงชนดของขอมลแตละ
อยางมขนาดเนอททใชในหนวยความจ าทแตกตางกน และเนองจากการทมขนาดทแตกตางกนไป ดงน นใน
การเลอกใชงานประเภทขอมลกควรจะค านงถงความจ าเปนในการใชงานดวย ส าหรบประเภทของขอมลม
ดงนคอ
ชนด ขนาดความ
กวาง ชวงของคา การใชงาน
Char 8 บต ASCII character (-128 ถง 127) เกบขอมลชนดอกขระ
Unsigned char 8 บต 0-255 เกบขอมลอกขระแบบไมคดเครองหมาย
Int 16 บต -32768 ถง 32767 เกบขอมลชนดจ านวนเตม
long 32 บต -2147483648 ถง 2147483649 เกบขอมลชนดจ านวนเตมแบบยาว
Float 32 บต 3.4E-38 ถง 3.4E+38 หรอ ทศนยม
6 เกบขอมลชนดเลขทศนยม
Double 64 บต 1.7E-308 ถง 1.7E+308 หรอ
ทศนยม 12 เกบขอมลชนดเลขทศนยม
Unsigned int 16 บต 0 ถง 65535 เกบขอมลชนดจ านวนเตม ไมคด
เครองหมาย
Unsigned long 32 บต 0 ถง 4294967296 เกบขอมลชนดจ านวนเตมแบบยาว ไมคด
เครองหมาย
สอการวชาการเขยนโปรแกรมภาษาซ : วาทรอยตรยศพล มาส โรงเรยนตาพระยา รปแบบในการประกาศตวแปรในภาษา C
การสรางตวแปรขนมาใชงานจะเรยกวา การประกาศตวแปร (Variable Declaration) โดยเขยนค าสง
ใหถกตองตามแบบการประกาศตวแปร แสดงดงน
type name;
type : ชนดของตวแปร
name : ชอของตวแปร ซงตองตงใหถกตองตามหลกของภาษา C
การเขยนค าสงเพอประกาศตวแปร สวนใหญแลวจะเขยนไวในสวนหวของโปรแกรมกอนฟงกชน
main ซงการเขยนไวในต าแหนงดงกลาว จะท าใหตวแปรเหลานนสามารถเรยกใชจากทใดกไดในโปรแกรม
ดงตวอยาง
#include <stdio.h>
int num; สรางตวแปรชอ num เพอเกบขอมลชนดจ านวนเตม
float y; สรางตวแปรชอ y เพอเกบขอมลชนดเลขทศนยม
char n; สรางตวแปรชอ n เพอเกบขอมลชนดตวอกขระ
void main()
{
printf("Enter number : ")
scanf("%d",&num);
printf("Enter name : ");
scanf("%f",&n);
printf("Thank you");
}
สอการวชาการเขยนโปรแกรมภาษาซ : วาทรอยตรยศพล มาส โรงเรยนตาพระยา หลกการตงชอตวแปร
ในการประกาศสรางตวแปรตองมการก าหนดชอ ซงชอนนไมใชวาจะตงใหสอความหมายถงขอมลทเกบอยางเดยว โดยไมค านงถงอยางอน เนองจากภาษา C มขอก าหนดในการตงชอตวแปรเอาไว แลวถาตงชอผดหลกการเหลาน โปรแกรมจะไมสามารถท างานได หลกการตงชอตวแปรในภาษา C แสดงไวดงน
1. ตองขนตนดวยตวอกษร A-Z หรอ a-z หรอเครองหมาย _(Underscore) เทานน
2. ภายในชอตวแปรสามารถใชตวอกษร A-Z หรอ a-z หรอตวเลข0-9 หรอเครองหมาย _
3. ภายในชอหามเวนชองวาง หรอใชสญลกษณนอกเหนอจากขอ 2
4. ตวอกษรเลขหรอใหญมความหมายแตกตางกน
5. หามตงชอซ ากบค าสงวน (Reserved Word) ดงน
auto default float register struct volatile break
do far return switch while case double
goto short typedef char else if signed
union const enum int sizeof unsigned continue
extern long static void
ตวอยางการตงชอตวแปรในภาษา C ทงทถกตองและไมถกตองตามหลกการ แสดงดงน
bath_room ถกตอง
n-sync ผดหลกการ เนองจากมเครองหมาย - ปรากฏในชอ
108dots ผดหลกการ เนองจากขนตนดวยตวเลข
Year# ผดหลกการ เนองจากมเครองหมาย # อยในชอ
_good ถกตอง
goto ผดหลกการ เนองจากเปนค าสงวน
work ถกตอง
break ผดหลกการ เนองจากเปนค าสงวน
สอการวชาการเขยนโปรแกรมภาษาซ : วาทรอยตรยศพล มาส โรงเรยนตาพระยา ตวแปรส าหรบขอความ
ในภาษา C ไมมการก าหนดชนดของตวแปรส าหรบขอความโดยตรง แตจะใชการก าหนดชนดของตวแปรอกขระ (char) รวมกบการก าหนดขนาดแทน และจะเรยกตวแปรส าหรบเกบขอความวา ตวแปรสตรง (string) รปแบบการประกาศตวแปรสตรงแสดงไดดงน
char name[n] = "str";
name ชอของตวแปร
n ขนาดของขอความ หรอจ านวนอกขระในขอความ
str ขอความเรมตนทจะก าหนดใหกบตวแปรซงตองเขยนไวภายในเครองหมาย " "
ตวอยางการประกาศตวแปรส าหรบเกบขอความ แสดงไดดงน
char name[5] = "kwan" ; สรางตวแปร name ส าหรบเกบ ขอความ kwan ซงม 4 ตวอกษร ดงนน name
ตองมขนาด 5
char year[5] = "2549"; สรางตวแปร year ส าหรบเกบ ขอความ 2549 ซงม 4 ตวอกษร ดงนน year ตองม
ขนาด 5
char product_id[4] = "A01"; สรางตวแปร product_id ส าหรบเกบ ขอความ A01 ซงม 3 ตวอกษร ดงนน
product_id ตองมขนาด 4
ขอมลคาคงท (Literal)
คาคงทเปนขอมลทมคาคงทและถกเขยนบรรจลงในซอรสโคดของ เพอจดประสงคหลายๆอยาง คาคงทสวนใหญจะสอดคลองกบชนดขอมล คอ
คาคงทชนดตวเลขจ านวนเตม ใชส าหรบก าหนดคาเลขจ านวนเตม เชน 1 46 หรอ 7048 เปนตน ซงถอเปนขอมลตวเลขฐานสบ ส าหรบการก าหนดคาตวเลขจ านวนเตมในภาษาจาวาสามารถก าหนดไดหลายฐานตวเลขนอกเหนอจากฐานสบเมอน าหนาดวยเลข 0 และตามหลงดวยเลข 0 ถง 7 หมายถงเลขฐานแปด เชน 024 มคาเทากบ 248 หรอ 30 ในฐานสบ เมอน าหนาดวยเลข 0x หรอ 0X และตามหลงดวยเลข 0 ถง 9 หรออกษร a ถง z หรออกษร A ถง Z หมายถงเลขฐานสบหกเชน 0x1D หรอ 0X1d มคาเทากบ 1D16 หรอ 29 ในฐานสบ
สอการวชาการเขยนโปรแกรมภาษาซ : วาทรอยตรยศพล มาส โรงเรยนตาพระยา
คาคงทชนดตวเลขทศนยม ใชส าหรบก าหนดคาเลขจ านวนทศนยม เชน 12.4, 8.0, 9.33333 หรอ 24E5 เปนตน ในบางกรณคาคงทสามารถระบขนาดพนทในการบนทกคาได 2 แบบคอ เมอตองการระบพนทเปนชนด float ใหใชตวอกษร F หลงตวเลข เชน 3.0F ท าใหมพนทในการเกบเลข 32 บต หรอเมอตองการตองการระบพนทเปนชนด double ใหใชตวอกษร D หลงตวเลข เชน 3.0D ท าใหมพนทในการเกบเลข 64 บต ดงนนถงแมวา 3.0F และ 3.0D จะมคาเทากน แตกมพนทในการบนทกไมเทากน (กรณทไมระบ F หรอ D คาคงทนนถอเสมอนวาเปน D)
คาคงทชนดตวอกษร ใชส าหรบก าหนดคาตวอกษร หรอพยญชนะหนงตว ซงการก าหนดตองอยในสญลกษณหยาดฝน(Single Quote) เชน ตวเลข '4' ตวอกษร 'A' ตวเลข '9' หรอตวอกษร '+' เปนตน
คาคงทชนดขอความ ใชส าหรบก าหนดคากลมตวอกษร ซงการก าหนดตองอยในส ญลกษณฟนหน(Double Quote) เชน "Java", "Hello! World", "How do you feel today?" เปนตน
คาคงทชนดตรรกะ ใชส าหรบก าหนดคาทางตรรกะ เมอตองการก าหนดคาความเปนจรงใชคยเวรด true หรอเมอตองการก าหนดคาความเปนเทจใหใชคยเวรด false