8. 8
# include <stdio.h>
int main (void )
{
printf(“Hello, Good morning. n”);
}
ตัวอย่างโปรแกรม
โปรแกรมที่ 1
เป็นโปรแกรมสั่งพิมพ์ข้อความ Hello, Good morning
9. 9
โปรแกรมที่ 2
# include <stdio.h>
main ( )
{
float point;
printf("nnPut your score
inn");
scanf("%f", &point);
printf("Your score is %f
pointnn", point);
}
เป็นโปรแกรมรับคะแนนและเก็บค่าที่ตัวแปร poi
หลังจากนั้นสั่งให้มีการพิมพ์คะแนนออกมา
17. 17
อมูลและตัวแปรชนิดจำานวนเต็ม
จำานวนเต็มในภาษาซีสามารถใช้แทนได้ 4
รูปแบบคือ int, short, long และ unsigned
สำาหรับการกำาหนดตัวแปรแบบ unsigned
คือจำานวนเต็มที่ไม่คิดเครื่องหมายนั้นจะต้อง
ใช้ควบคู่กับรูปแบบข้อมูลจำานวนเต็มชนิดอื่น
ๆ คือ int หรือ short หรือ long ตัวอย่าง
เช่น
unsigned int plusnum;
unsigned long width;
unsigned short absno; /*
33. 33
สั่ง if ….. else …..
รูปแบบของคำาสั่ง
if (คำาสั่งหรือนิพจน์เงื่อนไข)
คำาสั่งที่ต้องทำาเมื่อเงื่อนไขนั้นเป็นจ
else คำาสั่งที่ต้องทำาเมื่อเงื่อนไขนั้นไม่เป็น
งเช่น
if (value1 > value2)
min = value2;
else
min = value1;
52. 52
ตัวอย่ำง
4.1 (ต่อ)
double SumDouble ( double
x, double y )
{
return ( x + y );
}
void PrintOut ( double x )
{
printf ( “n Result of
sum is : %.2f”, x );
71. 71
#include <stdio.h>
int x;
void func1 ( )
{
x = x + 10;
printf ( “func1 -> x :
%dn”, x );
}
ตัวอย่ำง
4.3
แสดงกำรทำำงำนของ
โปรแกรมในลักษณะที่มี
ตัวแปรโกลบอล แสดง
ขอบเขตกำรใช้งำนของ
ตัวแปรภำยในโปรแกรม
72. 72
void func2 ( int x )
{
x = x + 10;
printf ( “func2 -> x :
%dn”, x );
}
void func3 ( ) {
int x=0;
x = x + 10;
printf ( “func3 -> x :
%dn”, x );
ตัวอย่ำง
4.3 (ต่อ)
73. 73
void main ( )
{
x = 10;
printf ( “main (start) -> x :
%dn”, x );
func1 ( );
printf ( “main (after func1) ->
x : %dn”, x ); func2 ( x );
printf ( “main (after func2) ->
x : %dn”, x); func3 ( );
printf ( “main (after func3) ->
ตัวอย่ำง
4.3 (ต่อ)
74. 74
main (start) -> x : 10
func1 -> x : 20
main (after func1) -> x : 20
func2 -> x : 30
main (after func2) -> x : 20
func3 -> x : 10
main (after func3) -> x : 20
ตัวอย่ำง
4.3 (ต่อ) ผลกำรทำำงำน
77. 77
struct point {
int
x;
int
y;
};
กำรประกำศ ประเภทข้อมูลประเภทข้อมูล
แบบโครงสร้ำง
Mem
ber
หมำยเหตุ กำรประกำศชื่อสมำชิกภำยใน
struct จะใช้ชื่อใดก็ได้อำจจะซำ้ำกับชื่อ
ตัวแปรที่อยู่ภำยนอก struct แต่ชื่อที่อยู่
ภำยใน struct เดียวกันห้ำมประกำศชื่อซำ้ำ
78. 78
struct point {
int
x;
int
y;
} x, y , z;
กำรประกำศ ตัวแปรข้อมูลตัวแปรข้อมูล
แบบโครงสร้ำง
หมำยเหตุ จะเห็นว่ำชื่อของ struct จะ
ประกำศหรือไม่ก็ได้ หำกไม่มีกำร
ประกำศจะไม่สำมำรถนำำ struct นั้นกลับ
แบบที่ 1
79. 79
struct point {
int x;
int y;
};
struct point
x,y,z
แบบที่ 2 กำร
ประกำ
ศแบบ
ข้อมูล
โครงส
ร้ำงกำร
ประกำ
ศ
ตัวแปร
ข้อมูล
80. 80
struct point pt =
{320,200};
กำรกำำหนดค่ำเริ่มต้นให้กับตัวแปร
ข้อมูลแบบโครงสร้ำง
struct_name.membe
r
กำรอ้ำงถึงสมำชิกภำยในตัวแปร
ข้อมูลแบบโครงสร้ำง
124. 124
6.6 การใช้ตัวชี้กับอาร์เรย์
การทำางานใด ๆ ของอาร์เรย์สามารถ
ใช้พอยน์เตอร์เข้ามาช่วย ซึ่งจะ
ทำาให้มีความเร็วในการทำางานสูงขึ้น
สมมติว่ามีอาร์เรย์ a และพอยน์เตอร์
pa ดังนี้
int a[10];
int *pa;
กำาหนดให้พอยน์เตอร์ pa ชี้ไปยัง
อาร์เรย์ a ด้วยคำาสั่ง
pa = &a[0]; /* หรือใช้คำา
136. 136
f (&a[2])
หรือ f (a+2)
เป็นการส่งแอดเดรสของ
สมาชิก a[2] ให้กับฟังก์ชัน f
การประกาศฟังก์ชัน f สามารถ
ทำาได้โดยการประกาศ
f (int arr[ ])
{ ......... }
ตัวอ
ย่าง
137. 137
6.7 การคำานวณกับแอดเดรส
ให้ p เป็นพอยน์เตอร์ชี้ไปยัง
อาร์เรย์ใด ๆ คำาสั่ง p++ เป็นการ
เลื่อน p ไปยังสมาชิกถัดไป และคำา
สั่ง p += i เป็นการเลื่อนพอยน์
เตอร์ไป i ตำาแหน่งจากตำาแหน่ง
ปัจจุบัน นอกจากนี้ยังสามารถใช้
เครื่องหมายความสัมพันธ์
(Relational Operator) เช่น ==, !
138. 138
p < q
จะเป็นจริงเมื่อ p ชี้ไปที่สมาชิกที่
อยู่ก่อนหน้าสมาชิกที่ q ชี้อยู่ การ
เปรียบเทียบในลักษณะจะใช้ได้
ต่อเมื่อ p และ q ชี้ไปที่อาร์เรย์
เดียวกันเท่านั้น
นอกจากนี้ยังสามารถใช้การ
ลบหรือการบวกกับพอยน์เตอร์ได้
เช่นเดียวกัน แต่สิ่งที่ควรระวังคือ
140. 140
เนื่องจาก s ชี้อยู่ที่
ตำาแหน่งเริ่มต้น โดยมี p ชี้ไปที่
s เช่นเดียวกัน แต่จะมีการ
เลื่อน p ไปทีละหนึ่งตำาแหน่ง
จนกว่าค่าที่ตำาแหน่งที่ p ชี้อยู่
‘จะเท่ากับ 0’ เมื่อนำา p ค่า
สุดท้ายมาลบกับ s ที่ตำาแหน่ง
เริ่มต้นก็จะได้ความยาวของ