Component of C รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม ชุดอักขระในภาษาซี แบ่ งหมวดหมู่ของตัวอักขระออกเป็ น 3 ชนิดหลักๆ คือ ตัวอักษร ตัวเลข และตัวอักขระ “ _ ” (underscore) ตัวอักขระพิเศษอืน ่ (Special Characters) ตัวดาเนินการ.
Download
Report
Transcript Component of C รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม ชุดอักขระในภาษาซี แบ่ งหมวดหมู่ของตัวอักขระออกเป็ น 3 ชนิดหลักๆ คือ ตัวอักษร ตัวเลข และตัวอักขระ “ _ ” (underscore) ตัวอักขระพิเศษอืน ่ (Special Characters) ตัวดาเนินการ.
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
\r คือ carriage return
\a คือ bell
\0 คือ null character
\? คือ ?
ฯลฯ
\n คือ new line
\b คือ backspace
\” คือ ”
\’ คือ ’
\\ คือ \
ตัวแปร
ชื่อสาหรับอ้างอิงถึงพื้นที่ในหน่วยความจา , ชื่อที่ใช้ในการอ้างถึง
ข้อมูล
ตัว แปรในภาษาซี มี ห ลายชนิ ด และหลายขนาด เพื่ อ ให้ เ ราสามารถ
เลือกใช้ชนิดของตัวแปรได้ตรงกับชนิดของข้อมูล
การประกาศตัวแปร (Variable Declaration)
<Type> <variable-list> ;
Type
variable-list
คือ ชนิดของตัวแปร (ชนิดของข้อมูล)
คือ ชื่อของตัวแปรที่ประกาศ ถ้ามีมากกว่า
หนึ่งตัวจะต้องใช้คอมม่า (,) เป็ นตัวแยก
Ex.
int a ;
short int man,ratio;
char ch,c,name;
int lower,upper ;
double point;
float rate,ratio ;
ชนิดของข้อมูล (Data type)
ชนิดของข้อมูลพื้นฐานในภาษาซีมีหลายชนิด เช่น
char : ตัวอักษร
int : จานวนเต็ม
unsigned int : จานวนเต็มไม่มีเครื่ องหมาย
long , long int : จานวนเต็ม ขนาดเป็ น 2 เท่าของ int
float : จานวนจริ ง
double : จานวนจริ ง ขนาดเป็ น 2 เท่าของ float
long double : จานวนจริ ง มีขนาดยาวเป็ นพิเศษ
ขนาดและขอบเขตของตัวแปร (Turbo C)
Type
unsigned char
char
unsigned int
short int
int
unsigned long
long
float
double
long double
Length
8 bits
8 bits
16 bits
16 bits
16 bits
32 bits
32 bits
32 bits
64 bits
80 bits
Range
0 to 255
-128 to 127
0 to 65,535
-32,768 to 32,767
-32,768 to 32,767
0 to 4,294,967,295
-2,147,483,648 to 2,147,483,647
3.4 * (10-38) to 3.4 * (10+38)
1.7 * (10-308) to 1.7 * (10+308)
3.4 * (10-4932) to 1.1 * (10+4932)
หลักการตั้งชื่อตัวแปร
ตัวอักขระตัวแรกต้องเป็ นตัวอักษรเท่านั้น ( 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
=
คือ ชื่อตัวแปรที่จะถูกกาหนดค่า
คือ นิพจน์ ซึ่งอาจเป็ นตัวแปร ค่าคงที่ หรื อเป็ นการ
ดาเนินการระหว่างตัวแปร
คือ ตัวดาเนินการให้นาค่านิพจน์ดา้ นขวาของตัว
ดาเนินการ “=” ไปกาหนดค่าให้กบั ตัวแปรด้านซ้ายของ
ตัวดาเนินการ “=”
ตัวอย่างการประกาศและกาหนดค่าให้ตวั แปร
void main()
{
int begin;
begin = 0;
}
void main()
{
int val1, val2, val3;
val1 = val2 = val3 = 1;
}
void main()
{
char ch1, ch2;
ch1 = ‘A’;
ch2 = ‘X’;
}
void main()
{
float temperature;
temperature = 37.5;
}
ตัวอย่างการประกาศและกาหนดค่าให้ตวั แปร
#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
เขียนโปรแกรมโดยทาตามขั้นตอนต่ อไปนี้
1.
2.
3.
4.
5.
ประกาศตัวแปรแบบ 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 แบบวิทยาศาสตร์ เช่น
%c
%s
1.23e+23
: พิมพ์ char
: พิมพ์ขอ้ ความ เช่น “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
คืออุณหภูมิมีหน่วยเป็ นองศาฟาเรนไฮต์
จงเขียนโปรแกรมเพือ่ รับข้ อมูลอุณหภูมิจากผู้ใช้ โดยมีหน่ วยเป็ นองศาฟา
เรนไฮต์ แล้วแปลงเป็ นองศาเซลเซียส และแสดงผลลัพธ์ ที่ได้ ออกทาง
หน้ าจอ