โครงสร้ างโปรแกรมภาษา C หัวข้อ โปรแกรมภาษา การ Compile & Run โปรแกรม โครงสร้ างโปรแกรมภาษา C คาสั่งแสดงผลลัพธ์ (Output) คาสั่งรั บข้ อมูล (Input)
Download
Report
Transcript โครงสร้ างโปรแกรมภาษา C หัวข้อ โปรแกรมภาษา การ Compile & Run โปรแกรม โครงสร้ างโปรแกรมภาษา C คาสั่งแสดงผลลัพธ์ (Output) คาสั่งรั บข้ อมูล (Input)
โครงสร้ างโปรแกรมภาษา C
1
หัวข้อ
โปรแกรมภาษา
การ Compile & Run โปรแกรม
โครงสร้ างโปรแกรมภาษา C
คาสั่งแสดงผลลัพธ์ (Output)
คาสั่งรั บข้ อมูล (Input)
2
ใช้ ในการพัฒนาโปรแกรมสาหรับ
งานเฉพาะตามที่ผ้ ใู ช้ ต้องการ
ประเภทของโปรแกรมภาษา
โปรแกรมภาษา
1. ภาษาระดับต่า (Low-Level Language)
เช่น ภาษาเครื่ อง (Machine language)
2. ภาษาระดับกลาง (Middle-Level Language)
เช่น ภาษาแอสเซมบลี (Assembly Language)
3. ภาษาระดับสูง (High-Level Language)
เช่น Pascal, Fortran, C, JAVA, ...
3
3
ภาษาเครื่ อง (Machine Language)
เป็ นภาษาที่คอมพิวเตอร์ เข้ าใจ ซึง่ เขียนเป็ นรหัสเลข
ฐาน 2 (0/1) และมีความเกี่ยวข้ องกับอุปกรณ์ภายใน
เครื่ องคอมพิวเตอร์
แต่ย่งุ ยากต่อการพัฒนาโดยมนุษย์เรา
ตัวอย่างเช่น Object Code
4
4
ภาษาแอสเซมบลี (Assembly Language)
เป็ นภาษาที่เขียนโดยใช้ คาสัง่ เป็ นคาเฉพาะใน
ภาษาอังกฤษที่มนุษย์เข้ าใจ แทนการใช้ รหัสเลขฐาน 2
◦แต่ ออกแบบมาเฉพาะสาหรั บคอมพิวเตอร์ แต่ ละรุ่น
◦ผู้เขียนโปรแกรมยังต้ องทราบข้ อมูลที่เกี่ยวข้ องกับ
อุปกรณ์ ของเครื่ องคอมพิวเตอร์ (ยังยากต่อการพัฒนา)
◦และต้ องใช้ แอสเซมเบอร์ (Assembler) ในการแปล
ภาษาแอสเซมบลี ให้ เป็ นภาษาเครื่ อง
5
5
6
6
ภาษาระดับสูง (High-Level Languages) เช่น C, JAVA,
เป็ นภาษาที่พฒ
ั นาได้ ง่าย เพราะใช้ คาสัง่ เป็ นภาษาอังกฤษ
◦ใช้ คอมไพเลอร์ (Compiler) หรื อ Interpreter ใน
การแปลภาษาระดับสูงให้ เป็ นภาษาเครื่ อง
Compiler แปลทัง้ โปรแกรม (เช่ น Pascal, C, ...)
Interpreter แปลทีละบรรทัด
ตัวอย่าง โปรแกรมภาษา C
7
7
ขันตอนการแปล
้
Source code (file) ของโปรแกรม
ภาษา C ให้ เป็ น Machine code (Object file)
ขันตอนการประมวลผลโปรแกรมภาษา
้
C
8
โปรแกรมภาษา
C จะอยู่ในรูปแบบของฟั งก์ ชัน
ซึ่งมีอย่ างน้ อยหนึ่งฟั งก์ ชัน (คือ main)
ตัวอย่ างการ Edit โปรแกรมภาษา C
9
Preprocessor Directive (ข้ อความสัง่ ตัวประมวลผลก่อน)
Main Function (ฟั งก์ชน
ั หลัก)
void main()
/* main function */
{
/* Begin (เริ่มต้ น) */
variable declaration; /* ประกาศตัวแปรที่เก็บข้ อมูล */
statements;
/* คาสัง่ ประมวลผล */
}
/* End (จบ) */
ตัวอย่ างเช่ น ถ้ าต้ องการพิมพ์ C Programming
C Program คือ
#include <stdio.h>
/* Preprocessor directive */
void main()
{
printf(“C Programming\n”);
}
◦ \n หมายถึง การย้ าย cursor ไปบรรทัดใหม่ (newline)
10
ภาษา
C ประกอบด้ วยคาสัง่ พื ้นฐาน 4 ชนิด คือ
1. คาสัง่ รั บและแสดงผล (Input / Output Statements) บทที่ 2-3
2. คาสัง่ คานวณนิพจน์ (Expression Statements) บทที่ 4
3. คาสัง่ ทดสอบเงื่อนไข (Conditioning Statements) บทที่ 5
4. คาสัง่ ทางานซา้ (Looping Statements)
บทที่ 6
คาสัง่ แต่ละชนิด อาจต้ องใช้ ตัวแปร
(Variables) ในการ
อ้ างอิงข้ อมูลที่เก็บอยู่ใน Memory ในบทนี ้จะกล่าวถึงตัว
แปร 2 ชนิด คือ
◦ ตัวแปร Integer
◦ ตัวแปร Floating-Point
เช่น int x, y
เช่น float area
11
printf
(เป็ นฟั งก์ชนั มาตรฐานของ C ใน stdio)
◦ ประกาศ stdio ในส่วน Preprocessor Directive
◦ ก่อนเรี ยกใช้ ฟังก์ชนั printf ใน main
รู ปแบบ
printf(“control string”, variable,…);
Memory
variable
◦ variable เป็ นตัวแปรใช้ เก็บค่า (ที่เปลี่ยนแปลงได้ ) ใน
Memory ในขณะประมวลผล
control
…
string ประกอบด้ วย
ข้ อความอธิบาย
เช่น printf(“C Programming”);
%format
เช่น %d, %f, %c, %s
%d สาหรับ integer หรื อ decimal
%f สาหรับ real หรื อ floating point
อักษรควบคุม เช่น \n (new line), …
12
เขียนโปรแกรม พิมพ์คาว่า C Programming
13
Memory
Address
0
1
2 (&X)
3
4
…
(เป็ นฟั งก์ชนั มาตรฐานใน stdio.h)
รู ปแบบ scanf(“%format,…”, &variable,…);
◦&variable หมายถึง ตาแหน่งที่อยู่ (Address) ของตัว
แปร variable ที่เก็บในหน่วยความจา
%format เช่น %d, %f, %c, %s
%d สาหรับ integer หรื อ decimal
ตัวอย่างเช่น scanf(“%d”, &X); %f สาหรับ real หรือ floating point
scanf
variable
(X)
…
รับข้ อมูลชนิด integer จากคีย์บอร์ ด
แล้ วนาไปเก็บไว้ ใน ตัวแปร X ที่ตาแหน่ ง &X
14
เขียนโปรแกรม
แสดงการบวกค่ าเลข 2 จานวน (X,
Y) และแสดง ผลบวก (Sum)
#include <stdio.h>
void main()
{
int X, Y, SUM;
printf(“Enter X: ”); scanf(“%d”, &X);
printf(“Enter Y: ”); scanf(“%d”, &Y);
SUM = X + Y;
printf(“Sum = %d\n”, SUM);
}
start
Input X,Y
SUM = X+Y
Memory
50
X
100
Y
SUM
150
…
Print SUM
end
printf หมายถึง ฟั งก์ชนั แสดงผลลัพธ์ (Output) ในภาษา C
scanf หมายถึง ฟั งก์ชน
ั รับข้ อมูล (Input) ในภาษา C
%d หมายถึง ชนิดของข้ อมูลแบบ Integer (หรื อ Decimal)
15
%format
ระบุชนิดของตัวแปร ในคาสัง่ scanf, printf
ชนิดข้ อมูล
ชนิดตัวแปร
#include <stdio.h>
void main()
{
int X, Y, sum;
printf(“Enter X: ”); scanf(“%d”, &X);
printf(“Enter Y: ”); scanf(“%d”, &Y);
sum = X + Y;
printf(“sum = %d\n”, sum);
}
%format
Memory
X
Y
SUM
…
16
เขียนโปรแกรมคานวณพื ้นที่ของสี่เหลี่ยม (Area)
เมื่อ Area = Width x Length (กว้ าง x ยาว) และแสดง
ผลลัพธ์จากการคานวณ
start
#include <stdio.h>
void main()
{
int W, L;
float Area;
printf(“Enter width: ”);
scanf(“%d”, &W);
printf(“Enter length: ”);
scanf(“%d”, &L);
Area = W * L;
printf(“Area = %f\n”, Area);
}
Input W,L
Area = W * L
Print Area
end
ผลลัพธ์
Enter width: _5
Enter length:10
_
Area = 50.0
17
เขียนโปรแกรม แสดงการเปลี่ยนค่าข้ อมูล
(ที่รับมามีหน่วยเป็ นฟุต) ให้ เป็ นนิ ้ว
#include <stdio.h>
void main()
{
int F, Inches;
printf("Enter feet: ");
scanf("%d", &F);
inches = F * 12;
printf("= %d inches\n", Inches);
}
Memory
start
Input Feet
Inches = Feet*12
F
Inches
…
Print Inches
end
ผลลัพธ์
Enter feet: _2
= 24 inches
18
scanf
เป็ นฟั งก์ชนั ที่รับข้ อมูลได้ ทกุ ชนิด
◦จึงต้ องระบุ “%format สาหรับข้ อมูลแต่ละชนิด
แต่สาหรับข้ อมูลหรื อตัวแปร Character สามารถเลือกใช้
ฟั งก์ชนั
getchar() รับหนึง่ ตัวอักษร และต้ องกด ENTER
เป็ นฟั งก์ชนั ใน Library “stdio”
getch() รับหนึง่ ตัวอักษร แต่ไม่ต้องกด ENTER
เป็ นฟั งก์ชนั ใน Library “conio”
gets() รับหลายตัวอักษรเป็ น String และต้ องกด ENTER
เป็ นฟั งก์ชนั ใน Library “stdio”
19
เขียนโปรแกรม รับข้ อมูล วัน (Day), เดือน (Month), ปี
(Year)
เช่น 1, November, 2010 และแสดงผลลัพธ์เป็ นการพิมพ์
วันที่ในรูปแบบ Month day, year (เช่น November 1, 2010 )
ผลลัพธ์
#include <stdio.h>
Enter Day: 1_
void main()
Enter Month: November
_
{
Enter Year: _2010
int Day, Year;
Date is November 1, 2010
char Month[20]; // string
printf("Enter Day: "); scanf("%d", &Day);
printf("Enter Month: "); scanf("%s", &Month);
printf("Enter Year: "); scanf("%d", &Year)
printf(“Date is %s %d, %d\n",Month, Day, Year);
} fflush(stdin); getchar();
รอรับหนึ่งตัวอักษรจาก Keyboard
ลบข้ อมูลที่ค้างอยู่ใน Keyboard Buffer
Memory
Day
Year
Month
1
2010
N
o
v
e
m
b
e
r
…
…
20