โครงสร้ างโปรแกรมภาษา 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