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
คืออุณหภูมิมีหน่วยเป็ นองศาฟาเรนไฮต์
จงเขียนโปรแกรมเพือ่ รับข้ อมูลอุณหภูมิจากผู้ใช้ โดยมีหน่ วยเป็ นองศาฟา
เรนไฮต์ แล้วแปลงเป็ นองศาเซลเซียส และแสดงผลลัพธ์ ที่ได้ ออกทาง
หน้ าจอ