1
1
Hardware, Software, Flowchart
Good students never miss a class !!!
2
เนือ้หา อุปกรณ์ Hardware ประเภทของ Software ขัน้ตอนการพัฒนาโปรแกรม การวิเคราะห์โจทย์ปัญหา การเขียนผังงาน การ Compile โปรแกรมภาษา C
Don’t waste time, rereading
2
3
1.1 อุปกรณ์ Hardware คอมพวิเตอร์ หมายถึงเคร่ืองมือทางอิเลก็ทรอนิกส์ ท่ีใช้ในการประมวลผลข้อมลู ส่วนประกอบหลักของคอมพวิเตอร์ 1. หน่วยประมวลผลกลาง (CPU) 2. หน่วยความจ าหลกั (Main Memory) 3. หน่วยความจ าส ารอง (Secondary Storages) 4. หน่วยรับและแสดงผล (Input/Output)
Microcomputer
โครงสร้างบนเมนบอร์ด
RAM
CPU
ROM
Main Memory
3
โครงสร้างบนเมนบอร์ด
CPU
Cache Cache controller
RAM ROM
6
หน่วยประมวลผลกลาง (Central Processing Unit)
หน่วยความจ าหลัก (Main Memory)
หน่วยความจ าส ารอง (Secondary Storages)
หน่วยรับข้อมูล หน่วยแสดงผล
~1 GB
ความจุ
~5 GHz
ความเร็ว
~500 GB
ความจุ 1B = 8 bits (1 ตวัอกัษร) 1K = 1024 = 210
1M = 1024K = 220
1G = 1024M = 230
4
(Hennessy)
8
(Main memory)
4
5 10
6
13
5
9
1.1.1 CPU หน่วยประมวลผลกลาง (Central Processing Unit) CPU ท าหน้าท่ีหลกัในการประมวลผลข้อมลู และควบคมุการท างานทัง้หมดของระบบ เป็นเสมือนสมองของคอมพิวเตอร์ในสว่นค านวณ
หน่วยประมวลผล (CPU) ใน PC เป็นหน่วยประมวลผลขนาดเลก็เรียกวา่ Microprocessor วางอยูบ่น แผงวงจรหลัก (Main Board) ซึง่ประกอบด้วยวงจร ท่ีเช่ือมต่อระหว่างหน่วยประมวลผล (CPU) กับหน่วยอ่ืนๆ (Memory, Disk, I/O)
10
Mainboard หรือ Motherboard
6
11
1
2
3
12
1.1.2 หน่วยความจ าหลัก หน่วยความจ าหลัก (Main Memory) เป็นที่เก็บโปรแกรมและข้อมูลที่อยูใ่นระหวา่งการประมวลผล
โดยเก็บใน RAM (Random Access Memory) แบบชัว่คราว
ขนาดของ RAM (0.5-2 GB) แสดงถึงประสิทธิภาพของคอมพิวเตอร์
ความจุของหน่วยความจ า มีหน่วยวดั ดงันี ้ 1 KBs (Kilobytes) = 210 = 1024 Bytes
1 MBs (Megabytes) = 220 = 1024 KBs (= 1,048,576 Bytes)
1 GBs (Gigabytes) = 230 = 1024 MBs
1 TBs (Terabytes) = 240 = 1024 GBs
7
13
1.1.3 หน่วยความจ าส ารอง หน่วยความจ าส ารอง (Secondary Storages) เก็บโปรแกรมและข้อมลูแบบถาวร
ทัง้ท่ีก าลงัประมวลผลและยงัไมถ่กูประมวลผลในขณะนัน้
ชนิดของอุปกรณ์ ท่ีใช้เป็นหน่วยความจ าส ารอง Hard drive
Floppy disk drive
CD/DVD-ROM drive, …
14
1
2
3
8
15
1.1.4 หน่วยรับ/แสดงผล หน่วยรับ/แสดงผล (Input/Output)
อุปกรณ์รับข้อมูล (Input Devices) เป็นเคร่ืองมือในการรับข้อมลู และค าสัง่จากผู้ใช้
เช่น Keyboard, Mouse, Microphone
อุปกรณ์แสดงผลข้อมูล (Output Devices) เป็นเคร่ืองมือในการสง่ผลการท างานกลบัมายงัผู้ใช้ เช่น จอภาพ เคร่ืองพิมพ์ ล าโพง
Microcomputer
1
2
3
4
5
16
Software คือโปรแกรมหรือชดุค าสัง่ ท่ีผู้ เขียนสร้างขึน้ เพื่อให้คอมพิวเตอร์ท างานอย่างเป็นขัน้ตอน และได้ผลลพัธ์ตามท่ีต้องการ
Software แบง่ได้ 2 ประเภท 1. โปรแกรมระบบ (Operating System: OS)
เช่น DOS, Windows, UNIX, ...
2. โปรแกรมประยุกต์ (Application Program) Software package เช่น Word, Spreadsheet, ...
Developed program เช่น โปรแกรมใช้งานเฉพาะ ถกูพฒันาโดยใช้โปรแกรมภาษา (Programming language เช่น Pascal, C, ...)
1.2 ประเภทของ Software
9
17
1.2.1 OS โปรแกรม OS ท าหน้าท่ีในการควบคมุการท างานของระบบคอมพิวเตอร์ เพื่อให้อปุกรณ์ตา่งๆท างานร่วมกนัอย่างมีประสิทธิภาพ ตัง้แตเ่ร่ิมเปิดเคร่ือง เป็นโปรแกรมสื่อกลาง
ระหวา่งอปุกรณ์ Hardware และโปรแกรมประยกุต์ Software
OS ที่นิยมใช้ เช่น Windows (ส าหรับ PCs), UNIX (ส าหรับ Minicomputers)
18
1.2.2 โปรแกรมภาษา โปรแกรมภาษา ใช้ในการพฒันาโปรแกรมประยกุต์ส าหรับงานเฉพาะตามท่ีผู้ใช้ต้องการ ประเภทของโปรแกรมภาษา 1. ภาษาระดับต ่า (Low-Level Language) เช่น ภาษาเคร่ือง (Machine language) 2. ภาษาระดับกลาง (Middle-Level Language) เช่น ภาษาแอสเซมบลี (Assembly Language) 3. ภาษาระดบัสูง (High-Level Language) เช่น Pascal, Fortran, C, JAVA, ...
10
19
1.2.2.1 ภาษาเคร่ือง ภาษาเคร่ือง (Machine Language)
เป็นภาษาท่ีคอมพิวเตอร์เข้าใจ ซึง่เขียนเป็นรหสัเลขฐาน 2 (0/1) และค าสัง่มีความเก่ียวข้องกบัอปุกรณ์ของคอมพิวเตอร์โดยตรง แตม่นษุย์เข้าใจภาษาเคร่ืองได้ยาก ดงันัน้การเขียนโปรแกรมด้วยภาษาเคร่ืองจงึยากมาก
20
11
21
1.2.2.2 ภาษาแอสเซมบลี ภาษาแอสเซมบลี (Assembly Language)
เป็นภาษาท่ีเขียนโดยใช้ค าสัง่ท่ีมนษุย์เข้าใจ (English-like statements) แทนการใช้รหสัเลขฐาน 2 แต่ออกแบบมาเฉพาะส าหรับคอมพิวเตอร์แต่ละแบบ และผู้ เขียนโปรแกรมยงัต้องทราบข้อมลูท่ีเก่ียวข้องกบัอปุกรณ์ของคอมพิวเตอร์
ใช้ แอสเซมเบอร์ (Assembler) ในการแปลภาษาแอสเซมบลี ให้เป็นภาษาเคร่ือง
22
12
23
1.2.2.3 ภาษาระดับสูง ภาษาระดับสูง (High-Level Languages)
ใช้ภาษาท่ีมนษุย์เข้าใจ (English-like language) เช่น Basic, Pascal, C, JAVA, ... ใช้ คอมไพเลอร์ (Compiler) หรือ Interpreter ในการแปลภาษาระดบัสงูให้เป็นภาษาเคร่ือง Compiler แปลทัง้โปรแกรม (เช่น Pascal, C, ...) Interpreter แปลทีละบรรทดั (เช่น Basic, ...)
24
Compiler
#include <stdio.h>
#include <math.h>
void main()
{ const float pi = 3.1415926;
float radius = 2.0, area, radius_check;
printf("Input: Enter radius > ");
scanf("%f", &area);
area = pi * radius * radius;
printf("Output: radius = %f\n", radius);
printf(" area = %f\n", area);
}
C code
13
25
1.3 การพัฒนาโปรแกรม การพัฒนาโปรแกรม ประกอบด้วย 5 ขัน้ตอน
1. ก าหนดและวิเคราะห์ปัญหา (State problem & Problem analysis)
2. เขียนผงังาน (Flowchart)
3. เขียนโปรแกรม (Program Development)
4. ทดสอบและแก้ไขโปรแกรม (Testing & debugging)
5. ท าเอกสารและบ ารุงรักษาโปรแกรม (Document & maintenance)
26
ขัน้ตอนพัฒนาโปรแกรม สรุป 5 ขัน้ตอนในการพฒันาโปรแกรม
Problem
Analysis
Flowchart
Program
Test
Input Output
14
27
1.4 ก าหนด-วิเคราะห์ปัญหา ก าหนดขอบเขตของปัญหา ให้ชดัเจนวา่
จะให้คอมพิวเตอร์ท าอะไร (What?)
วิเคราะห์ปัญหา (Problem analysis) ก าหนด Input: ลกัษณะของข้อมลูเข้า
Process: วิธีการประมวลผล (How?)
Output: ลกัษณะของผลลพัธ์ท่ีต้องการ
28
ตัวอย่าง 1.1 ออกแบบโปรแกรมให้คอมพิวเตอร์ท างานเป็นเคร่ืองคิดเลขอย่างง่าย โดยรับข้อมลู 2 คา่ (X, Y) และแสดงผลบวกทางจอภาพ Problem: ค านวณผลบวกของ 2 คา่ Problem Analysis
1. Input: รับข้อมลู (X, Y) จากคีย์บอร์ด 2. Process: ค านวณ sum = X + Y 3. Output: แสดงผลบวก (sum) ทางจอภาพ
…
Memory X Y
sum
15
29
ตัวอย่าง 1.2 ออกแบบโปรแกรมให้คอมพิวเตอร์รับข้อมลู 3 คา่ ค านวณคา่เฉลี่ย และแสดงคา่เฉลี่ย ทางจอภาพ Problem: ค านวณคา่เฉลี่ยของ 3 คา่ ((X1+X2+X3)/3)
Problem Analysis 1. Input: รับข้อมลู (X1, X2, X3) 2. Process: ค านวณ sum = X1 + X2 + X3 mean = sum/3
3. Output: แสดงคา่เฉลี่ย (mean) ทางจอภาพ
…
Memory X1 X2 X3
sum mean
30
ตัวอย่าง 1.3 ออกแบบโปรแกรมให้คอมพิวเตอร์รับข้อมลู N คา่ ค านวณคา่เฉลี่ย และแสดงคา่เฉลี่ย ทางจอภาพ Problem: ค านวณคา่เฉลี่ยของ N คา่ (i
N Xi/N) Problem Analysis
1. Input: รับข้อมลู N และ X (X1, ..., XN) 2. Process: loop for (i=1 to N)
read X
sum = sum + X
end for
mean = sum/N
3. Output: แสดงคา่เฉลี่ย (mean) ทางจอภาพ …
Memory
X sum mean
N
16
31
1.5 การเขียนผังงาน ผังงาน (Flowchart) เป็นแผนภาพ ท่ีใช้อธิบายล าดบัการท างานของโปรแกรมเป็นขัน้ตอน ประโยชน์ของ Flowchart
1. อธิบายล าดบัขัน้ตอนการท างานของโปรแกรม 2. ท าให้ตรวจสอบข้อผิดพลาดของโปรแกรมได้ง่าย 3. ท าให้ผู้ อ่ืนสามารถศกึษาการท างานและแก้ไข
โปรแกรมได้ง่าย
32
1.5.1 ประเภทของผังงาน ผังงานระบบ (System Flowchart)
แสดงขัน้ตอนการท างานภายในระบบงาน โดยจะกลา่วอยา่งกว้างๆ ผังงานโปรแกรม (Program Flowchart)
แสดงขัน้ตอนของค าสัง่ ท่ีใช้ในโปรแกรม
17
33
1.5.2 สัญลักษณ์ในผังงาน
การเร่ิมต้น และการสิน้สดุการท างาน ลกูศรแสดงทิศทางการท างาน และการไหลของข้อมลู การประมวลผล หรือการค านวณ การรับข้อมลู หรือแสดงผล (ไม่ระบชุนิดอปุกรณ์)
การแสดงผลทางเคร่ืองพิมพ์ (เป็นเอกสาร) การตรวจสอบเง่ือนไข (เพ่ือการตดัสนิใจเม่ือมีทางเลือก) จดุเช่ือมตอ่ของผงังาน
สัญลักษณ์พืน้ฐาน ท่ีนิยมใช้ใน Flowchart
การแสดงผลทางจอภาพ
34
1.5.3 รูปแบบของผังงาน แบบล าดับ (Sequence)
แบบมีทางเลือก (Selection)
แบบท าซ า้ (Looping)
18
35
1.5.3.1 ผังงานแบบล าดับ Flowchart แบบล าดับ (Sequence)
start
Input
statement
output
end
แสดงขัน้ตอนการท างานท่ีเรียงล าดบั (ไมมี่การข้ามขัน้ หรือย้อนกลบั)
36
ผังงานแบบล าดับ „ Flowchart แบบล าดับ (Sequence)
start
Input
statement
output
end
แสดงขัน้ตอนการท างานท่ีเรียงล าดบั (ไมมี่การข้ามขัน้ หรือย้อนกลบั)
scanf()
printf
y = x + 1;
#include “stdio.h”
#include “conio.h”
main()
{
getch(); }
int x,y;
scanf(“%d”,&x);
y = x + 1;
printf(“Output = %d\n”,y);
19
37
ตัวอย่าง 1.4 แสดงการออกแบบ Flowchart เพื่อให้โปรแกรมท างานเป็นเคร่ืองคิดเลขอยา่งงา่ย โดยรับข้อมลู 2 คา่ (X, Y) ค านวณ การบวก (sum) พร้อมแสดงผลบวก start
Read X,Y
sum = X+Y
Print sum
end
…
Memory X Y
sum
38
1.5.3.2 ผังงานแบบมีทางเลือก แสดงการตรวจสอบเง่ือนไขให้โปรแกรมเลือกท าอยา่งใดอยา่งหนึง่ ซึง่มี 3 กรณี
1. การเลือกแบบ 1 เส้นทาง check
condition
statement(s)
yes
no จะท างานเฉพาะเมื่อเงื่อนไขเป็นจริงเท่านัน้
20
39
ผังงานแบบมีทางเลือก „ แสดงการตรวจสอบเง่ือนไขให้โปรแกรมเลือกท าอยา่งใดอยา่งหนึง่ ซึง่มี 3 กรณี
1. การเลือกแบบ 1 เส้นทาง check
condition
statement(s)
yes
no จะท างานเฉพาะเมื่อเงื่อนไขเป็นจริงเท่านัน้
ค าส่ัง if ไม่ต้องมี else
40
ตัวอย่าง 1.5 แสดงการออกแบบ Flowchart เพ่ือให้โปรแกรมรับคะแนนนกัศกึษา (X) ตรวจสอบและแสดงผล ถ้าผา่น (Pass) โดยมีเง่ือนไขดงันี ้
start
end
Read X
X >= 60 yes
Print “Pass”
เงื่อนไข คะแนน 60 ผา่น (Pass) คะแนน < 60 ตก (Fail)
no
…
Memory
X
21
41
ผังงาน-ทางเลือก 2. การเลือกแบบ 2 เส้นทาง
เม่ือเง่ือนไขเป็นจริงจะท าอยา่งหนึง่
check
condition
เม่ือเง่ือนไขเป็นเทจ็จะท าอีกอยา่งหนึง่
no yes
statement 1 statement 2
42
ผังงาน-ทางเลือก 3. การเลือกแบบหลายเส้นทาง (n)
เม่ือเง่ือนไขเทา่กบัทางเลือกใดจะท าตามทางนัน้
statement1
check
condition
statement2 . . . statement3 statement n
n 1 2 3
statement n
Cond#1 yes
statement1
Cond#n-1 statement n-1
Cond#2 statement2
Cond#3 statement3
หรือ
no
yes no
yes no
yes no
22
43
ตัวอย่าง 1.6 แสดงการออกแบบ Flowchart เพ่ือ ให้โปรแกรมรับคะแนนนกัศกึษา (X) ตรวจสอบและจดักลุม่ตามเง่ือนไข พร้อมแสดงผลลพัธ์
start
grade = „F‟
end
Read X
Print grade
เงื่อนไข คะแนน 80-100 กลุม่ G คะแนน 50-79 กลุม่ P คะแนนต ่ากวา่ 50 กลุม่ F
X > 79 yes
grade = „G‟ no
X > 49 yes
grade = „P‟ no
…
Memory
X grade
44
ตัวอย่าง 1.7 แสดงการออกแบบ Flowchart เพ่ือ ให้โปรแกรมรับคะแนนนกัศกึษา (X) ตรวจสอบและตดัเกรดตามเง่ือนไข พร้อมแสดงผลลพัธ์
เงื่อนไข คะแนน 80-100 เกรด A คะแนน 70-79 เกรด B คะแนน 60-69 เกรด C คะแนน 50-59 เกรด D คะแนนต ่ากวา่ 50 เกรด F
start
grade = „F‟
end
Read X
Print grade
X > 79 yes
grade = „A‟ no
X > 69 yes
grade = „B‟ no
X > 59 yes
grade = „C‟ no
X > 49 yes
grade = „D‟ no
23
45
1.5.3.3 ผังงานแบบท าซ า้ การท าซ า้ (Looping) แบง่เป็น 3 กรณี 1. การท าซ า้เม่ือเงื่อนไขเป็นจริง
ตรวจสอบเง่ือนไขก่อน no
exit loop
statement(s)
check
condition
yes
จะท างาน (Statement) ซ า้เม่ือเงื่อนไขเป็นจริง (ออกจากท างานซ า้เม่ือเง่ือนไขเป็นเทจ็)
46
ตัวอย่าง 1.8 แสดงการออกแบบ Flowchart เพ่ือให้โปรแกรมค านวณการก าหนดคา่ท่ีเพิ่มทีละ 1 จาก 1 ‟ 100 ก าหนดให้ I = 1, 2, 3, ..., 100
yes
while I<=100
start
I = 1
no
Print I end
I = I+1
1 100 1 1
…
Memory
I
24
47
ตัวอย่าง 1.9 แสดงการออกแบบ Flowchart เพ่ือให้โปรแกรมค านวณ การบวก 1+2+...+100 ก าหนดให้ I = 1, 2, 3, ..., 100 และ SUM = 1+2+3+...+100
SUM = SUM+I
yes
while I<=100
start
I = 1
SUM = 0
no
Print SUM
end I = I+1
…
Memory
I SUM
1 100 1 1
48
ผังงาน-ท าซ า้ 2. การท าซ า้ในขณะเงื่อนไขเป็นจริง
และท าซ า้ถ้าเง่ือนไขเป็นจริง (จนเม่ือเป็นเทจ็จงึออกจากท างานซ า้)
ท างาน (Statement) ก่อน การตรวจเง่ือนไข
statement(s)
check
condition
yes
exit loop no
25
49
ผังงาน-ท าซ า้ 3. การท าซ า้ตามจ านวนที่ระบุ
โดยเร่ิมจากรอบเร่ิมต้น (i=1) ไปยงัรอบสุดท้าย (i=N)
ท างานตามรอบท่ีก าหนด i > N
exit loop
(ปกติการนับรอบจะเพิ่มท่ีละ 1 คา่ (i = i+1))
statement(s)
i N
for i=1 to N
50
ตัวอย่าง 1.10 แสดงการออกแบบ Flowchart เพ่ือให้โปรแกรมค านวณ การบวก 1+2+...+100 ก าหนดให้ I = 1, 2, 3, ..., 100 และ SUM = 1+2+3+...+100
SUM = SUM+I
yes
for I=1 to 100
start
SUM = 0
no
Print SUM
end
1 100 1 1
…
Memory
I SUM
26
51
ตัวอย่าง 1.11 แสดงการออกแบบ Flowchart เพ่ือให้โปรแกรมค านวณ การคณู 1x2x...x100 ก าหนดให้ I = 1, 2, 3, ..., 100 และ MUL = 1x2x3x...x100
MULT = MULT*I
yes
for I=1 to 100
start
MUL = 1
no
Print MUL
end
1 100 1 1
…
Memory
I MUL
52
ตัวอย่าง 1.12 แสดงการออกแบบ Flowchart เพ่ือให้โปรแกรมค านวณตาราง สตูรคณูแม ่2 ก าหนดให้ T = 2, i=1, 2, …, 12, และ R = i x T
i x T = R 1 x 2 = 2 2 x 2 = 4 3 x 2 = 6 4 x 2 = 8 5 x 2 = 10 6 x 2 = 12 7 x 2 = 14 8 x 2 = 16 9 x 2 = 18 10 x 2 = 20 11 x 2 = 22 12 x 2 = 24
R = i x T
i <=12
for i=1 to 12
start
T = 2
Print i, T, R
i > 12
end …
Memory
T i
R
27
53
ตัวอย่าง 1.13 แสดงการออกแบบ Flowchart เพ่ือให้โปรแกรม รับข้อมลู 3 คา่ (X1, X2, X3) ค านวณคา่เฉลี่ย (mean) พร้อมแสดงผลคา่เฉลี่ย
start
Read X1,X2,X3
sum=X1+X2+X3
mean = sum/3
Print mean
end
…
Memory X1 X2 X3
sum mean
54
ตัวอย่าง 1.14 แสดงการออกแบบ Flowchart ให้โปรแกรมรับคา่ N (จ านวนข้อมลู) และข้อมลูแตล่ะคา่ X (X1, X2, ..., XN) ค านวณคา่เฉลี่ย (i
N Xi/N) และแสดงคา่เฉลี่ย start
sum=sum+X Print mean
end
Read X
i N
for i=1 to N
Read N
mean = sum/N
i > N
sum = 0
…
Memory
X sum mean
N
28
55
1.6 การ Compile โปรแกรม ขัน้ตอนการแปล Source code (file) ของโปรแกรมภาษา C ให้เป็น Machine code (Object file)
Editor (create &
modify C
code)
Source code
file (FILE.C) Compiler
(convert
Source code
Machine
code)
Object file
(FILE.OBJ) Linker
(add extra
information)
C Libraries
Executable file
(FILE.EXE)
Errors/Warnings
ขัน้ตอนการประมวลผลโปรแกรมภาษา C Input
data
Executable
program Output
56
Compile & Run
File Edit Run Compile Project Options Debug
Break/watch C:FILE.C
#include <stdio.h>
void main()
{
printf (“Programming is fun.\n”);
}
Edit
Message
โปรแกรมภาษา C จะอยู่ในรูปแบบของฟังก์ชนั ซึง่มีอย่างน้อยหนึง่ฟังก์ชนั (คือ main) ตวัอย่างการ Edit โปรแกรมภาษา C โดย Turbo C
29
เร่ิมต้นเขียนโปรแกรม
#include “stdio.h”
#include “conio.h”
main()
{
getch();
}
57
เขียนค าส่ังต่าง ๆ แทรกลงไป
58
30
59
1.6.1 โครงสร้างโปรแกรม(พืน้ฐาน) Preprocessor Directive (ข้อความสัง่ตวัประมวลผลก่อน) Main Function (ฟังก์ชนัหลกั)
void main() /* main function */ { /* Begin (เร่ิมต้น) */ variable declaration; /* ประกาศตวัแปรที่เก็บข้อมลู */ statements; /* ข้อความสัง่ประมวลผล */ } /* End (จบ) */
ตัวอย่างเช่น ถ้าต้องการพิมพ์ Programming is fun. C Program คือ
#include <stdio.h> /* Preprocessor directive */ void main() { printf(“Programming is fun.\n”); }
\n หมายถึง การย้าย cursor ไปบรรทดัใหม ่(newline)
60
Program-1 โปรแกรมแสดงการรับข้อมลู 2 คา่ (X, Y) และแสดง ผลบวก (X+Y) ทางจอภาพ start
Read X,Y
sum = X+Y
Print sum
end
…
Memory X Y
sum
#include <stdio.h>
#include <conio.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);
getch(); /* get 1 character from keyboard */
} printf หมายถงึ ฟังก์ชนัแสดงผลลพัธ์ (Output) ในภาษา C scanf หมายถงึ ฟังก์ชนัรับข้อมลู (Input) ในภาษา C %d หมายถงึ ชนิดของข้อมลูแบบ Integer (หรือ Decimal)
31
61
control string ประกอบด้วย ข้อความอธิบาย เช่น printf(“C Programming”);
%format เช่น printf(“SUM = %d\n”, sum);
ล าดบัหลีก (Escape sequence) เช่น \n (new line)
1.6.2 การแสดงผล (printf) printf (ฟังก์ชนัมาตรฐานใน stdio.h) รูปแบบ printf(“control string”, variable,…); Variable เป็นตวัแปรใช้เก็บคา่ (ท่ีเปลี่ยนแปลงได้) ใน memory ในขณะประมวลผล
%d ส าหรับ integer หรือ decimal %f ส าหรับ real หรือ floating point
…
Memory
variable
62
การจัด %format %format ระบชุนิดของตวัแปร
ชนิดข้อมูล จ านวนเตม็ (integer) จ านวนจริง (real)
ชนิดตัวแปร รูปแบบ int %d
float %f
#include <stdio.h>
#include <conio.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);
getch();
}
32
63
%format ขึน้ต้นด้วย % เช่น %d ตวัอยา่งเช่น scanf(“%d”, &X);
รับข้อมลูชนิด integer จากแป้นพิมพ์ แล้วน าไปเก็บไว้ในตวัแปร X ท่ี &X
1.6.3 การรับค่า (scanf) scanf (ฟังก์ชนัมาตรฐานใน stdio.h) รูปแบบ scanf(“%format”, &variable,…); &variable หมายถึง ต าแหนง่ท่ีอยู่ (Address) ของตวัแปร ท่ีเก็บในหนว่ยความจ า
%d ส าหรับ integer หรือ decimal %f ส าหรับ real หรือ floating point
(X) (&X)
Address
0
1
2
3
4 …
…
Memory
variable
ค าส่ังพืน้ฐานการรับและแสดงผลข้อมูล ฟังก์ชันแสดงผล
putchar(ch);
puts() ฟังก์ชันรับข้อมูล
getchar()
getch()
gets() 64
char m = „T‟;
putchar(m); putchar(„Z‟); char name[10] = „Computer‟;
puts(name); puts(“THAI”);
ch = getch();
33
65
Program-2 โปรแกรมแสดงการรับข้อมลูคา่ความยาว (มีหน่วยเป็นฟตุ) ค านวณการเปลี่ยนหน่วยเป็นนิว้
ผลลัพธ์ Enter number (in feet) _ 2
= 24 inches
start
Read feet
inches = feet*12
Print inches
end
#include <stdio.h>
#include <conio.h>
void main()
{
int feet, inches;
printf("Enter number (in feet) ");
scanf("%d", &feet);
inches = feet*12;
printf("= %d inches\n", inches);
getch();
}
66
Program-3 โปรแกรมแสดงการรับข้อมลูคา่ความกว้าง ความยาวของสี่เหลี่ยม ค านวณพืน้ท่ีและแสดงผล #include <stdio.h>
void main()
{
int X, Y;
float area;
printf(“Enter width (X): ”);
scanf(“%d”, &X);
printf(“Enter length (Y): ”);
scanf(“%d”, &Y);
area = X * Y;
printf(“Area = %f\n”, area);
getch();
}
start
Read X,Y
area = X * Y
Print area
end
ผลลัพธ์ Enter width (X): _ 5
Area = 50.0
Enter length (Y): _ 10
34
67
Program-4 โปรแกรมแสดงการรับข้อมลูคา่รัศมีของวงกลม ค านวณ เส้นรอบวง (2r) และแสดงผล
ผลลัพธ์ Enter radius _ 2 Circumference = 12.566370
start
Read r
C = 2*PI*r
Print C
end
PI=3.1415926 #include <stdio.h>
void main()
{
float r, C, PI = 3.1415926;
printf("Enter radius: ");
scanf("%f", &r);
C = 2*PI*r;
printf("Circumference = %f\n", C);
getch();
}
68
Program-5 โปรแกรมแสดงการรับข้อมลู 3 คา่ ค านวณคา่เฉลี่ย และแสดงคา่เฉลี่ย ทางจอภาพ
start
Read X1,X2,X3
sum=X1+X2+X3
mean = sum/3
Print mean
end
#include <stdio.h>
void main()
{
int X1, X2, X3;
float sum, mean;
printf(“Enter X1,X2,X3: ”);
scanf(“%d,%d,%d”, &X1,&X2,&X3);
sum = X1+X2+X3;
mean = sum/3;
printf(“Mean = %f\n”, mean);
getch();
}
ผลลัพธ์ Enter X1,X2,X3: _ 5,2,10
Mean = 5.666667
35
69
Program-6 โปรแกรมแสดงการรับข้อมลู N คา่ ค านวณคา่เฉลี่ย และแสดงคา่เฉลี่ย ทางจอภาพ start
sum=sum+X Print mean
end
Read X
i N
for i=1 to N
Read N
mean = sum/N
i > N
sum = 0
#include <stdio.h>
void main()
{ int i, N, X;
float sum=0, mean;
printf(“Enter N: ”); scanf(“%d”, &N);
for (i=1;i<=N; i++) {
printf(“Enter X%d= ”,i); scanf(“%d”, &X);
sum = sum + X;
}
mean = sum/N;
printf(“Mean = %f\n”, mean);
getch();
}
ผลลัพธ์
Enter X1= _ 5
Mean = 5.666667
Enter N: _ 3
Enter X2= _ 2 Enter X3= _ 10
70
Program-7 โปรแกรมแสดงการก าหนดคา่ 1, 2, 3, ..., 100
yes
for i=1 to100
start
no
Print i
end
#include <stdio.h>
void main()
{ int i;
for (i=1;i<=100; i++) {
printf(“%d, ”, i);
}
getch();
} ผลลัพธ์ 1, 2, 3, 4, 5, …, 100
36
71
Program-8
โปรแกรมแสดงการบวก 1+2+...+100
#include <stdio.h>
void main()
{ int i, sum=0;
for (i=1;i<=100; i++) {
printf(“%d+ ”, i);
sum = sum + i;
}
printf(“ = %d\n”, sum);
getch();
}
ผลลัพธ์ 1+2+3+…+100 = 5050
yes
sum = sum+i
for i=1 to 100
start
sum = 0
no
Print sum
end
Print i
72
Program-9 โปรแกรมแสดงการคณู 1x2x...x10
#include <stdio.h>
void main()
{ int i;
float mul=1;
for (i=1;i<=10; i++) {
printf(“%d x ”, i);
mul = mul * i;
}
printf(“ = %f\n”, mul);
getch();
}
ผลลัพธ์ 1x2x3x…x10 = 3628800.0
yes
mul = mul*i
for i=1 to 10
start
mul = 1
no
Print mul
end
Print i
37
73
Program-10 โปรแกรมแสดงการค านวณ ตารางสตูรคณูแม ่2
ก าหนดให้ T = 2, i=1, 2, …, 12, และ R = i x T 1 x 2 = 2 2 x 2 = 4 3 x 2 = 6 4 x 2 = 8 5 x 2 = 10 6 x 2 = 12 7 x 2 = 14 8 x 2 = 16 9 x 2 = 18 10 x 2 = 20 11 x 2 = 22 12 x 2 = 24
R = i x T i12
for i=1 to 12
start
T = 2
Print i, T, R
i >12
end
#include <stdio.h>
void main()
{ int i, T=2, R;
for (i=1;i<=12; i++) {
R = i * T;
printf(“%d x %d = %d\n”, i,T,R);
}
getch();
}
74
Program-11 โปรแกรมแสดงการค านวณ ตาราง Latin Square
ขนาด 5x5 1 2 3 4 5 2 3 4 5 1 3 4 5 1 2 4 5 1 2 3 5 1 2 3 4 #include <stdio.h>
void main()
{ int i, j, T=5, L;
for (i=1;i<=T; i++) { /* row i*/
for(j=0;j<T;j++) { /* col j */
L = (i+j);
if (L>T) L = L%(T+1)+1;
printf("%d ", L);
}
printf("\n"); /* new row */
}
getch();
}
L>T L=Lmod(T+1)+1 yes
no
for i=1 to T
start
T = 5
Print L
i >T end
for j=0 to T-1
L = (i + j) jT-1
j > T-1
i T
Latin S
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9
1 1 2
1 2 3 1 2 3 4