Top Banner
1 1 Hardware, Software, Flowchart Good students never miss a class !!! 2 เนื้อหา อุปกรณ์ Hardware ประเภทของ Software ขั้นตอนการพัฒนาโปรแกรม การวิเคราะห์โจทย์ปัญหา การเขียนผังงาน การ Compile โปรแกรมภาษา C Don’t waste time, rereading
37
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Day 1

1

1

Hardware, Software, Flowchart

Good students never miss a class !!!

2

เนือ้หา อุปกรณ์ Hardware ประเภทของ Software ขัน้ตอนการพัฒนาโปรแกรม การวิเคราะห์โจทย์ปัญหา การเขียนผังงาน การ Compile โปรแกรมภาษา C

Don’t waste time, rereading

Page 2: Day 1

2

3

1.1 อุปกรณ์ Hardware คอมพวิเตอร์ หมายถึงเคร่ืองมือทางอิเลก็ทรอนิกส์ ท่ีใช้ในการประมวลผลข้อมลู ส่วนประกอบหลักของคอมพวิเตอร์ 1. หน่วยประมวลผลกลาง (CPU) 2. หน่วยความจ าหลกั (Main Memory) 3. หน่วยความจ าส ารอง (Secondary Storages) 4. หน่วยรับและแสดงผล (Input/Output)

Microcomputer

โครงสร้างบนเมนบอร์ด

RAM

CPU

ROM

Main Memory

Page 3: Day 1

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

Page 4: Day 1

4

(Hennessy)

8

(Main memory)

4

5 10

6

13

Page 5: Day 1

5

9

1.1.1 CPU หน่วยประมวลผลกลาง (Central Processing Unit) CPU ท าหน้าท่ีหลกัในการประมวลผลข้อมลู และควบคมุการท างานทัง้หมดของระบบ เป็นเสมือนสมองของคอมพิวเตอร์ในสว่นค านวณ

หน่วยประมวลผล (CPU) ใน PC เป็นหน่วยประมวลผลขนาดเลก็เรียกวา่ Microprocessor วางอยูบ่น แผงวงจรหลัก (Main Board) ซึง่ประกอบด้วยวงจร ท่ีเช่ือมต่อระหว่างหน่วยประมวลผล (CPU) กับหน่วยอ่ืนๆ (Memory, Disk, I/O)

10

Mainboard หรือ Motherboard

Page 6: Day 1

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

Page 7: Day 1

7

13

1.1.3 หน่วยความจ าส ารอง หน่วยความจ าส ารอง (Secondary Storages) เก็บโปรแกรมและข้อมลูแบบถาวร

ทัง้ท่ีก าลงัประมวลผลและยงัไมถ่กูประมวลผลในขณะนัน้

ชนิดของอุปกรณ์ ท่ีใช้เป็นหน่วยความจ าส ารอง Hard drive

Floppy disk drive

CD/DVD-ROM drive, …

14

1

2

3

Page 8: Day 1

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

Page 9: Day 1

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, ...

Page 10: Day 1

10

19

1.2.2.1 ภาษาเคร่ือง ภาษาเคร่ือง (Machine Language)

เป็นภาษาท่ีคอมพิวเตอร์เข้าใจ ซึง่เขียนเป็นรหสัเลขฐาน 2 (0/1) และค าสัง่มีความเก่ียวข้องกบัอปุกรณ์ของคอมพิวเตอร์โดยตรง แตม่นษุย์เข้าใจภาษาเคร่ืองได้ยาก ดงันัน้การเขียนโปรแกรมด้วยภาษาเคร่ืองจงึยากมาก

20

Page 11: Day 1

11

21

1.2.2.2 ภาษาแอสเซมบลี ภาษาแอสเซมบลี (Assembly Language)

เป็นภาษาท่ีเขียนโดยใช้ค าสัง่ท่ีมนษุย์เข้าใจ (English-like statements) แทนการใช้รหสัเลขฐาน 2 แต่ออกแบบมาเฉพาะส าหรับคอมพิวเตอร์แต่ละแบบ และผู้ เขียนโปรแกรมยงัต้องทราบข้อมลูท่ีเก่ียวข้องกบัอปุกรณ์ของคอมพิวเตอร์

ใช้ แอสเซมเบอร์ (Assembler) ในการแปลภาษาแอสเซมบลี ให้เป็นภาษาเคร่ือง

22

Page 12: Day 1

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

Page 13: Day 1

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

Page 14: Day 1

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

Page 15: Day 1

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

Page 16: Day 1

16

31

1.5 การเขียนผังงาน ผังงาน (Flowchart) เป็นแผนภาพ ท่ีใช้อธิบายล าดบัการท างานของโปรแกรมเป็นขัน้ตอน ประโยชน์ของ Flowchart

1. อธิบายล าดบัขัน้ตอนการท างานของโปรแกรม 2. ท าให้ตรวจสอบข้อผิดพลาดของโปรแกรมได้ง่าย 3. ท าให้ผู้ อ่ืนสามารถศกึษาการท างานและแก้ไข

โปรแกรมได้ง่าย

32

1.5.1 ประเภทของผังงาน ผังงานระบบ (System Flowchart)

แสดงขัน้ตอนการท างานภายในระบบงาน โดยจะกลา่วอยา่งกว้างๆ ผังงานโปรแกรม (Program Flowchart)

แสดงขัน้ตอนของค าสัง่ ท่ีใช้ในโปรแกรม

Page 17: Day 1

17

33

1.5.2 สัญลักษณ์ในผังงาน

การเร่ิมต้น และการสิน้สดุการท างาน ลกูศรแสดงทิศทางการท างาน และการไหลของข้อมลู การประมวลผล หรือการค านวณ การรับข้อมลู หรือแสดงผล (ไม่ระบชุนิดอปุกรณ์)

การแสดงผลทางเคร่ืองพิมพ์ (เป็นเอกสาร) การตรวจสอบเง่ือนไข (เพ่ือการตดัสนิใจเม่ือมีทางเลือก) จดุเช่ือมตอ่ของผงังาน

สัญลักษณ์พืน้ฐาน ท่ีนิยมใช้ใน Flowchart

การแสดงผลทางจอภาพ

34

1.5.3 รูปแบบของผังงาน แบบล าดับ (Sequence)

แบบมีทางเลือก (Selection)

แบบท าซ า้ (Looping)

Page 18: Day 1

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);

Page 19: Day 1

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 จะท างานเฉพาะเมื่อเงื่อนไขเป็นจริงเท่านัน้

Page 20: Day 1

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

Page 21: Day 1

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

Page 22: Day 1

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

Page 23: Day 1

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

Page 24: Day 1

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

Page 25: Day 1

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

Page 26: Day 1

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

Page 27: Day 1

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

Page 28: Day 1

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

Page 29: Day 1

29

เร่ิมต้นเขียนโปรแกรม

#include “stdio.h”

#include “conio.h”

main()

{

getch();

}

57

เขียนค าส่ังต่าง ๆ แทรกลงไป

58

Page 30: Day 1

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)

Page 31: Day 1

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();

}

Page 32: Day 1

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();

Page 33: Day 1

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

Page 34: Day 1

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

Page 35: Day 1

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

Page 36: Day 1

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

Page 37: Day 1

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