340 likes | 517 Views
Component of C. รายวิชา ง 40102 หลักการแก้ปัญหาและการโปรแกรม. ชุดอักขระในภาษาซี. แบ่งหมวดหมู่ของตัวอักขระออกเป็น 3 ชนิดหลักๆ คือ ตัวอักษร ตัวเลข และตัวอักขระ “ _ ” (underscore) ตัวอักขระพิเศษอื่น (Special Characters) ตัวดำเนินการ เครื่องหมายวรรคตอน ฯลฯ
E N D
Component of C รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
ชุดอักขระในภาษาซี • แบ่งหมวดหมู่ของตัวอักขระออกเป็น 3 ชนิดหลักๆ คือ • ตัวอักษร ตัวเลข และตัวอักขระ “ _ ” (underscore) • ตัวอักขระพิเศษอื่น (Special Characters) • ตัวดำเนินการ เครื่องหมายวรรคตอน ฯลฯ • ! " # % & ( ) ‘ * + , - . / : ; < = > ? [ \ ] ^ { | } ~ • ตัวอักขระ White Space • ไม่สามารถมองเห็นด้วยตาใช้เป็นตัวแบ่งแยกเช่น ช่องว่าง, ขึ้นบรรทัดใหม่, ขึ้นหน้าใหม่ฯลฯ
รหัสควบคุม (Control code) • รหัสที่ใช้แทนอักขระพิเศษอื่น และอักขระ White Space • มักใช้ร่วมกับคำสั่งที่ใช้ในการรับและแสดงผลข้อมูล เช่น คำสั่ง printf , cprintf , scanf , cscanf ฯลฯ • มีอักขระแบคสแลช ( \ ) นำหน้า แล้วตามด้วยตัวอักษรหรือตัวเลข • แต่ละรหัสใช้เพื่อเป็นตัวแทนของอักขระ white space หรือรหัสพิเศษอื่นจำนวนหนึ่งอักขระ
รหัสควบคุม (Control code) \t คือ horizontal tab \n คือ new line \r คือ carriage return \b คือ backspace \a คือ bell \” คือ ” \0 คือ null character \’ คือ ’ \? คือ ? \\ คือ \ ฯลฯ
ตัวแปร • ชื่อสำหรับอ้างอิงถึงพื้นที่ในหน่วยความจำ , ชื่อที่ใช้ในการอ้างถึงข้อมูล • ตัวแปรในภาษาซีมีหลายชนิดและหลายขนาด เพื่อให้เราสามารถเลือกใช้ชนิดของตัวแปรได้ตรงกับชนิดของข้อมูล
การประกาศตัวแปร (Variable Declaration) <Type> <variable-list> ; Type คือชนิดของตัวแปร (ชนิดของข้อมูล) variable-list คือ ชื่อของตัวแปรที่ประกาศ ถ้ามีมากกว่า หนึ่งตัวจะต้องใช้คอมม่า (,) เป็นตัวแยก Ex. int a ; int lower,upper ; short int man,ratio; double point; char ch,c,name; float rate,ratio ;
ชนิดของข้อมูล (Data type) • ชนิดของข้อมูลพื้นฐานในภาษาซีมีหลายชนิดเช่น • char : ตัวอักษร • int : จำนวนเต็ม • unsigned int : จำนวนเต็มไม่มีเครื่องหมาย • long ,long int : จำนวนเต็ม ขนาดเป็น 2 เท่าของ int • float : จำนวนจริง • double : จำนวนจริง ขนาดเป็น 2 เท่าของ float • long double : จำนวนจริง มีขนาดยาวเป็นพิเศษ
ขนาดและขอบเขตของตัวแปร (Turbo C)
หลักการตั้งชื่อตัวแปรหลักการตั้งชื่อตัวแปร • ตัวอักขระตัวแรกต้องเป็นตัวอักษรเท่านั้น ( underscore ‘_’ เป็นอักษรตัวหนึ่งแต่จะไม่นิยมใช้เป็นตัวแรก) • ตัวอักขระตัวถัดไปอาจตามด้วยตัวอักษร ตัวเลข หรือ ‘_’ • มีความยาวเท่าไหร่ก็ได้ แต่จะรับรู้แค่ 31 ตัวแรกเท่านั้น • ชื่อตัวแปรที่เป็นอักษรตัวเล็กล้วน ตัวอักษรตัวใหญ่ล้วน หรือตัวอักษรเล็กปนตัวอักษรใหญ่ จะถือว่าเป็นคนละ ตัวแปรกัน (Case sensitive) เช่น DATA, data, Data • ห้ามใช้คำสงวนมาเป็นชื่อ ยกเว้นแต่จะประกอบเป็นส่วนหนึ่งของชื่อ
คำสงวน • คำที่ภาษาซีสงวนไว้เพื่อเป็นคำสั่งพื้นฐานหรือเป็นสัญลักษณ์ในการประกาศค่าต่างๆ • ตัวแปรเช่น unsigned, short, int, long, float, double • คำสั่งพื้นฐาน เช่น void, return, for, goto, if, else, do, while, switch ฯลฯ ข้อสังเกต เมื่อเราพิมพ์คำสงวน standard turbo C จะแสดงเป็นตัวอักษรสีขาว
ตัวแปรที่ดี • นอกจากหลักการตั้งชื่อเบื้องต้นแล้ว สิ่งที่สำคัญอีกอย่างในการสร้างตัวแปรคือ • ตัวแปรควรเป็นชื่อที่สื่อความหมาย เช่น ตัวแปรที่ใช้เก็บค่าอุณหภูมิ อาจตั้งชื่อเป็น degC (degree in Celsius) , degF (degree in Fahrenheit) ฯลฯ • ตัวแปรควรมีชนิดข้อมูลที่เหมาะสม • ข้อมูลที่อาจมีจุดทศนิยม -> float , double ฯลฯ • ข้อมูลที่ไม่ต้องมีจุดทศนิยม -> int, long ฯลฯ
การกำหนดค่าให้กับตัวแปรการกำหนดค่าให้กับตัวแปร <var1>[=var2]….=<expression> var1, var2 คือ ชื่อตัวแปรที่จะถูกกำหนดค่า expression คือ นิพจน์ ซึ่งอาจเป็นตัวแปร ค่าคงที่ หรือเป็นการดำเนินการระหว่างตัวแปร =คือ ตัวดำเนินการให้นำค่านิพจน์ด้านขวาของตัวดำเนินการ “=” ไปกำหนดค่าให้กับตัวแปรด้านซ้ายของตัวดำเนินการ “=”
ตัวอย่างการประกาศและกำหนดค่าให้ตัวแปรตัวอย่างการประกาศและกำหนดค่าให้ตัวแปร voidmain() { int val1, val2, val3; val1 = val2 = val3 = 1; } void main() { int begin; begin = 0; } voidmain() { float temperature; temperature = 37.5; } voidmain() { char ch1, ch2; ch1 = ‘A’; ch2 = ‘X’; }
ตัวอย่างการประกาศและกำหนดค่าให้ตัวแปรตัวอย่างการประกาศและกำหนดค่าให้ตัวแปร #include <stdio.h> void main() { int var1 , var2 , var3; var1 = 3; var2 = 5; printf(“var1 = %d\n” , var1); printf(“var2 = %d\n” , var2); var3 = var1 + var2; printf(“var1 + var2 = %d\n” ,var3); printf(“var1 + var2 = %d\n” , var1+var2); }
ex1.cpp เขียนโปรแกรมโดยทำตามขั้นตอนต่อไปนี้ • ประกาศตัวแปรแบบ float ขึ้นมา 3 ตัว ตั้งชื่อตัวแปรเป็นอะไรก็ได้ • กำหนดให้ตัวแปรตัวแรกมีค่าเท่ากับ 10.5 • กำหนดให้ตัวแปรตัวที่ 2 มีค่าเท่ากับ 5.8 • กำหนดให้ตัวแปรตัวที่ 3 มีค่าเท่ากับผลคูณของ 2 ตัวแปรแรก • พิมพ์ค่าที่จัดเก็บในตัวแปรทั้ง 3 ตัวออกทางหน้าจอ [ ตัวแปรชนิด float ใช้ format เป็น %f ]
ค่าคงที่ (constant) • คือ ข้อมูลหรือค่าที่ไม่สามารถเปลี่ยนแปลงได้ แยกเป็น 2 ชนิด • ค่าคงที่ที่ใช้ในการคำนวณ • ค่าคงที่ที่ไม่ใช่ในการคำนวณ (string)
ค่าคงที่ที่ใช้ในการคำนวณค่าคงที่ที่ใช้ในการคำนวณ • ค่าคงที่จำนวนเต็ม (Integer Constants)ได้แก่ค่าคงที่ที่เป็นจำนวนเต็มไม่มีจุดทศนิยม เช่น 568, -96 , + 645 • ค่าคงที่ที่มีจุดทศนิยม (Floating-point Constants) • ค่าคงที่ที่มีจุดทศนิยมธรรมดา เช่น 20.65 , -35.02 , 000.24 • ค่าคงที่ที่มีจุดทศนิยมในรูปแบบวิทยาศาสตร์ (Science Notation ) เช่น 1E+04 , 1.5E-06
ค่าคงที่ที่ใช้ในการคำนวณค่าคงที่ที่ใช้ในการคำนวณ • ค่าคงที่ที่เป็นอักขระ (Character Constants) ได้แก่ ค่าคงที่ที่เป็นตัวเลข หรือตัวอักษร หรืออักขระที่เป็นรหัสควบคุม มีขนาด 1 ไบต์ และเขียนอยู่ภายใต้อักขระ Apostrophe เช่น ‘A’ • ค่าคงที่ในระบบเลขฐานแปด (Octal constants) เช่น 0250 มีค่าเท่ากับ (250)8 • ค่าคงที่ในระบบเลขฐานสิบหก (Hexadecimal constants) เช่น 0x35F มีค่าเท่ากับ (35F)16
ค่าคงที่ที่ไม่ใช้ในการคำนวณ (String constants) • ค่าคงที่ที่ไม่สามารถนำไปคำนวณได้ • อาจประกอบด้วย ตัวเลข ตัวอักษร หรืออักขระพิเศษอื่นที่ต้องเขียนภายใต้อักขระคำพูด • ตัวอักขระภายในเครื่องหมายคำพูดจะถูกบันทึกในหน่วยความจำต่อเนื่องกันไป เช่น “Hello”, “2”, “This is C programming”
สัญลักษณ์คงที่ (Symbolic constants) • ค่าคงที่บางค่าอาจถูกนำไปใช้บ่อยในโปรแกรม ซึ่งเราสามารถเขียนแทนค่าคงที่ค่านั้นด้วยสัญลักษณ์เพื่อช่วยในการสื่อความหมายได้ • ในการกำหนดสัญลักษณ์จะใช้คำสั่ง #define ซึ่งต้องประกาศอยู่นอกเหนือฟังก์ชัน main()#define PI 3.14159 #define TXT “Hello World” • PI และ TXT ไม่ใช่ตัวแปรและไม่สามารถเปลี่ยนแปลงค่าได้
ตัวอย่างการใช้ค่าคงที่ตัวอย่างการใช้ค่าคงที่ #include <stdio.h> #define PI 3.14159 void main() { int area , r = 5; area = PI * r * r ; printf(“area = %d\n”,area); } #include <stdio.h> #define TXT “Hello World” void main() { printf(“%s\n”,TXT); }
การแสดงผลข้อมูล • การแสดงผลข้อมูลออกทางจอภาพในภาษาซี ส่วนใหญ่จะเรียกใช้งานฟังก์ชัน printf (อยู่ใน stdio.h) รูปแบบ printf (“format”, argument1, argument2, …); formatคือ รูปแบบการแสดงผลที่ถูกระบุเพื่อกำหนดรูปแบบของ ผลลัพธ์ที่ต้องการ ซึ่งจะประกอบด้วย • ข้อความที่ต้องการแสดงผลโดยตรง • format ของการพิมพ์ข้อมูล (อักษรที่มีเครื่องหมาย % นำหน้า) argument คือ ข้อมูล ซึ่งอาจเป็นค่าคงที่ ตัวแปร หรือนิพจน์ที่ต้องการจะพิมพ์ค่า ซึ่งจะพิมพ์ตามรูปแบบที่กำหนดไว้ในส่วน format
ตัวอย่างคำสั่งแสดงผลข้อมูลตัวอย่างคำสั่งแสดงผลข้อมูล printf(“Hello World”); printf(“%d got score %d .\n”, ID, mark); printf(“The value of PI is %f\n”, pi); printf(“This computer cost %c%d”,‘$’, cost);
การกำหนด format ใน printf • โดยปกติ เราจะใช้ format ในการกำหนดลักษณะการแสดงผลของตัวแปร หรือนิพจน์ต่างๆ • ซึ่งต้องกำหนดให้ถูกกับชนิดของตัวแปรด้วย • int, unsigned int - กำหนด format เป็น %d, %o, %x • long - กำหนด format เป็น %ld, %lo, %lx, • float, double - กำหนด format เป็น %f, %e • char – กำหนด format เป็น %c
การกำหนด format ใน printf • ให้ทดลองพิมพ์โปรแกรมดังนี้ void main() { int i = 16; long l = 16; float f = 12.345; char c = ‘a’; printf(“%d\t %o\t %x\n” , i , i , i ); printf(“%ld\t %lo\t %lx\n” , l , l , l ); printf(“%f\t %e\n” , f , f); printf(“%c\n” , c ); }
การกำหนด format ใน printf %d : พิมพ์ int ด้วยตัวเลขฐานสิบ %o : พิมพ์ int ด้วยตัวเลขฐานแปด %x: พิมพ์ int ด้วยตัวเลขฐานสิบหก %ld, %lo , %lx : พิมพ์ long (รูปแบบตามหลังเหมือน int) %f : พิมพ์ float, double แบบจุดทศนิยม (หกตำแหน่ง) %e : พิมพ์ float, double แบบวิทยาศาสตร์ เช่น 1.23e+23 %c : พิมพ์ char %s : พิมพ์ข้อความเช่น “Hello”
คำสั่งเพิ่มเติมของการจัดรูปแบบการแสดงผลคำสั่งเพิ่มเติมของการจัดรูปแบบการแสดงผล • ใช้ร่วมกับ format ต่างๆ ที่นิยมใช้บ่อย คือ • เครื่องหมาย + • ใช้ร่วมกับการแสดงผลข้อมูลที่เป็นตัวเลข • พิมพ์เครื่องหมายบวกหน้าข้อมูลถ้าข้อมูลมีค่าเป็นบวก ตัวอย่างfloat w=15.2 , x=-13.3; printf (“w=%f x=%f\n” , w , x); printf (“w=%+f x=%+f\n” , w , x); ผลลัพธ์w=15.200000 x=-13.300000 w=+15.200000 x=-13.300000
คำสั่งเพิ่มเติมของการจัดรูปแบบการแสดงผลคำสั่งเพิ่มเติมของการจัดรูปแบบการแสดงผล • ตัวเลข • ใช้กำหนดจำนวนช่องที่ใช้ในการแสดงผล • ถ้าจำนวนข้อมูลมีน้อยกว่าช่อง จะแสดงผลโดยจัดชิดด้านขวา • ถ้าจำนวนข้อมูลมีมากกว่าช่อง จะแสดงผลโดยไม่สนใจจำนวนช่อง ตัวอย่าง float w=15.2 ; printf (“%f|%5f|%9f|%10f|%12f|”,w,w,w,w,w); ผลลัพธ์ 15.200000|15.200000|15.200000| 15.200000| 15.200000|
คำสั่งเพิ่มเติมของการจัดรูปแบบการแสดงผลคำสั่งเพิ่มเติมของการจัดรูปแบบการแสดงผล • จุดทศนิยมตามด้วยตัวเลข (.Number) • ใช้กำหนดจำนวนตัวเลขหลังจุดทศนิยมที่จะแสดงผลโดยจะแสดงตัวเลขหลังจุดทศนิยมเป็นจำนวนตำแหน่งเท่ากับ Number • นิยมใช้ตามหลังคำสั่งตัวเลข ตัวอย่างfloat w=32.5762 ; printf (“%f|%.f|%.2f|%7.2f|”,w,w,w,w); ผลลัพธ์ 32.576200|32|32.58| 32.58|
คำสั่งเพิ่มเติมของการจัดรูปแบบการแสดงผลคำสั่งเพิ่มเติมของการจัดรูปแบบการแสดงผล • เครื่องหมาย - • ให้พิมพ์ข้อมูลชิดขอบซ้ายของฟิลด์ (ปกติข้อมูลจะชิดขวา) • มักใช้ร่วมกับคำสั่งจัดรูปแบบแสดงผลแบบอื่นๆ ตัวอย่างfloat w=32.5762 ; printf (“%f|%8.f|%+8.2f|\n”,w,w,w); printf (“%f|%-8.f|%-+8.2f|\n”,w,w,w); ผลลัพธ์ 32.576200| 32| +32.58| 32.576200|32 |+32.58 |
การรับข้อมูล • การรับข้อมูลจากคีย์บอร์ดในภาษาซีส่วนใหญ่จะเรียกใช้งานฟังก์ชัน scanf ซึ่งเป็นฟังก์ชันมาตรฐานที่บรรจุอยู่ใน header file ที่ชื่อ stdio.h เช่นเดียวกับฟังก์ชัน printf รูปแบบ scanf (“format”, argument1, argument2, …); formatคือ รูปแบบของข้อมูล(argument)ที่ใช้รับข้อมูลที่ผู้ใช้ป้อนเข้ามา argument คือ ตำแหน่ง (Address) ของตัวแปรที่ใช้รับข้อมูลที่ผู้ใช้ป้อนเข้ามา • สามารถระบุตำแหน่งของตัวแปรได้โดยการเพิ่มเครื่องหมาย & ไว้หน้าตัวแปรนั้น • ตัวแปรต้องเป็นชนิดเดียวกับที่กำหนดไว้ใน format
ตัวอย่าง #include <stdio.h> #include <conio.h> void main() { clrscr(); int integer1, integer2, sum; printf( "Enter first integer : " ); scanf( "%d", &integer1 ); printf( "Enter second integer : " ); scanf( "%d", &integer2 ); sum = integer1 + integer2; printf( "Sum is %d\n", sum ); }
ex2.cpp ให้เขียนโปรแกรมคำนวณหาพื้นที่, และความยาวเส้นรอบวงของวงกลม และแสดงผลลัพธ์ที่ได้จากการคำนวณออกทางหน้าจอ ให้ใช้ค่าของ pi = 3.14159
ex3.cpp ในการแปลงค่าอุณหภูมิระหว่าง องศาเซลเซียส กับ องศาฟาเรนไฮต์ สามารถหาได้จากสูตรว่า C = ( 5 / 9 ) * ( F – 32 ) เมื่อ C คืออุณหภูมิมีหน่วยเป็นองศาเซลเซียส F คืออุณหภูมิมีหน่วยเป็นองศาฟาเรนไฮต์ จงเขียนโปรแกรมเพื่อรับข้อมูลอุณหภูมิจากผู้ใช้ โดยมีหน่วยเป็นองศาฟาเรนไฮต์ แล้วแปลงเป็นองศาเซลเซียส และแสดงผลลัพธ์ที่ได้ออกทางหน้าจอ