240-101 introduction to computer programming

237
240-101 240-101 Introduction to Introduction to computer computer programming programming

Upload: nadda

Post on 19-Mar-2016

35 views

Category:

Documents


0 download

DESCRIPTION

240-101 Introduction to computer programming. บทที่ 1. Introduction to Basic Computer and Internet แนะนำคอมพิวเตอร์ และอินเตอร์เน็ตเบื้องต้น. วัตถุประสงค์. อธิบายความหมาย ส่วนประกอบต่างๆ และพื้นฐานขั้นตอนการทำงานของคอมพิวเตอร์ได้ อธิบายระบบการทำงานและการใช้งานบริการในอินเตอร์เน็ตได้. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 240-101 Introduction to computer programming

240-101240-101Introduction to Introduction to

computer computer programmingprogramming

Page 2: 240-101 Introduction to computer programming

บทท 1 Introduction to Basic

Computer and Internetแนะนำคอมพวเตอร และอนเตอรเนต

เบองตน

Page 3: 240-101 Introduction to computer programming

Lesson1-3

วตถประสงค

อธบายความหมาย สวนประกอบตางๆ และพนฐานขนตอนการทำางานของคอมพวเตอรได

อธบายระบบการทำางานและการใชงานบรการในอนเตอรเนตได

Page 4: 240-101 Introduction to computer programming

Lesson1-4

1. ควมหมยของคอมพวเตอร

คอมพวเตอร หมายถง เครองคำานวณหรอประมวลผล ททำางานไดตามโปรแกรมทวางไว แลวประมวลผลลพธตามทตองการไดอยางถกตองและแมนยำา

เครองไมโครคอมพวเตอร- เครองคอมพวเตอรสวนบคคล (PC, Personal

Computer)ไดแก IBM PC, IBM-PC Compatible ไดรบความ

นยมในยคแรก– Macintosh มจดเดนดานงานพมพ

Page 5: 240-101 Introduction to computer programming

Lesson1-5

2. สวนประกอบของระบบกรทำงนในคอมพวเตอร

21. . ขอมลในระบบคอมพวเตอร ลกษณะของขอมลจะเปนบต (Bit) มาประกอบกน ขอมล 1 บตมเพยงสองสถานะ ใชสญลกษณ 1หรอ 0 แทน ซงตรงกบเลขฐานสอง (Binarynumber)โดยทวไปขอมลหนงตวอกษร (Character) หรอเรยกวา 1 ไบต (Byte) นนประกอบดวยขอมล 8บต ดงนนขอมล 1 ไบตมความแตกตางกน 28 หรอ 256 แบบ

Page 6: 240-101 Introduction to computer programming

Lesson1-6

รหสแอสก (ASCII, American Standard Code for Information Interchange) เปนรหสสากลทมขนาด 1

ไบต โดยรหส ASCII ตงแต - 0127 ใชแทนคาตวอกขระตางๆ ทงตวเลข ตวอกษร และรหสควบคมพเศษอนๆ เชน Ente

r, Backspace, Tab เปนตน และ รหส - 128255ใชแทน Graphic Character หรอ ตวอกษรพเศษของภาษาอนๆ ทไมใชภาษาองกฤษ เชน ภาษาไทย เปนตน 210 Byt e หรอ 1 , 0 2 4 Byte เรยกวา 1

Ki l oByt e (KB) 220 Byt e หรอ 1048576, , Byte เรยกวา

M MMMMMMM MM1 B)230 Byt e หรอ 1073741824, , , Byte เรยกวา

M MMMMMMM MM1 B)

Page 7: 240-101 Introduction to computer programming

Lesson1-7

22. . ระบบคอมพวเตอร (Computer System)

1. หนวยประมวลผลกลาง (CPU, Central Processing Unit) 2. หนวยความจำาหลก (Main memory) 3. หนวยรบสงขอมลเขาออก (Input/Output Unit, I/O Unit)

4. บส (Bus) 5. นาฬกา (Clock)

6. อปกรณรอบนอก (Peripheral Devices)

Page 8: 240-101 Introduction to computer programming

Lesson1-8

1. หนวยประมวลผลกลาง (CPU, Central Processing Unit)

เครองไมโครคอมพวเตอรจะเรยกวา ไมโครโพรเซสเซอร (Microprocessor) ทำาหนาทเหมอนเปนสมองของคอมพวเตอร ซงภายในประกอบดวย

- หนวยคำานวณและตรรกะ (ALU, Arithmetic and Logic Unit) ทำางานเกยวกบการคำานวณและเปรยบเทยบตางๆ

- หนวยควบคม (Control Unit) ทำาหนาทควบคมจงหวะการทำางานทงหมดภายในซพย

- หนวยความจำา (Memory Unit) ทำาหนาทเกบขอมลและผลลพธไวภายใน

Page 9: 240-101 Introduction to computer programming

Lesson1-9

ซพยจะใชสญญาณนาฬกา (Clock Signal ) กำาหนด จงหวะการทำางาน ดงนนการประมวลผลคำาสงจะเรว

หรอชาจงขนกบความถของสญญาณนาฬกา และขนาด ขอมลทประมวลผลบน ALU ดวย

80486 ตวประมวลผลขอมลขนาด 32 บต Clock 25- M33 HzPentium ตวประมวลผลขอมลขนาด 64

บต - Clock 75 233 MHz เปนตน

Page 10: 240-101 Introduction to computer programming

Lesson1-10

2. หนวยความจำาหลก (Main memory)

ทำาหนาทเกบคำาสงทจะใหคอมพวเตอรทำางาน และขอมลทใชโดยหนวยประมวลผลกลาง หรอ ผลลพธจากการประมวลผล– หนวยความจำาแรม (RAM, Random Access

Memory) สามารถเขยนและอานขอมลไดตลอดเวลา แตเสยขอมลเมอขาดไฟฟา

– หนวยความจำารอม (ROM, Read Only Memory) อานขอมลไดเทานน ขอมลจะไมสญหายแมปดเครอง ขอมลในหนวยความจำานจะมการบนทกในตอนเรมตนโดยบรษทผผลตเทานน

Page 11: 240-101 Introduction to computer programming

Lesson1-11

– หนวยความจำาแคช (Cache) เปนหนวยความจำา พเศษ มความเรวสงมาก เกบขอมลท CPU ใช บอยๆ ทำาใหเสยเวลานอยลงในการตดตอกบหนวย

ความจำาหลกซงใชเวลาในการอาน-เขยนขอมลมากกวา

Page 12: 240-101 Introduction to computer programming

Lesson1-12

3. หนวยรบสงขอมลเขออก (Input/Output Unit, I/O Unit)

ทำาหนาทเปนสอกลางการถายเทขอมลระหวางอปกรณรอบขางกบหนวยประมวลผลกลางหรอ หนวยความจำา หนวยรบสงขอมลเขาออกยงแบงเปนหนวยยอยทรบผดชอบเฉพาะอปกรณรอบนอกแตละอยางซงเรยกวาพอรต (port)

Page 13: 240-101 Introduction to computer programming

Lesson1-13

พอรตรบขอมลเขา (input port) ทำาหนาทรบขอมลอยางเดยว

พอรตสงขอมลออก (output port) ทำาหนาสงขอมลอยางเดยว

พอรตขนาน (parallel port) รบสงขอมลครงละ 8 บตขนานกน

พอรตอนกรม (serial port) จะรบสงขอมลทละบตเรยงกนจนครบ 8 บต

Page 14: 240-101 Introduction to computer programming

Lesson1-14

4. บส (Bus) ทำาหนาทถายเทขอมลระหวางหนวยตางๆ ของ

คอมพวเตอร บสม 3 ชนดทำาหนาทตางกนดงน บสตำาแหนง (address bus) สงสญญาณตำาแหนง

เพอระบตำาแหนงของหนวยความจำาหรอพอรตรบสง บสควบคม (control bus) สงสญญาณควบคม

เพอคอยรกษาจงหวะการตดตอระหวางหนวยตางๆ บสขอมล (data bus) สงสญญาณขอมลทเปน

ขอมลหรอคำาสง

Page 15: 240-101 Introduction to computer programming

Lesson1-15

5. นาฬกา (Clock)

ทำาหนาทใหจงหวะเพอใหการทำางานระหวางหนวยตางๆ ของระบบคอมพวเตอรสอดคลองกน เปนสญญาณความถทแมนยำาโดยใชผลกควอตซ( quartz) เปนตนกำาเนด

Page 16: 240-101 Introduction to computer programming

Lesson1-16

6. อปกรณรอบนอก (Peripheral Devices)

เปนอปกรณทใชรบและหรอสงขอมลจากภายนอกคอมพวเตอรใหกบคอมพวเตอร เชน การปอนขอมลผานทางคยบอรด (keyboard) การแสดงขอมลผานทางจอภาพหรอเครองพมพ รวมทงการเกบขอมลภายนอกจากหนวยความจำาแรมซงมราคาแพง ไวในหนวยความจำาสำารอง (secondary memory หรอ Auxiliary memory) ไดแกเทปแมเหลก (Magnetic Tape)

ฟลอปปดสก (floppy disk) หรอ ฮารดดสก (hard disk)

Page 17: 240-101 Introduction to computer programming

Lesson1-17

รปแสดงระบบของไมโครคอมพวเตอร

Page 18: 240-101 Introduction to computer programming

Lesson1-18

รปแสดงสวนประกอบเครองคอมพวเตอรสวนบคคล

Page 19: 240-101 Introduction to computer programming

Lesson1-19

สวนประกอบภายในของเครองพซสามารถแยกเปนสวนๆ ไดแก แผงวงจรหลก (Motherboard หรอ MainBoard), หนวยประมวลผลกลาง (CPU), ชองเสยบอปกรณภายนอก (Expansion Slot) ,หนวยความจำาหลก (RAM), หนวยความจำาสำารอง (Floppy Disk, Hard Disk ,CD-ROM Drive), การดแสดงผลจอภาพ (Graphic Card) ,การดเสยง (Sound Card) และ สวนภายนอกเครองไดแก เมาส (mouse) ,แปนพมพ (keyboard), ลำาโพง (speaker), จอภาพ (monitor) เปนตน

Page 20: 240-101 Introduction to computer programming

Lesson1-20

23. . คอมพวเตอรซอฟตแวร (Software Computer)

ระบบคอมพวเตอรจะทำางานได ประกอบดวยสอง สวนสำาคญไดแก ฮารดแวร (Hardware) และ

ซอฟตแวร (Software)– ฮารดแวร คอ อปกรณไฟฟา อปกรณ

อเลกทรอนกสตางๆของคอมพวเตอร รวมถง อปกรณตอพวง ซงมองเหนได จบตองได

– ซอฟตแวร คอ โปรแกรมหรอขอมลตางๆ ทนำาไปใชกบฮารดแวร

Page 21: 240-101 Introduction to computer programming

Lesson1-21

ซอฟตแวร แบงตามลกษณะการใชงานไดแก

1. ระบบปฏบตการ (OS, Operating System) เปนโปรแกรมทควบคมการทำางานของคอมพวเตอรและอปกรณตอพวงเปนโปรแกรมหลกททำาใหคอมพวเตอรทำางานได และเปนพนฐานสำาหรบการทำางานของโปรแกรมอนๆ เชน DOS ( Disk Operating Sys

- tem ), MS Windows, Windows9 5 , Unix,OS/ 2 เปนตน

Page 22: 240-101 Introduction to computer programming

Lesson1-22

2. โปรแกรมประยกตใชงน (Application Program)

เปนโปรแกรม ตางๆ ทใชเพอทำางานตามทตองการ ซงจดแบงเปนกลมไดดงน

โปรแกรมสำาหรบการสรางหรอพฒนาโปรแกรม (Compiler Program )

โปรแกรมอรรถประโยชน (Utility Program) โปรแกรมสำาหรบการทำางานดานเอกสาร โปรแกรมทจดการงานดานฐานขอมล (Database

Program)

Page 23: 240-101 Introduction to computer programming

Lesson1-23

โปรแกรมทจดการขอมลทเปนตาราง (Spread Sheet)

โปรแกรมทเกยวของกบการตดตอสอสารระหวาง คอมพวเตอร

โปรแกรมประยกตเฉพาะดานหรอเปนโปรแกรมสำาเรจรป (Package Program )

Page 24: 240-101 Introduction to computer programming

Lesson1-24

3. พนฐนกรใชงนอนเตอรเนต

อนเตอรเนต (Internet) เปนกลมเครอขายทาง คอมพวเตอร ประกอบดวยเครอขายคอมพวเตอรยอยท

ตอเชอมเขาดวยกนภายใตมาตรฐานการสอสารเดยวกน ผเปนสมาชกในอนเตอรเนตจะมทอยอเลกทรอนกส

(Electronic Mail Address) เพอรบสงจดหมาย อเลกทรอนกส (Electronic Mail) กบสมาชกอนไดทว

โลก หรอตดตอโตตอบกนผานทางคอมพวเตอรโดยตรง ได นอกจากนผใชอนเตอรเนตยงสามารถอานขาวจาก

กระดานขาวเครอขายทมผใชอนเตอรเนตสงมาจากทว โลก การขอถายโอนขอมลจากศนยบรการเครอขาย และ

การคนหาขอมลจากเครอขายเปนตน

Page 25: 240-101 Introduction to computer programming

Lesson1-25

สมาคมอนเตอรเนต (Internet Society) ซงมผใชและผใหบรการทวไปเปน

สมาชก โดยมสวนทใชตดตงอนเตอรเนตดงน- เลขทอยอนเตอรเนต (Internet Address)-ชอเครองในอนเตอรเนต- ระบบชอโดเมน (Domain name system)-ทอยทางอเลกทรอนกส(Electronic-mail address)-ผใหบรการอนเตอรเนต-การเชอมตอกบอนเตอรเนต-อปกรณทใชในการเชอมตอกบอนเตอรเนต

Page 26: 240-101 Introduction to computer programming

Lesson1-26

4. บรกรในระบบอนเตอรเนต

ประเภทของการใหบรการสามารถแบงออกเปน 6 ประเภท ไดแก

1. จดหมายอเลกทรอนกส2. ขนถายแฟมขอมล3. การใชโปรแกรมบนเครองคอมพวเตอรอน4. บรการคนหาแฟมขอมล5. กลมสนทนาและขาวสาร

6. บรการเวลดไวดเวบ (World Wide Web, WWW)

Page 27: 240-101 Introduction to computer programming

บทท 2Introduction to C

Programmingแนะนำาการเขยนโปรแกรมดวย

ภาษาซ

Page 28: 240-101 Introduction to computer programming

หวขอ1. แนะนำาภาษาซเบองตน

2. อนพทและเอาทพท 3. เครองหมายดำาเนนการ

Page 29: 240-101 Introduction to computer programming

Lesson1-29

1. แนะนำภษซเบองตน

– ตวแปรในภาษาซ– การเขยนคำาอธบายในภาษาซ– กลมคำาในภาษาซ– ตวแปรในภาษาซ– ตวประมวลผลกอน– คำาสงและนพจน– อนพทและเอาทพท

Page 30: 240-101 Introduction to computer programming

Lesson1-30

2. อนพทและเอทพท

– บทนำา– ASCII– ฟงกชนแสดงผลขอมล– ฟงกชนรบคาขอมล– ฟงกชนอนๆ ทใชในการรบคา และแสดงผลขอมล

Page 31: 240-101 Introduction to computer programming

Lesson1-31

3. เครองหมยดำเนนกร

– ตวดำาเนนการทางคณตศาสตร– ตวดำาเนนการสมพนธและตวดำาเนนการตรรกะ– ตวดำาเนนการประกอบ– ตวดำาเนนการบอกขนาด– ตวดำาเนนการแบบมเงอนไข– ลำาดบการทำางานกอน-หลงของตวดำาเนนการ– การเปลยนแปลงคาผลลพธเปนตวแปรชนดใหม

Page 32: 240-101 Introduction to computer programming

Lesson1-32

1. แนะนำภษซเบองตน

ภาษาซเปนภาษาททำางานไดอยางกวางขวาง เขาใจ งาย เขยนงาย ตลอดจนมคำาสงทอำานวยความ

สะดวกใหกบผเขยนทจะสามารถเรยกใชไดตามท ตองการ ซงผเขยนโปรแกรมควรจะตองศกษาและ

ทำาความเขาใจในกฏเกณฑเหลานนใหดเสยกอน กจะทำาใหสามารถนำาภาษาซมาใชงานไดอยางม

ประสทธภาพ กฏเกณฑของเครองมอทใชเขยนโปรแกรมภาษาซของแตละผผลต จะมขอแตกตาง

กนไปบางเลกนอย แตสวนใหญจะคลายๆ กน

Page 33: 240-101 Introduction to computer programming

Lesson1-33

1.1 รปแบบการทำางานของภาษาซ

ในภาษาซจะเขยนโปรแกรมโดยการเรยกใชแตละชดของโปรแกรมทเรยกวา ฟงกชน(Function) หรอในโปรแกรมภาษาอนอาจจะ เรยกวา โปรแกรมยอย หรอชดคำสงยอย(Procedure) นนเอง ฟงกชนเหลานจะมชออะไรกได กฟงกชนกได แตอยางนอยตอง ม 1 ฟงกชนทชอ main เพอใหโปรแกรมเรม

ทำางานทฟงกชนน

Page 34: 240-101 Introduction to computer programming

Lesson1-34

โปรแกรม กรทำงน ฟงกชน main

main ( ) { printf (“ My house”) ; printf (“is very beautiful”); triangle( ); box( ); prinf(“finish”) ; }triangle( ) triangleฟงกชน { /* draw triangle */ }box ( ) boxฟงกชน{ /* draw box */ }

รปท1.1 แสดงรปแบบการทำางานของภาษาซ

printf …….. printf…….. triangle box printf….

triangle

box

Page 35: 240-101 Introduction to computer programming

Lesson1-35

1.1 รปแบบการทำางานของภาษาซ

จากตวอยาง จะแสดงใหเหนวา ภาษาซ สามารถมไดหลายฟงกชน แตจะมฟงกชนหลก

คอ ฟงกชน main ในการควบคมการทำางาน ของโปรแกรมวาใหทำาฟงกชนใดบาง แตถา

โปรแกรมขนาดเลกไมมการทำางานทซบซอน อาจจะไมจำาเปนตองมฟงกชนอนๆ มฟงกชน

main เพยงฟงกชนเดยวกได

Page 36: 240-101 Introduction to computer programming

Lesson1-36

1.2 ฟงกชนในภาษาซ

ฟงกชนในภาษาซแบงไดเปน 2 สวน ไดแก ฟงกชนทเปนโปรแกรมหลกหรอฟงกชน

หลกทถกกำาหนดใหมเพยงฟงกชนเดยวเทานน นนกคอ ฟงกชน main สำาหรบฟงกชนใน

สวนท 2 เปนฟงกชนทไมใชฟงกชนหลก ซงมกฟงกชนกได

Page 37: 240-101 Introduction to computer programming

Lesson1-37

โครงสรางทวไปในฟงกชน

1.2.1 สวนหวของฟงกชน (Heading) เปน สวนทนยามชอฟงกชน กำาหนดชนดและ

จำานวนตวแปรทใชสงผานคาเขาออก มรปแบบดงน

ชนดพรม ( )เตอรทใชสงคออก ชอฟงกชน พรมเตอรทใชสงคเข

Page 38: 240-101 Introduction to computer programming

Lesson1-38

โครงสรางทวไปในฟงกชน

เชน int main(char) หมายถง ฟงกชน main มการรบ

พารามเตอรชนดเปน char และมการสงคา กลบออกมาเปนชนด int

Page 39: 240-101 Introduction to computer programming

Lesson1-39

1.2.2 สวนกลมคำาสง (Compound Statements) สวนนจะประกอบดวย 3 สวนยอย– สวนกำาหนดตวแปร (Variable Declaration) ใช

สำาหรบกำาหนดตวแปรเพอใชงานในฟงกชน– สวนคำาสง (Statement) ประกอบดวยคำาสงตางๆ

เรยงกนไป แตละคำาสงตองปดทายดวยเครองหมาย ; เสมอ

– เครองหมาย { } เครองหมายนทำาหนาทกำาหนดขอบเขตของกลมคำาสงในฟงกชน

Page 40: 240-101 Introduction to computer programming

Lesson1-40

สวนหวของฟงกชน (Heading){

สวนกำาหนดตวแปร (VariableDeclarations)

สวนคำาสง (Statements)}

Page 41: 240-101 Introduction to computer programming

Lesson1-41

1.3 กรคอมไพลและลงคโปรแกรมในภษซ การสรางโปรแกรมทสามารถใชงานไดขนมาโปรแกรม

หนง ในภาษาซมขนตอนดงน 1. ส รางตวโปรแกรมทเปนตวอกษร หรอเรยกวา

ซอรสไฟล (Source file) โดยมนามสกลเปน .c หรอ .cpp ขนมากอน โดยใชโปรแกรมทสามารถ

เขยนไฟลทเกบอกขระ (Editor) ใดๆ กได อกษร หรออกขระใดๆ นน จะตองอยในรปแบบของการ โปรแกรมภาษา (ขนตอนนคอการสรางโปรแกรมท

เปนภาษามนษยนนเอง)

Page 42: 240-101 Introduction to computer programming

Lesson1-42

2. คอมไพลเลอรของภาษาซ (C Compiler) จะทำาการ แปลงซอรสไฟล จากอกขระใดๆ ใหเปนรหสทเครอง

คอมพวเตอรสามารถเขาใจไดเกบไวในอกไฟลหนงเรยกวา ไฟลวตถประสงค (Object file) ทมนามสกล .obj (ขน

ตอนนเรยกวา กรคอมไพล เปนการแปลงภาษามนษยเปนภาษาเครองนนเอง)

3. ตวเชอม (Linker) จะทำาการตรวจสอบวาในโปรแกรมท เขยนขนนน มการเรยกใชงานฟงกชนมาตรฐานใด จาก

หองสมดของภาษาซ (C Library) บางหรอไม ถาม ตวเชอมจะทำาการรวมเอาฟงกชนเหลานนเขากบไฟล

วตถประสงค แลวจะไดไฟลทสามารถทำางานได โดยม นามสกลเปน .exe (ขนตอนนเรยกวา กรลงค เปนการ

รวมฟงกชนสำาเรจรปเขาไป แลวสรางไฟลททำางานได)

Page 43: 240-101 Introduction to computer programming

Lesson1-43

1.รปท 2 แสดงขนตอนการคอมไพลและลงคโปรแกรมภาษาซ

Source file

C Compiler

ComputerObject fileComputer Execute file

Linker Library

Page 44: 240-101 Introduction to computer programming

Lesson1-44

ตวอยาง 1 . สรางซอรสไฟลทมขอความ ทเกบโปรแกรมภาษาซ

ดงน

#include <stdio.h>void main(void){printf(“Hello World”);}

แลวเกบไวในไฟลชอ 1.c 2. ใชคำาสงเพอเรยกใหคอมไพลเลอรของภาษาซ

ทำางาน โดยคอมไพลเลอรจะทำาการแปลงอกขระจากซอรสไฟล ใหเปนรหสทคอมพวเตอรสามารถเขาใจได จะไดไฟลชอ 1.obj

Page 45: 240-101 Introduction to computer programming

Lesson1-45

3. ใชคำาสงเพอเรยกใหตวเชอมของภาษาซทำางาน ตวเชอมจะทำาการรวมไฟลหองสมดทชอ stdio.h เขามา (ตามขอความ #include …) แลวสรางไฟลทสามารถทำางานไดชอ 1.exe **หมายเหต คำาวา printf ในตวโปรแกรม คอฟงกชนมาตรฐานหนงทพมพขอความออกทางหนาจอ โดยขนตอนและวธการทำางานของฟงกชน printf จะอยในไฟลหองสมดชอ stdio.h ดงนน ถาตวเชอมไมทำาการรวมไฟลหองสมดทชอ stdio.h เขาทำา จะทำาใหไมสามารถเรยกใชงานฟงกชน printf ไดเลย

Page 46: 240-101 Introduction to computer programming

Lesson1-46

1 .4 โครงสรงของโปรแกรมทเขยนดวยภษซ โครงสรางของโปรแกรมทเขยนดวยภาษาซแบงยอย

ไดเปน 3 สวนดงน– 141. . สวนเรยกใชไฟลอนๆ เปนสวนทบอกใหคอม

ไพลเลอรไปดงไฟลอนทกำาหนดมาแปลรวมดวย ไฟลเหลา นอาจจะเปนไฟลมาตราฐานทมใหแลวในภาษาซ หรอเปน

ไฟลทเขยนขนมาใหมกได โดยสวนใหญมกจะเปนไฟลทม นามสกลเปน .h

– 142. . สวนกำาหนดชอในโปรแกรม เปนสวนทใช กำาหนดคาคงท ตวแปร และคาอนๆ ทตองการ

– 143 สวนคำาสง จะประกอบดวยคำาสงตางๆ หรอ ฟงกชนอนๆ ทใชในการทำางานของโปรแกรม

Page 47: 240-101 Introduction to computer programming

Lesson1-47

ตวอยง โครงสรงโปรแกรมทเขยนดวยภษซ ดงรปท 2.2

#include <stdio.h> สวนเรยกใชไฟลอน

char a; สวนกำาหนดชอint main(void){

a = 23;

printf(“Hello World”); สวนคำาสงreturn a;

}

Page 48: 240-101 Introduction to computer programming

Lesson1-48

Output

ผลทจากการรนโปรแกรม จะไดขอความบนหนาจอวาHello World

Page 49: 240-101 Introduction to computer programming

Lesson1-49

1.5 รปแบบคำสงในภษซรปแบบคำาสงในภาษาซ มกฏเกณฑในการเขยนคำาสง ดงน

1. คำาสงทกคำาสงตองเขยนดวยอกษรตวเลกเสมอ เชนคำาสง printf , scanf , for

2. ทกคำาสงจะใชเครองหมาย ; แสดงการจบของคำาสง เชนprintf(“Hello”) ;

3. การเขยนคำาสง จะเขยนไดแบบอสระ (Free Format) คอ สามารถเขยนหลายๆคำาสงตอกนได เชน

printf(“Hello”); printf(“Goodbye”); a = 95;

หมายเหต แตเพอความเปนระเบยบและอานงาย ควรจะ เขยน 1 คำาสงตอ 1 บรรทด

Page 50: 240-101 Introduction to computer programming

Lesson1-50

1.6 กรเขยนคำอธบย (Comment) ในภษซ

ภาษาซนยมการเขยนขอความอธบายการทำางานในสวนตางๆของโปรแกรมเพอใหเขาใจและอานโปรแกรมงาย

ขน การเขยนอธบายจะใชเครองหมาย /* และ */ ครอมขอความทตองการอธบาย ดงน

/* ……. ……ขอความทตองการอธบาย .*/แตถาตองการเขยนอธบายหลายๆบรรทดจะเขยนไดดงน

/* ………………………………………………. ………ขอความทตองการอธบาย .…………………………………………..*/

Page 51: 240-101 Introduction to computer programming

Lesson1-51

1 .7 กลมคำในภษซ 1.7.1 คำสงวน (Keywords) คอคำาทภาษาซ

กำาหนดไวกอนแลว เพอใชงานaut o def aul t fl oat register struct

volatile br eakdo far return swi t ch while

case doublegot o short t ypedef char el se i f

signedunion const enumint si zeof

unsigned continueextern long st at i c void

Page 52: 240-101 Introduction to computer programming

Lesson1-52

1.7.2 คำทผใชตงขนใหม (User Defines words)

คอ กลมอกษรทนยามขนใชในโปรแกรม โดยผเขยนโปรแกรมกำาหนดขนเอง มขอกำาหนดดงน– ตวอกษรภาษาองกฤษตวพมพเลกและตวพมพใหญ

ภาษาซถอวาเปนคนละตวกน เชน test และ Test เปนตวแปรคนละตวกน

– ตวอกษรตวแรกตองเปนตวอกษรหรอ _ จะเปนตวเลขไมได

– ตวอกษรทไมใชตวแรกจะเปนตวอกษรหรอ _ หรอตวเลขกได

Page 53: 240-101 Introduction to computer programming

Lesson1-53

– กอนการใชชอใดๆ ตองนยามกอนเสมอ – หามตงชอซำากบคำาสงวน– ภายในกลมคำาสง สามารถกำาหนดชอขนใหมได ชอนนจะถกใช

งานภายในกลมคำาสง และกลมคำาสงทยอยลงไปเทานน หากชอในกลมคำาสงไปซำากบทนยามไวภายนอก จะถอเอาชอทนยามใหมเปนหลก

**หมายเหต ความยาวชอจะขนอยกบตวแปรในภาษาซ สำาหรบโปรแกรม Borland C ได 32 ตวอกษร

Page 54: 240-101 Introduction to computer programming

Lesson1-54

18 ตวแปร (Variable) ในภษซ ตวแปร หมายถง ชอเรยกแทนพนทเกบขอมลในหนวยความจำา

มชนด ของขอมล หรอแบบของตวแปรคอ char, int, long, float, double, unsigned int, unsigned long int, – การกำาหนดตวแปร ทำาได 2 แบบ คอ

1. กำาหนดไวนอกกลมคำาสง หรอฟงกชน เรยกตวแปรนวา Global Variable กำาหนดไวนอกฟงกชน ใชงานไดทง

โปรแกรม มคาเรมตนเปน 0 (กรณไมไดกำาหนดคาเรมตน) 2. กำาหนดไวในกลมคำาสง หรอฟงกชน เรยกตวแปรนวา Local Variable กำาหนดไวภายในฟงกชน ใชงานไดภายในฟงกชนนนและไมถกกำาหนดคาเรมตนโดยอตโนมต

Page 55: 240-101 Introduction to computer programming

Lesson1-55

การประกาศตวแปร มลกษณะดงน

ชนดตวแปร ชอตวแปร , ชอตวแปร , ชอตวแปร,.....; ชนดของขอมลในภาษาซ

1. ตวแปรแบบ char เปนตวแปรทใชสำาหรบเกบขอมลทเปนตวอกษร ขนาด 1 ตว โดยใช

เนอทในการเกบ 1 ไบต ตวอยางตวแปรชนดน ‘เชน A’ , ‘b’ , ‘1’ , ‘?’

2. ตวแปรแบบ integer เปนตวแปรทใชสำาหรบการเกบคาตวเลขท เปนจำานวนเตมทมคาระหวาง -32768 ถง 32767 ใชเนอทในการ

เกบ 2 ไบต ตวอยางตวแปรชนดน เชน 5 -10 2534

Page 56: 240-101 Introduction to computer programming

Lesson1-56

3. ตวแปรแบบ long เปนตวแปรทเกบคาเปนจำานวนเตมทมจำานวนไบตเปน 2 เทาของจำานวนเดม (มกจะใชเปนคำานำาหนา

ตวแปร เชน long int ) 4. ตวแปรแบบ float เปนตวแปรทใชเกบขอมลทเปนเลข

ทศนยม โดยจะเกบอยในรป a.b x 10e ใชพนทในการเกบ 4 ไบต มคาระหวาง 3.4E-38 ถง 3.4E+38 หรอ แสดงเปน

เลขทศนยมไดไมเกน 6 ตำาแหนง ตวอยางตวแปรชนดน เชน10.625 -6.67 5. ตวแปรแบบ double เปนตวแปรทเกบขอมลทเปนเลข

ทศนยมเหมอนกบ float แตจะใชพนทในการเกบมากกวาเดม2 เทา คอมขนาด 8 ไบต มคาระหวาง 1.7E-308 ถง1.7E+308

6. ตวแปรแบบ unsigned แสดงวาเปนตวแปรทเกบคาเปนจำานวนเตมแบบไมคดเครองหมาย (เปนบวกเทานน ) มกจะใช

เปนคำานำาหนาตวแปร ตวอยางการใชงาน เชน unsigned int

Page 57: 240-101 Introduction to computer programming

Lesson1-57

ชนด ขนาดความกวาง ชวงของคา Char 8 บต ASCII character (-128 127)ถงUnsigned char 8 บต 0-255Int 16 บต -32768 32767ถงlong int 32 บต -2147483648 2147483649ถงFloat 32 บต 3.4E-38 3.4E+38 6 ถง หรอทศนยม ตำาแหนงDouble 64 บต 1.7E-308 1.7E+308 12 ถง หรอทศนยม ตำาแหนงUnsigned int 16 บต 0 65535ถงUnsigned long int 32 บต 0 4294967296ถง

ตารางท1.1 แสดงชนดและขนาดของขอมลทใชในภาษาซ

Page 58: 240-101 Introduction to computer programming

Lesson1-58

ตวอยงท 1 บรรทดท 1. #include<stdio.h> บรรทดท 2. #define PI 3.14159 บรรทดท 3. int area; /* global variable */ บรรทดท 4. main( ) บรรทดท 5. { float radius; /* local variable */ บรรทดท 6. float process() /* function declaration

*/ บรรทดท 7. printf (“Radius = ?”); scanf (“%f”,radius); บรรทดท 8. process( ); บรรทดท 9. printf(“Area = %f”,area); บรรทดท 10. printf(“%f”,radius);

}

บรรทดท 11. float process( ) บรรทดท 12. { float radius; /* local variable */ บรรทดท 13 printf(“Radius=?”); scanf (“%f”,radius); บรรทดท 14 area=PI*radius*radius; บรรทดท 15 printf(“Area = %f”,area); บรรทดท 16 printf(“%f”,radius);

}

Page 59: 240-101 Introduction to computer programming

Lesson1-59

ตวอยงท 2 int a ; หมายความวา ประกาศตวแปร a เปนตวแปรทใชสำาหรบเกบคาทเปน

เลขจำานวนเตมทมคาอยระหวาง -35768 ถง 32767 ตวอยงท 3 int num1=8;

หมายความวา ประกาศตวแปร num1 เปนตวแปรทเกบคาตว เลขจำานวนเตม โดยใหคาเรมตนเทากบ 8

ตวอยงท 4 float money,price ; หมายความวา money และ price เปนตวแปรทใชสำาหรบเกบคาทเปน เลขทศนยม โดยจะใหตำาแหนงทศนยมไดไมเกน 6 หลก

ตวอยงท 5 char ch=’A’ หมายความวา ประกาศตวแปร ch เปนตวแปรทเกบคาตวอกษรเพยง

1 ‘ตว คอ ตวอกษร A’ ตวอยงท 6 unsigned long int test;

หมายความวา ประกาศตวแปร test เปนตวแปรทใชสำาหรบเกบคาทเปน เลขจำานวนเตม แบบยาวทไมคดเครองหมาย

Page 60: 240-101 Introduction to computer programming

Lesson1-60

ตวอยงเพมเตม

char a,b,c,d; /* ตวแปร a,b,c,d เปนตวแปรชนดcharacter */

unsigned e; /* ตวแปร e เปนตวแปรชนด unsigned int */

char key = ‘A’; /* ตวแปร key เปนตวแปรชนด character ‘มคา A’ */

char name = ‘SAM’ /* ตวแปร name เปนตวแปรชนด character ม

”คา SAM” */

Page 61: 240-101 Introduction to computer programming

Lesson1-61

19 ตวประมวลผลกอน(Preprocessor) คอ สวนทคอมไพเลอรจะตองทำากอนทำาการแปล

โปรแกรม คำาสงของตวประมวลผลกอนจะนำา หนาดวยเครองหมาย # มคำาสงตางๆ ตอไปน

#include #define #if #program#endif #error #ifndef #undef#elif #else#ifdef

คำาสงทนาสนใจม 2 คำาสงคอ

Page 62: 240-101 Introduction to computer programming

Lesson1-62

19.1. #include ทำาหนาทแจงใหคอมไพเลอรอานไฟลอนเขามา

แปลรวมดวยเชน #include <dos.h>

อานไฟล dos.h จากไดเรคทรอรทกำาหนด#include “sample.h”

อานไฟล sample.h จากไดเรคทรอรปจจบนหรอทกำาหนด

Page 63: 240-101 Introduction to computer programming

Lesson1-63

192. . #define ทำาหนาทใชกำาหนดคาคงท ทเปน ชอแทน คำา

นพจน คำาสง หรอคำาสงหลายคำาสง

เชน #define TEN 10 กำาหนดตวแปร TEN แทนคา 10

#define PI 3.141592654 กำาหนดตวแปร PI แทนคา 3.141592654

Page 64: 240-101 Introduction to computer programming

Lesson1-64

คคงท constant constant คอ คาของขอมลทมจำานวน

แนนอน เขยนได 3 ลกษณะ คอ•1 คคงทจำนวนเตม เขยนอยในรปตวอกษร อาจม

เครองหมายลบนำาหนา•2 คคงทจำนวนจรง เขยนในรปตวเลขมทศนยม•3 คคงททหมยถงรหสตวอกษร (ตวอกษรถกจำาใน

รปแบบตวเลข ตามรหส ASCII)

Page 65: 240-101 Introduction to computer programming

Lesson1-65

1.10 คำสงและนพจน (Statement and Expression)คำสง, ขอคำสง (Statement) คอขนตอนในการ

ทำางานหนงขนตอน ทกคำาสงตองจบดวย เครองหมาย ;

กลมคำสง คอคำาสงทอยในวงเลบปกกา {} นพจน (Statement) คอการกระทำาเพอใหได

ผลลพธ คาหนงคา ประกอบไปดวยตวถกกระทำา(Operands) และตวกระทำา (Operators) เขยน

เรยงกนไป เชน 3 * 2 - 1 + 7 หรอ a * 5 เปนตน

Page 66: 240-101 Introduction to computer programming

Lesson1-66

2. อนพท และเอทพท (Input and Output) อนพท คอ การรบคาขอมลของผใชเขาไปใน

เครองคอมพวเตอร อปกรณ อนพทมาตรฐาน ไดแก คยบอรด สแกนเนอร หรอ เมาส

เอาทพท คอ การแสดงผล ขอความ ขอมล หรอ คาตวแปรใดๆ ออกมาแสดงใหกบผใชทาง

อปกรณแสดงผลเอาทพทตางๆ อปกรณเอาทพตมาตรฐาน ไดแก จอภาพ ลำาโพง หรอ เครองพมพ

Page 67: 240-101 Introduction to computer programming

Lesson1-67

2.2 แอสก (ASCII)

แอสกเปนรหสแทนตวอกษรทนยมใชกน มากทสด ยอมาจาก American Standard

Code for Information Interchange รหสนแทนตวอกษรได 128 ตว

Page 68: 240-101 Introduction to computer programming

Lesson1-68

อกขระหรอตวอกษร (Characters) คอรหสทใชแทนภาพเชน

’A’ หมายถงอกษร A‘4’ หมายถงอกษร 4

สตรง (String) คอกลมขอมลทประกอบไปดวยตวอกขระ ทเขยนเรยงกนไป ใชตวแปรชนด อกขระในการ

เกบภาพขอมลตอหนงหนวยตวอกษร โดยจะม “…เครองหมาย .”

Page 69: 240-101 Introduction to computer programming

Lesson1-69

2.3 ฟงกชนในการแสดงผลขอมล

ฟงกชนในการแสดงผลขอมลในภาษาซจะม ฟงกชนมาตรฐานในการแสดงผลขอมล หรอ

คาตวแปรออกมาทางจอภาพ ฟงกชนนนคอ ฟงกชน printf

printf ( control , argument list ) ;

Page 70: 240-101 Introduction to computer programming

Lesson1-70

สวน control สวนของ control “ จะตองเขยนภายใตเครองหมาย

” ซงสามารถเขยนได 2 ลกษณะ คอ– เปนขอความทตองการใหแสดงผลออกมา เชน

printf ( “sum of x = ”); คอ เปนการสงใหพมพขอความวา sum of x =

ออกมาทหนาจอ– เปนรหสรปแบบ (Format Code) ทใชในการแสดงผล

ซงทกรหสรปแบบจะตองอยตามหลงเครองหมาย % รหสรปแบบทนยมใชไดแก

Page 71: 240-101 Introduction to computer programming

Lesson1-71

รหสรปแบบ ชนดตวแปร ลกษณะกรแสดงผลออกจอภพ%d int ใชแสดงขอมลทเปนเลขจำานวนเตมฐานสบ%ld long int longใชแสดงขอมลทเปนเลขจำานวนเตมฐานสบแบบ%u unsigned int unsignedใชแสดงขอมลทเปนเลขจำานวนเตมฐานสบแบบ%c char ใชแสดงขอมลทเปนตวอกษร%s string ใชแสดงขอมลทเปนตวแปรสตรงหรอชดตวอกษร%o int (octal) ใชแสดงขอมลทเปนเลขฐานแปด%x int (hexa) ใชแสดงขอมลทเปนเลขฐานสบหก%f float ใชแสดงขอมลทเปนเลขทศนยมทไมมเลขยกกำาลง%e float, double ใชแสดงขอมลทเปนเลขทศนยมทมเลขชกำาลง%lf double doubleใชแสดงขอมลทเปนเลขทศนยมแบบ

ตรงท2.1 แสดงรหสรปแบบทใชในฟงกชนprintf

Page 72: 240-101 Introduction to computer programming

Lesson1-72

สวน argument list สวนของ argument list เปนชดตวแปร คา

คงท หรอ นพจนทตองการนำามาแสดงผล ถา มมากกวา 1 คาจะแยกออกจากกน โดยใช

เครองหมายคอมมา ( , ) *หมายเหต สวน argument list นจะมกตอ

เมอในสวน Control มการใชรหสรปแบบ แต ถาในสวน Control เปนการแสดงขอความ

ธรรมดา กไมจำาเปนตองม Argument list

Page 73: 240-101 Introduction to computer programming

Lesson1-73

Escape Sequence คอรหสพเศษทแทรกลงไปในคาคงทสตรง

เพอใชควบคมการแสดงผลของตวอกษรใน ลกษณะตางๆ โดยการเขยนจะตองม

เครองหมาย \ (Back-Slash) นำาหนา รหสควบคมการแสดงผลดไดจาก ตารางท 1

Page 74: 240-101 Introduction to computer programming

Lesson1-74

Escape Sequence ค หนท\a 0x07 เสยงดงออกลำาโพงหนงครง\b 0x08 cursor เลอน ไปลบตวอกษรทางซายมอหนงตวอกษร\f 0x0c ขนหนาใหม\n 0x0a ขนบรรทดใหม\r 0x0d cursor เลอน ไปทางซายมอสดของบรรทด\t 0x09 tab ตง ในแนวนอน\v 0x0b tab ตง ในแนวตง\\ 0x5c \เครองหมาย\ 0x2c เครองหมาย

\ 0x22 เครองหมาย

\? 0x3f ?เครองหมาย

ตรง 2.2 ท Escape Sequence แสดงตว ตงๆ ทมใชในภษซ

Page 75: 240-101 Introduction to computer programming

Lesson1-75

ตวอยง 1 การใชงานฟงกชนprintf #include<stdio.h>main( ){ int sum=5; float e=11.55;

printf(“This is the test Program. “);printf(“The result is %d \n”,sum);printf(“The result is %f %e “,e,e);

}

ผลลพธThis is the test Program. The result is 5The result is 11.550000 1.155000e+01

Page 76: 240-101 Introduction to computer programming

Lesson1-76

ตวอยง 2 การใชงานฟงกชนprintf#include<stdio.h>main(){ char a=’A’ ; char name=”Aree”; int x,y;

printf(“What is the first character \n”);printf(“The first character is %c \n\n”,a);x=10; y=15;printf(“x+y= %d \n”,x+y);

printf(“ %d – 5 = %d \n”,y,y-5);x=65;printf(“x is %c”,x);

printf(“This program run by %s”,name);}

Page 77: 240-101 Introduction to computer programming

Lesson1-77

ผลลพธ

What is the first characterThe first character is A

x+y=25 15-5=10

x is 65 This program run by Aree

Page 78: 240-101 Introduction to computer programming

Lesson1-78

ฟลด (field) คอการกำาหนดพนทและรปแบบในการแสดงคา โดย

จะเขยนเปนเครองหมาย + หรอ - เปนตวเลข หรอ จดทศนยมผสมกบตวเลขแทรกอยภายในฟอรเมต

ตวอยางเชน

#include <stdio.h>void main(){

printf(|1234567890|\n);printf(|%10s|\n,price);

}

Page 79: 240-101 Introduction to computer programming

Lesson1-79

จากตวอยางจะเปนการสงใหแสดงขอความ price ในพนททจองไว 10 ตวอกษร เราจะใชตวเลขใน การกำาหนดพนท โดยตวเลขทกำาหนดนจะอย

ระหวางเครองหมาย%กบฟอรเมตบอกชนดของ ตวแปร ผลลพธของโปรแกรม ในตวอยางท 3

|1234567890| | price|

Page 80: 240-101 Introduction to computer programming

Lesson1-80

24. ฟงกชนในการรบคาขอมล

ฟงกชนในการรบคาขอมลในภาษาซจะมฟงกชนมาตรฐานในการรบคา ขอมล หรอ คาตวแปร

ออกมาทางจอภาพ ฟงกชนนนคอ ฟงกชนscanf

รปแบบ– scanf ( control , argument list );

Page 81: 240-101 Introduction to computer programming

Lesson1-81

ตวอยง 1 การใชฟงกชน scanf

char a; int b; charname[22];

– /*กำาหนดตวแปรชอ name มเนอท 22 ชอง ใช

เกบอกขระได 21 ตวและปดทายขอความดวย

อกขระ ’\0’ อกหนงตวรวมเปน 22 ตว */

Page 82: 240-101 Introduction to computer programming

Lesson1-82

scanf(“%c %d”,&a,&b); • /* scan ขอมลจากคยบอรดเปนชนด char เกบในตวแปร a

และ scan ขอมลจากคยบอรดเปนชนด int เกบในตวแปร b */

scanf(“%s”,name);• /* scan ขอมลจากคยบอรดเปนชนด string เกบในตวแปร

name */

Page 83: 240-101 Introduction to computer programming

Lesson1-83

ตวอยงท 2 การใชฟงกชนscanf #include<stdio.h>main( ){ int x1; char letter[30]; scanf(“%d”,&x1); scanf(“%s”,letter); }

โปรแกรมรบคา integer ไปเกบไวในตวแปร x1 และรบคาชดตวอกษรทมความยาวไมเกน 30 ตว

อกษรไปเกบไวในตวแปร letter

Page 84: 240-101 Introduction to computer programming

Lesson1-84

25 ฟงกชนอนๆ ทใชในการรบและแสดงขอมล 2 .5 .1 ฟงกชน getchar ( ) getchar ( ) เปนฟงกชนทใชรบขอมล

เขามาทางแปนพมพทละ 1 ตวอกษร โดยตอง กด enter ทกครงเมอสนสดขอมล และขอมล

ทปอนจะปรากฎใหเหนบนหนาจอภาพดวย

Page 85: 240-101 Introduction to computer programming

Lesson1-85

getchar ( ) ;#include<stdio.h>main ( ){ char ch;

ch=getchar ( ); }

เครองจะรอรบขอมลจากแปนพมพทผใชปอน จำานวน 1 ตวอกษรเกบไวในตวแปร ch หลงจากทผใชตอง กดปม enter เพอใหฟงกชนรบคาขอมล

Page 86: 240-101 Introduction to computer programming

Lesson1-86

getch ( ) ;#include <stdio.h>main ( ){ char x; x = getch( ) ; }

เครองจะรอรบขอมลจากแปนพมพเขามา 1 ตว เพอนำามาเกบไวในตวแปร x โดยผใชไมตองกด

enter หลงจากทปอนขอมลเสรจแลว

Page 87: 240-101 Introduction to computer programming

Lesson1-87

gets ( n ) ;

#include <stdio.h>main( ){ char name[10];

gets(name); }

เครองจะจองทตวแปรชดทชอ name ซงเปนอกขระ ไว 10 ตว และรอรบคาทเปนขอความเขา

มาเกบไวในตวแปรชดทชอ name ไดยาวไมเกน 9 ตวอกษรเพอให name ตวท 10 (ตวสดทาย)

เกบ \0 เอาไว

Page 88: 240-101 Introduction to computer programming

Lesson1-88

putchar ( ) ;#include<stdio.h>main ( ){ char x;

x=getch ( ) ;printf (“Here is the output \n”) ;putchar ( x );

}

– ลกษณะขอมลทปอนA– ผลลพธHere is the outputA

Page 89: 240-101 Introduction to computer programming

Lesson1-89

puts ( n ) ;

#include <stdio.h>main ( ){ char name [10];

gets (name) ;puts (name);

}

เครองจะนำาคาทเกบในตวแปรชด name มาแสดงผลบนจอภาพ

Page 90: 240-101 Introduction to computer programming

Lesson1-90

3 . เครองหมยดำเนนกร (Operators)

เครองหมายดำาเนนการ (Operators) หรอ ตวดำาเนนการ นนกำาหนดการการกระทำาทเกดขนกบตวแปรและคาคงท โดยทนพจนประกอบดวยตวแปร และคาคงท และใชตวดำาเนนการคำานวณเพอใหไดคาตวดำาเนนการในภาษาซ

Page 91: 240-101 Introduction to computer programming

Lesson1-91

31. ตวดำเนนกรทงคณตศสตร(Arithmetic Operators)

เครองหมย ควมหมย ตวอยง+ การบวก A+B- การลบ A-B* การคณ A*B/ การหาร A/B% (Modulo)การหารเอาแตเศษไว 5%3=1 2 2 เศษ จะเกบแตเศษ เอาไว-- 1การลดคาลงครงละ A -- A=A-1จะเหมอนกบ++ 1การเพมคาขนครงละ A++ A=A+1จะเหมอนกบ

3ตารางท .1 แสดงประเภทของตวดำาเนนการทางคณตศาสตร

Page 92: 240-101 Introduction to computer programming

Lesson1-92

ลำดบของกรโอเปอเรชน

โอเปอเรเตอร ลำดบของกรโอเปอเรชน( ) ซายไปขวา- ซายไปขวา * - คอแสดงความเปนลบของตวเลข* / ซายไปขวา+ - ซายไปขวา * - คอเครองหมายลบคาตวเลข

ตารางท3.2 แสดงลำาดบของการทำางานของตวดำาเนนการทางคณตศาสตร Precedenceตามกฎ

Page 93: 240-101 Introduction to computer programming

Lesson1-93

ตวดำเนนกรเพม และลดค (Increment & Decrement)

- ตวดำาเนนการเพมคา ++ จะบวกหนงเขากบตวถก ดำาเนนการ

– ตวดำาเนนการลดคา -- จะลบหนงออกจากตวถก ดำาเนนการ

ตวอยง ถา n มคา 5x = n++; จะเปนการกำาหนดคา x ใหกบ5x = ++n; จะเปนการกำาหนดคา x ใหกบ6

Page 94: 240-101 Introduction to computer programming

Lesson1-94

32. ตวดำเนนกรสมพนธและตวดำเนนกร ตรรกะ (Relational, Equality, and

Logical Operators) Operator เครองหมย ควมหมย

ตวดำเนนกรสมพนธ < นอยกวา(Relational Operator) > มากกวา

<= นอยกวาหรอเทากบ>= มากกวาหรอเทากบ

ตวดำเนนกรเทกบ == เทากบ(Equality Operator) != ไมเทากบตวดำเนนกรตรรกะ ! นเสธ(Logical Operator) && และ

|| หรอ

ตรงท3.3 แสดงตวดำเนนกรสมพนธและตวดำเนนกรตรรกะ

Page 95: 240-101 Introduction to computer programming

Lesson1-95

321. . ตวดำเนนกรสมพนธ (Relational Operator)

เปนเครองหมายทใชในการเปรยบเทยบและตดสนใจ ตวอยางการใชงาน เชน

a<3 / * ถา a มคาเปน 5 ประโยคนจะไดผลลพธเปน 0 (เทจ ) * /a>b */ ถา a=10 b=8 ประโยคนจะไดผลลพธเปน 1 (จรง *) /-1 >= (2.2*X+3.3)a<b<c

/* รปแบบถกตอง แตลำาดบการวางตวแปรอาจทำาใหสบสนได โดยจะทำาการเปรยบเทยบคา b และ c กอน จงนำาผลลพธมาเปรยบเทยบกบ a */

Page 96: 240-101 Introduction to computer programming

Lesson1-96

3.2.2 ตวดำเนนกรเทกบ (Equality Operator) ตวดำาเนนการเทากบ ใชในการเปรยบเทยบคา 2

คา วามคาเทา หรอไมเทากน

ตวอยางการใชงาน เชนc == ‘A’ */ ถาตวแปร c เกบคาอกขระ A ผลลพธจะไดคาจรง */k != -2 * ถาตวแปร k เกบคาตวเลข – 2 ผลลพธจะไดคาเทจ */x+y == 2 * z – 5

Page 97: 240-101 Introduction to computer programming

Lesson1-97

323. . ตวดำเนนกรตรรกะ (Logical Operator) ตวดำาเนนการตรรกะ ใชในการเปรยบเทยบ และ

กระทำาทางตรรกะกบคาตวเลข หรอคาทอยใน ตวแปร ผลลพธทได จะมเพยง 2 คาเชนเดยวกบผลลพธของตวดำาเนนการสมพนธคอ จรง และ เทจ

ตวอยางการใชงาน!a */ ถาคาความจรงของตวแปร a มคาจรง ผลลพธจากการนเสธจะไดคาเปนเทจ */!(x+7.7)

Page 98: 240-101 Introduction to computer programming

Lesson1-98

ตวดำเนนกร && และ || ตวอยางการใชงาน

a&&b* a และ b ถาคาความจรงของ a เปนจรง และ คาความจรง b เปนจรงผลลพธทไดจะมคาความจรงเปนจรง */

a || b * a หรอ b ถาคาความจรงของ a เปนเทจ และ คาความจรง b เปนเทจผลลพธทไดจะมคาความจรงเปนเทจ */

Page 99: 240-101 Introduction to computer programming

Lesson1-99

33. ตวดำเนนกรประกอบ (Compound Operator)

ตวดำาเนนการประกอบ คอ ตวดำาเนนการทเปนรปแบบยอ ของตวดำาเนนการ+ตวแปรทถกดำาเนนการ

ตวอยางเชนi = i + 1; ตวดำาเนนการประกอบคอ i += 1;

i = I – a; ตวดำาเนนการประกอบคอ i - = a;i = 1 * (a + 1); ตวดำาเนนการประกอบคอ i = *=a+1;

Page 100: 240-101 Introduction to computer programming

Lesson1-100

34 . ตวกระทำบอกขนด (Sizeof Operator)

ตวอยาง

int ABC;printf(“%d”,sizeof(ABC));

ผลลพธ2

Page 101: 240-101 Introduction to computer programming

Lesson1-101

35 . ตวดำเนนกรแบบมเงอนไข (Conditional Operator)#include<stdio.h>void main(void)

{ int a,b;a = 15;b = ((a+5)? (a+1) : 0);print(“b= %d\n”,b);a=0;b=((a+5)?(a+1) : 0);printf(“b= %d\n”,b);a=5;b=((a+5)?(a+1) : 0);printf(“b= %d\n”,b);}

ผลลพธ b = 16;b = 1;b = 0

Page 102: 240-101 Introduction to computer programming

Lesson1-102

36 ลำดบกรทำงนกอน-หลงของตวดำเนนกร

ตวดำเนนกร ทศทงกรดำเนนกร(), [], ->, ซายไปขวา|, ~, ++, --, +( ), -( ), *, &(type), sizeofคาบวก คาลบ ขวาไปซาย*, /, % ซายไปขวา+, - ( )ตวกระทำาการทางคณตศาสตร ซายไปขวา<<, >> ซายไปขวา<, <=, >, >= ซายไปขวา==, != ซายไปขวา& ซายไปขวา^ ซายไปขวา| ซายไปขวา&& ซายไปขวา|| ซายไปขวา? : ขวาไปซาย=, +=, -=, /=, %=, &=, =, |=, <<=, >>= ขวาไปซาย, ซายไปขวา

ตารางท3.7 แสดงลำาดบความสำาคญของตวดำาเนนการทงหมดเรยงลำาดบจากมากไปนอย

Page 103: 240-101 Introduction to computer programming

Lesson1-103

3.7. กรเปลยนแปลงคผลลพธเปนตวแปร ชนดใหม (Casting)

ตวอยง (int)(a*5.2)

เปนการเปลยนคา output เปน ขอมลชนด int

(float)(b+5) เปนการเปลยนคา output เปน

ขอมลชนด float

Page 104: 240-101 Introduction to computer programming

บทท 3Structured Program

Developmentกรพฒนโปรแกรมอยงม

โครงสรง

Page 105: 240-101 Introduction to computer programming

OObjectives (จดประสงค) เขาใจวธการพนฐานในการแกปญหาทางคอมพวเตอร สามารถพฒนากระบวนวธขนโดยใชวธการเกลาจนบนลง

ลางได สามารถใชโครงสรางทางเลอก if และ if/else เพอเลอก

การกระทำาได สามารถใชโครงสรางทำาซำา while เพอ execute คำาสง

ในโปรแกรมซำา ๆ กนได เขาใจการทำาซำาโดยใชตวนบคมและโดยใชตวตรวจตราคม เขาใจการเขยนโปรแกรมอยางมโครงสราง

Page 106: 240-101 Introduction to computer programming

Lesson1-106

3 .1. Introduction (บทนำา)กอนทจะเขยนโปรแกรมเพอแกปญหา

หนง ๆ นนผเขยนจะตองทำาความเขาใจกบปญหาและวางแผนอยางรอบคอบเพอแกไขปญหานน ในสวนน จะกลาวถงเทคนคทใชในการพฒนาโปรแกรมอยางมโครงสราง ซงเปนรากฐานสำาคญของการเขยนโปรแกรมในทกระดบ

Page 107: 240-101 Introduction to computer programming

Lesson1-107

32. Algorithms (กระบวนวธ)

การแกปญหาโดยการโปรแกรมคอมพวเตอรจะตองเกยวของกบการกระทำาคำาสงชดหนง ๆ ไปตามลำาดบทกำาหนดไว ซงกระบวนการในการแกปญหาทเรยกวา algorithm (กระบวนวธ ) นนจะประกอบดวย– การกระทำา (actions)– ลำาดบของการกระทำา (order in which these

actions are to be executed)

Page 108: 240-101 Introduction to computer programming

Lesson1-108

3.3. Pseudocode (โคดเทยม)Pseudocode เปนภาษาอยางไมเปน

ทางการ ทผเขยนโปรแกรมใชในการพฒนากระบวนวธ (algorithm ) Pseudocode มลกษณะคลายภาษาทใชในชวตประจำาวน มนมลกษณะใชงายและเขยนไดโดยสะดวก แมวามนจะไมไดเปนภาษาทใชในการเขยนโปรแกรมจรง ๆ กตาม

Page 109: 240-101 Introduction to computer programming

Lesson1-109

PseudocodePseudocode ทเตรยมไวดจะสามารถแปลงใหเปนโปรแกรมภาษาซ ไดโดยงาย โดยอาจจะเพยงแตใชคำาสงภาษาซ ทเทยบเทากนแทนทคำาสง pseudocode เขาไปผเขยนโปรแกรมอาจจะเขยนคำาสง pseudocode หนงคำาสงใหหมายถงการกระทำาชดหนง ซงอาจจำาเปนตองแทนทดวยคำาสงภาษาซ หลายคำาสงกได ทงนการใช pseudocode ยอมขนกบจดประสงคของการใช ซงแปรเปลยนไปไดตามความเหมาะสม

Page 110: 240-101 Introduction to computer programming

Lesson1-110

34. . Control Structures (โครงสรางควบคม)

โดยปกต คำาสงในโปรแกรมจะทำางานตอเนองกนไปตามลำาดบทเขยนไวในโปรแกรม โดยจะเรยกการทำางานอยางนวา sequential execution (การทำางานตามลำาดบ ) คำาสงตาง ๆ ของภาษาซ ทจะไดศกษาตอไปนจะทำาใหผเขยนโปรแกรมสามารถควบคมไดวา คำาสงถดไปทจะทำางานเปนคำาสงใด ซงเราเรยกสงนวา Transfer of control (การสงถายการควบคม)

Page 111: 240-101 Introduction to computer programming

Lesson1-111

3.4.1 โครงสรางตามลำาดบ

เปนโครงสรางทสรางอยภายในภาษาซ อยแลว นนคอ ถาไมไดบอกเปนอยางอน คอมพวเตอรจะทำางานคำาสงภาษาซ ไปตามลำาดบทเขยนไว Fl owchar t ในรปท 1แสดงโครงสรางตามลำาดบของภาษาซ

Page 112: 240-101 Introduction to computer programming

Lesson1-112

รปท 1 Flowchart ของโครงสรางตามลำาดบของภาษาซ

Page 113: 240-101 Introduction to computer programming

Lesson1-113

Flowchart เปนสญลกษณภาพทใชแทนกระบวนวธ หรอสวนหนงของกระบวนวธ ในการวาด flowchart นนจะใชสญลกษณทมความหมายเฉพาะ อยางเชน สเหลยมผนผา , ขาวหลามตด , รปไข และวงกลมวงเลก สญลกษณเหลานจะเชอมเขาดวยกนโดยใช flowline

Flowchart ใชในการสรางและการแสดงกระบวนวธ เชนเดยวกบ pseudocode อยางไรกตาม นกเขยนโปรแกรมสวนใหญจะนยมใช pseudocode มากกวา เนองจากความกระชบในการเขยน ในทนจะใช flowchart เพอแสดงใหเหนวา โครงสรางควบคมแตละชนดทำางานอยางไร เทานน

Page 114: 240-101 Introduction to computer programming

Lesson1-114

3.4.2 The if, if/else Selection Structure (โครงสรงทงเลอก if, if/else)โครงสรางทางเลอกใชในการเลอกระหวางการกระทำาหลาย ๆ อยาง ตวอยางเชน ถานกศกษาจะสอบผาน เมอไดคะแนน 60 คะแนนขนไป คำาสง pseudocode อาจจะเปน– If คะแนนของนกศกษาสงกวาหรอเทากบ 60

“พมพ Passed”ใหสงเกตวา มการเวนระยะหางเยองเขาไปในบรรทดทสองของ pseudocode การทำาเชนนทำาใหโคดอานงายขน ดงนนจงควรใชการเวนระยะหางอยางเปนระบบในการเขยนโปรแกรมทกโปรแกรม ไมวาจะเขยนเปน pseudocode หรอเปนโคดภาษาซ กตาม

Page 115: 240-101 Introduction to computer programming

Lesson1-115

โครงสรงทงเลอกแบบทงเดยวของภษซ

Pseudocode ขางตนสามารถเขยนเปนโปรแกรมภาษาซ ไดดงนif (grade >= 60)

printf(“Passed\n”);

Page 116: 240-101 Introduction to computer programming

Lesson1-116

รปท 2 Flowchart ของโครงสรงทงเลอกแบบทงเดยวของภษซ

Page 117: 240-101 Introduction to computer programming

Lesson1-117

โครงสรางทางเลอก if/elseif คะแนนของนกศกษาสงกวาหรอเทากบ 60

“พมพ Passed”else

พมพ “Failed”Pseudocode ขางตนสามารถเขยนเปนโปรแกรม

ภาษาซ ไดดงนif (grade >= 60)printf(“Passed\n”);

elseprintf(“Failed\n”);

Page 118: 240-101 Introduction to computer programming

Lesson1-118

รป 3 แสดงถง flowchart ของโครงสรางทางเลอก if/else

Page 119: 240-101 Introduction to computer programming

Lesson1-119

3.4.3 The While Repetition Structure (โครงสรางทำาซำา While) โครงสรางทำาซำา ทำาใหผเขยนโปรแกรมระบใหทำาการกระทำาหนง

ซำาไปเรอย ๆ ในขณะทเงอนไขบางอยางยงคงเปนจรงอย ตวอยางเชน– while (ขณะท) ยงคงมของทจะซออยในรายการซอของ

(shopping list)– ซอของชนตอไป และกาของชนนนทงไปจากรายการ

“เงอนไขทวา ยงคงมของทจะซออยในรายการซอของ” อาจจะเปนจรงหรอเทจกได หากเงอนไขนเปนจรง กจะทำาคำาสง

“ ซอของชนตอไป และกาของชนนนทงไปจากรายการ” การก ระทำานจะทำาตอไปเรอย ๆ ในขณะทเงอนไขยงคงเปนจรงอย

Page 120: 240-101 Introduction to computer programming

Lesson1-120

โครงสรางทำาซำา while

เพอเปนตวอยางของการใชลป while ลองดโปรแกรมทใชหาคากำาลงของสองคาแรกทมากกวา

1000 (กำาลงของสอง หมายถง 2 n เมอ n เปนจำานวนเตมบวก ) เมอโครงสรางทำาซำา while ดานลางทำางานเสรจ ตวแปร product กจะมคาผลลพธทตองการproduct = 2;while (product <= 1000)

product = 2 * product;

Page 121: 240-101 Introduction to computer programming

Lesson1-121

รปท 4 Flowchart ของโครงสรางทำาซำา while

Page 122: 240-101 Introduction to computer programming

Lesson1-122

Summary (สรป) การแกปญหาทางคอมพวเตอรเปนการกระทำาคำาสงชดหนง

ๆ ในลำาดบทกำาหนดไว กระบวนการแกปญหาทประกอบดวย สงทจะกระทำา และ ลำาดบของการกระทำา เรยกวา กระบวนวธ (algorithm)

การระบลำาดบทคำาสงจะ execute ในโปรแกรมคอมพวเตอร เรยกวา การควบคมโปรแกรม (program control)

Pseudocode เปนภาษาไมเปนทางการทชวยผเขยนโปรแกรมในการพฒนากระบวนวธ จดสำาคญ คอ

pseudocode ชวยใหผเขยนโปรแกรม คด วธการแก“ ”ปญหาออกมากอนทจะลงมอเขยนโปรแกรมในภาษาโปรแกรม เชน ภาษาซ

Page 123: 240-101 Introduction to computer programming

Lesson1-123

โครงสรางทางเลอก (selection structure) ใชเพอเลอกระหวางการกระทำาหลาย ๆ อยาง มหลายรปแบบ ไดแก โครงสราง if, โครงสราง if/else และโครงสราง if/elseแบบซอนกน (nested if/else)

โครงสรางทำาซำา (repetition structure) ใชเพอระบใหทำาคำาสงหนง ๆ (หรอชดหนง ๆ ) ซำากนไปเรอย ๆ ในขณะทเงอนไขบางอยางเปนจรง โครงสรางทำาซำาในบทน คอ while

Flowchart เปนสญลกษณภาพทใชแทนกระบวนวธหรอสวนหนงของกระบวนวธ สญลกษณทใชมากใน flowchart ไดแก สญลกษณรปไข (สญลกษณ Begin และ End ),สญลกษณสเหลยมผนผา (สญลกษณการกระทำา ),สญลกษณขาวหลามตด (สญลกษณการตดสนใจ ) และสญลกษณวงกลมวงเลก (สญลกษณจดเชอม)

Page 124: 240-101 Introduction to computer programming

Lesson1-124

ลปแบบใชตวนบคม - (counter controlled loop)ใชตวแปรตวหนงเปนตวนบ เพอตรวจสอบวาลปควรจะหยดเมอใด

ลปแบบใชตวตรวจตราคม - (sentinel controlled loop) จะกำาหนดใหคา ๆ หนงเปนคาตรวจตรา เมอผ

ใชปอนคาตรวจตราเขาไป โปรแกรมจะออกจากลป การพฒนาโปรแกรมโดยใชวธการเกลาจากบนลงลาง

- (top down, stepwise refinement) มความสำาคญมาก ควรฝกปฏบตใหเปนนสย และควรเขยนกระบวนวธออกมาในรป pseudocode กอนการเขยนโคดในภาษาซ เสมอ

Page 125: 240-101 Introduction to computer programming

บทท 4Program Control

คำาสงในการตดสนใจและการวนรอบ

Page 126: 240-101 Introduction to computer programming

หวขอ1. คำาสง if (The if Statement)2. คำาสง switch (The switch Statement)3. คำาสง break (The break Statement)4. คำาสง while (The while Statement)5. คำาสง for (for Statement)6. คำาสง do-while (do-while Statement)7. คำาสง continue (The continue Statement)

Page 127: 240-101 Introduction to computer programming

4.1 คำสง if (The if Statement)

คำาสง if ( if Statement) คอ คำาสงสำาหรบใช เลอกทำาคำาสง (หรอกลมคำาสง) โดยอาศยการ

ตรวจสอบจากเงอนไข ซงม3 รปแบบคอ1. หนงทางเลอก (One Alternative)2. สองทางเลอก (Two Alternative)3. หลายทางเลอก (Multiple-Alternative)

Page 128: 240-101 Introduction to computer programming

1.หนงทงเลอก (One Alternative)

เงอนไขcondition

คำาสงหรอกลมคำาสงstatement T

TRUEFALSE

if Statement (One Alternatives)FORM : if (condition)

statement T ;

EXAMPLE if (x > 0.0)total = total * x;

Page 129: 240-101 Introduction to computer programming

กรณคำาสง if ในรปแบบน จะตองเลอกทำากลมคำาสง(Compound Statement) เมอตรวจสอบเงอนไขแลวเปนจรงมรปแบบดงน

if (condition){true task}Example :if (x>y) {temp = x ;x = y ;y = temp;}

Page 130: 240-101 Introduction to computer programming

2. สองทงเลอก (Two Alternative)

เงอนไขcondition

คำาสงหรอกลมคำาสงstatement T

TRUEFALSE

คำาสงหรอกลมคำาสงstatement F

FORM : if (condition)statement T ;

elseStatement F ;

ตวอยาง if (x >= 0.0)printf("positive\n”);

elseprintf("positive\n”);

Page 131: 240-101 Introduction to computer programming

กรณคำาสง if ในรปแบบน จะตองเลอกทำากลมคำาสง(Compound Statements) มรปแบบดงนif (condition)

{true task}else}false task}

Example:if (x>y) {temp = x ;x = y ;y = temp ;}else {count = count + 1 ;printf("smaller\n”);

Page 132: 240-101 Introduction to computer programming

3. หลยทงเลอก(Multiple - Alternative)

SYNTAX : if (condition 1)statement 1else if (condition 2)statement 2::else if (condition n)statement nelsestatement

Page 133: 240-101 Introduction to computer programming

ตวอยาง/*increment mum-pos, num_neg, or num_zero depending on x*/

if (x > 0)num_pos = num_pos + 1;

else if (x < 0)num_neg = num_neg + 1;

elsenum_zero = num_zero + 1;

Page 134: 240-101 Introduction to computer programming

4.2 คำสง switch (The switch Statement)

คำาสง switch มกจะถกใชบอยในกรณของ การเลอกหนงทางเลอกในหลายๆทางเลอก

โดยคาทใชตรวจสอบ (Controlling Expression) จะตองเปนจำานวนเตม

(int) หรอ ขอมลชนดตวอกษร (char) แตจะตองไมเปนจำานวนจรงแบบยาว (double) โดยอาจจะอยในรปของตวแปร , นพจน หรอฟงกชนกได

Page 135: 240-101 Introduction to computer programming

switch Statement SYNTAX : switch (controlling expression) {

case lable_set1 :

statements1

break;case label_set2 :

statements2

break;:.case lable_setn :

statementsn

break;default :} statementsd

Page 136: 240-101 Introduction to computer programming

Example:switch (class) {case ‘B’ :case ‘b’ :printf("Bat\n”);break ;case ‘C’ :case ‘c’ :printf("Cat\n”);break ;default :printf("Unknown class %c\n”,class);}

Page 137: 240-101 Introduction to computer programming

4.3 คำสง break คำาสง break เปนคำาสงทใชในการหยด

การทำาคำาสงภายในลป (Loop) ของคำาสง และ วนรอบ ดงรปแบบคอ

break;

Page 138: 240-101 Introduction to computer programming

4.4 คำสง While คำาสง while เปนคำาสงทใชในการวนรอบ ซงจะม

การตรวจสอบคาเงอนไข กรณไมเทากบศนย (จรง) จะมการทำาคำาสง (Statement) ในแตละรอบ

กรณผลลพธเทากบศนย (เทจ) จะไมทำากลมคำาสง(Statement) สามารถเขยน Flowchart ไดดงน

looprepetition condition

statement

TRUE

FALSE

Exit loop

Page 139: 240-101 Introduction to computer programming

While StatementSYNTAX : While (loop repetition condition)

statementตวอยาง : /*Display N asterisks.*/Count = 0;while (count < n){printf("*”); count = count + 1;}

Page 140: 240-101 Introduction to computer programming

4.5 คำสง for

คำาสง for เปนคำาสงทใชในวนรอบอกชนดหนงซงการทำางานของ

การวนรอบ จะขนกบสวนสำาคญ 3 สวนคอ1. คาเรมตนของ ตวแปรควบคมการ

วนรอบ2. สวนทดสอบเงอนไข3. สวนเปลยนแปลงคาของตวแปร

ควบคมการวนรอบ

Page 141: 240-101 Introduction to computer programming

for StatementSYNTAX : for (initialization expression;

loop repetition condition;update expression)

ตวอยาง : /*Dispaly N asterisks*/ for (count = 0 ;

count < N;count += 1)

printf("*");

หรอ : for (count = 0; count <N; count += 1)printf("*");

Page 142: 240-101 Introduction to computer programming

4.6 คำสง do-while

จากการศกษาคำาสง while และfor จะตองมการตรวจสอบคาของ

เงอนไขกอนวาเปนจรงหรอเทจ กอน ทจะทำาคำาสง (กลมคำาสง) ภายในลป

แตการทำางานบางลกษณะจะตองทำา คำาสงภายในลป กอนอยางนอย 1

ครง ซงการทำางานในลกษณะทกลาว นสามารถใชคำาสง do-while

Page 143: 240-101 Introduction to computer programming

- do while Statement SYNTAX : do

statementwhile (loop repetition condition);

ตวอยาง : /* Find first even number input */do

status = scanf("%d”,&num);while ( status > 0 && (num%2) ! =

0);

Page 144: 240-101 Introduction to computer programming

4.7 คำสง continue

เปนคำาสงทใชยกเลกคำาสงทยง เหลออยในกลมคำาสง

ภายในลป (Loop) ของคำาสงทใชในการวนรอบ

continue;

Page 145: 240-101 Introduction to computer programming

Example:#include <stdio.h>

void main(void) {int testnum = 10;

while ( testnum <= 100) {printf("Put value over 100 to stop\n");scanf("%d",&testnum);if (testnum == 50) continue;printf("Hello, you didn't enter value 50\n");

}}

Page 146: 240-101 Introduction to computer programming

ผลลพธไดดงนPut value over 100 to stop25Hello ,you didn't enter value 50Put value over 100 to stop50Put value over 100 to stop108Hello ,you didn't enter value 50

Page 147: 240-101 Introduction to computer programming

บทท 5 ฟงกชน

(Function)

Page 148: 240-101 Introduction to computer programming

O bjectives (จดประสงค) เพอเขาใจวธการแบงโปรแกรมออก

เปนสวนยอย โดยใชหลกการของ ฟงกชน

เขาใจกระบวนการในการสงขอมลระหวางฟงกชน

เขาใจวธการในการเขยน ใชฟงกชน

Page 149: 240-101 Introduction to computer programming

บทนำ โปรแกรมคอมพวเตอรสวนใหญทใชงานจรง มก

จะเปนโปรแกรมขนาดใหญ เกนกวาทจะเขยนรวมๆ กนในฟงกชนหลก (main)

เทคนคทเรยกวา Divide and Conquer แบงปญหาออกเปนสวนเลกๆ หรอโมดล (Module)

เมอสรางและทดสอบโปรแกรมยอยๆนนแลว กประกอบขนมาเปนโปรแกรมใหญทสมบรณในขนตอนสดทาย

Page 150: 240-101 Introduction to computer programming

Program Module ในภษC

FUNCTIONS IN C

C STANDARD

LIBRARY

PROGRAMMER

DEFINED FUNCTION

Page 151: 240-101 Introduction to computer programming

Function Algorithm

BOSS(calling func)

WORKER(called func)

1. สงใหทำางาน

3. รายงานผล

2. ทำางาน

main

worker1 worker3worker2

worker4 worker5

Complex Function

Page 152: 240-101 Introduction to computer programming

กรนยมฟงกชน/* 1st sample program: calling standard library function */

#include <stdio.h>main(){

int x;for (x = 1; x <= 10; x++) printf(“%d “, x * x);printf(“\n”);return 0;

}

Page 153: 240-101 Introduction to computer programming

/* 2nd sample program: A programmer-defined square function */

#include <stdio.h>int square(int);/* function prototype*/main(){

int x;for (x = 1; x <= 10; x++) printf(“%d “, square(x));printf(“\n”);return 0;

}/* Function definition */int square(int y){return y*y;

}

Page 154: 240-101 Introduction to computer programming

main( )

x

square( )

y

COPY ARGUMENTS

COPY RETURN-VALUE

y * yprintf

Page 155: 240-101 Introduction to computer programming

กรนยมฟงกชน

return-value-type function-name (parameter-list)

{declarationsstatements

}

Page 156: 240-101 Introduction to computer programming

- -return type value คอ ชนดของขอมลทตองการจะสงคากลบ เชน int หรอ float หากไมมการสงคากลบใหใช void

-function name คอ ชอของฟงกชนทจะถกสรางขน -parameter list คอรายการตวแปรพารามเตอร

ทงหมดทตองการสงผานไปยงฟงกชนเมอมการเรยกใช ตามลำาดบ

declarations คอ สวนของการประกาศตวแปรภายในฟงกชน

statements คอ สวนของคำาสงทกระทำาในฟงกชนนน

Page 157: 240-101 Introduction to computer programming

ตวอยาง ตวอยางเชน หากตองการเขยนฟงกชนชอ foo ไมม

การสงผานคากลบ รบพารามเตอร เปน จำานวนเตม 2 ตว โดยฟงกชนจะคำานวณหาผลบวกของจำานวน

ทงสอง แลวแสดงผลออกมาทางจอภาพvoid foo(int x, int y){int ans;ans = x + y;printf(“%d”, ans);

}

Page 158: 240-101 Introduction to computer programming

หรอถาตองการเขยนฟงกชนชอ subtract ทสง คากลบเปนจำานวนเตม ซงเปนผลลบของ

พารามเตอร ทเปนจำานวนเตมตวแรกลบดวย จำานวนเตมตวทสอง จะนยามฟงกชนไดวา

int subtract (int x, int y){int ans;ans = x - y;return ans;

}

Page 159: 240-101 Introduction to computer programming

Function แบบตาง ๆ

รปแบบตวอยางท 1:ฟงกชนทไมรบผานคา และไมสงผานคากลบvoid main(){my_print();

}void my_print(){ printf(“Hello world”);

}

Page 160: 240-101 Introduction to computer programming

รปแบบตวอยางท 2 : ฟงกชนทมการรบผานคา แตไมสงผานคากลบ/* 2.1 */

void main(){my_print(2);

}void my_print(int x) { printf(“%d”, x);}

main my_print

1. ทำางานดวย 2 !

2. พมพ

3. เสรจแลวครบ

Page 161: 240-101 Introduction to computer programming

/* 2.2 */

void main(){my_print(‘a’, 5);

}void my_print(char ch, int x){ while (x > 0){printf(“%c”, ch);x--;}

}

main my_print

1. ‘ทำงนดวย a’ และ5 !

2. พมพ

3. เสรจแลวครบ

Page 162: 240-101 Introduction to computer programming

รปแบบตวอยางท 3: ฟงกชนทมการรบผานคา และสงผานคากลบ

void main(){char ch;ch = my_print(5);printf(“%c\n”, ch);

}

Page 163: 240-101 Introduction to computer programming

char my_print(int x){ char lch;printf(“Enter your character: ”);scanf(“%c”, &lch);while (x > 0){printf(“%c”, lch);x--;}printf(“\n”);return lch;

}

main my_print

1. ทำางานดวย 5 !2. รบคาแลวพมพ

3. เสรจแลวครบผลคอ ch

Page 164: 240-101 Introduction to computer programming

รปแบบตวอยางท 4: ฟงกชนทไมรบผานคา แตมการสงผานคากลบvoid main(){ printf(“%d”,my_func());}int my_func() { int a; scanf(“%d”,&a); return a*5;}

Page 165: 240-101 Introduction to computer programming

ตนแบบของฟงกชน (Function Prototype) ตนแบบของฟงกชน จะเปนตวระบใหตวแปล

ภาษารถง–ชนดของขอมลทจะสงผานคากลบ –จำานวนของ พารามเตอร ทฟงกชนคาดหวง

วาจะไดรบ –ชนดของพารามเตอรแตละตว –และลำาดบของพารามเตอรเหลานน

Page 166: 240-101 Introduction to computer programming

/* 3rd Sample program *//* Finding the maximum of three integers */

#include <stdio.h>int maximum(int, int, int);main(){int a, b, c;printf(“Enter three integers: “);scanf(“%d%d%d”, &a, &b, &c);printf(“Maximum is: %d\n”,

maximum(a, b, c);return 0;

}

PROTOTYPE

CALLING

Page 167: 240-101 Introduction to computer programming

/* Function maximum definition */

int maximum(int x, int y, int z){int max = x;if(y > max)

max = y;if(z > max)

max = z;

return max;}

DEFINITION

Page 168: 240-101 Introduction to computer programming

/* 4th Sample Program */

#include<stdio.h>int square(int);void main( ) {int x=3;printf(“Square of %d = %d\n”, x,

square(x));}int square(int y) {return y * y;

}

PROTOTYPE

CALLING

DEFINITION

Page 169: 240-101 Introduction to computer programming

/* 5th Sample Program */

#include<stdio.h>int maximum(int, int, int);void main(){

int a, b, c;printf(“Enter three integer: “);scanf(“%d%d%d”, &a, &b, &c);printf(“Maximum is: %d\n”, maximum(a, b, c));

}int maximum(int x, int y, int z){

int max = x;if(y > max) max = y;if(z > max) max = z;return max;

}

PROTOTYPE

CALLING

DEFINITION

Page 170: 240-101 Introduction to computer programming

/* 6th Sample Program */

#include<stdio.h>

int maximum(int x, int y, int z){

int max = x;if(y > max) max = y;if(z > max) max = z;return max;

}

void main( ){

int a, b, c;printf(“Enter three integer: “);scanf(“%d%d%d”, &a, &b, &c);printf(“Maximum is: %d\n”, maximum(a, b, c));

}

CALLING

DEFINITION

Page 171: 240-101 Introduction to computer programming

ตวแปรภยใน และตวแปรภยนอก ตวแปรภายใน (Local Variable) คอ

ตวแปรทถกสรางขนภายในฟงกชน สามารถเรยกใชงานไดเฉพาะภายในฟงกชนทสรางขน และจะถกทำาลายลงเมอเสรจสนการทำางานของฟงกชนนนๆ

ตวแปรภายนอก (Global Variable) คอ ตวแปรทถกสรางขนภายนอกฟงกชน สามารถเรยกใชงานไดในทกฟงกชน หรอทงโปรแกรม

Page 172: 240-101 Introduction to computer programming

/* 7th Sample Program: Local vs Global Variable */#include<stdio.h>int ans = 0;

int inc_one(int); /* function prototype */

void main(){

int a = 3;ans = inc_one(a);printf(“Answer is %d\n”, ans);

}

/* function definition: return x+1 */int inc_one(int x){

int ans;ans = x + 1;return ans;

}

Local Variable

Global Variable

Local Variable

Page 173: 240-101 Introduction to computer programming

/* 9th Sample Program: Global Variables */#include<stdio.h>int x;void my_func();

void main(){x=3;printf(“Main: Before call function x=%d\n”, x);my_func(); //call my_func

printf(“Main: After call function x=%d\n”, x);}void my_func(){x=2;printf(“My_func: x=%d\n”, x);

}

Global Variable

Global Variable

Global Variable

Page 174: 240-101 Introduction to computer programming

/* 10th Sample Program: Local vs. Global Variables */

#include<stdio.h>int x;void my_func(); //prototype of my_funcvoid main(){

x=3;printf(“Main: Before call function x=%d\n”, x);my_func(); //call my_func

printf(“Main: After call function x=%d\n”, x);}void my_func(){

int x;x=2;

printf(“My_func: x=%d\n”, x);}

Global Variable

Global Variable

Local Variable

Page 175: 240-101 Introduction to computer programming

ตวอยางการเรยกใชฟงกชนทมการสงผานคากลบ

void main(){ int x, y; printf(“%d”,my_func()); x = my_func(); y = 45 * x + my_func(); }int my_func() { int a; scanf(“%d”,&a); return a*5;}

มตวแปรมรบค

เปน argument ของฟงกชนอน

Lปนสวนหนงของนพจน

Page 176: 240-101 Introduction to computer programming

ตวอยางโปรแกรมทไมใชฟงกชน#include <stdio.h>main(){ int first, second, third; printf(“\n F(X) = 3X + 10 if X > 0\n”); printf(“\n F(X) = 10 if X = 0\n”); printf(“\n Enter 3 values\n”); scanf(“%d %d %d”, &first, &second, &third);

if (first > 0) printf(“F(%d) is %d”,first,3*first+10); else printf(“F(%d) is 10”, first);

Page 177: 240-101 Introduction to computer programming

if (second > 0) printf(“F(%d) is %d”, second,

3*second + 10);else printf(“F(%d) is 10”, second);if (thrid > 0) printf(“F(%d) is %d”, third,

3*third + 10);else printf(“F(%d) is 10”, third);}

Page 178: 240-101 Introduction to computer programming

ตวอยางโปรแกรมทใชฟงกชน#include <stdio.h>

void get_Fx(int x);

main(){ int first, second, third; printf(“\n F(X) = 3X + 10 if X > 0\n”); printf(“\n F(X) = 10 if X = 0\n”); printf(“\n Enter 3 values\n”); scanf(“%d %d %d”, &first, &second,

&third);

Page 179: 240-101 Introduction to computer programming

get_Fx(first);get_Fx(second);get_Fx(third);}

void get_Fx(int x){ if (x > 0) printf(“F(%d) is %d”, x, (3*x) + 10); else printf(“F(%d) is 10”, x);}

Page 180: 240-101 Introduction to computer programming

Math routinesFunction Include Fileabs stdlib.hacos math.hasin math.hatan math.hatof stdlib.hatoi stdlib.hcos math.hcosh math.h

Page 181: 240-101 Introduction to computer programming

Function Include Fileexp math.hitoa stdlib.hlog math.hlog10 math.hsin math.hsinh math.hsqrt math.htan math.htanh math.h

Page 182: 240-101 Introduction to computer programming

บทท 6

ProgramControl

Page 183: 240-101 Introduction to computer programming

หวขอ ตวแปรอารเรย แบบ 1 มต การใหคาเรมตน การสงผานอารเรย ตวแปรอารเรยแบบ 2 มต ความผดพลาดของโปรแกรมทวไปเกยวกบ

อารเรย บทสรป

Page 184: 240-101 Introduction to computer programming

รปแบบของขอมลทกำาหนดขน เพอใหสามารถประกาศตวแปรชนดเดยวกนหลายๆ ตวพรอมกนได โดยจดอยในบลอกของหนวยความจำาเดยวกน และมการจดเรยงของขอมลแตละตวกนตอเนอง และใชชอตวแปรรวมกนในการอางองถง ซงเรยกขอมลแบบนวา อรเรย (Array)

บทนำ

Page 185: 240-101 Introduction to computer programming

ตวแปรแบบอารเรยทใชในการเกบขอมลโดยมการ อางองทใชเลขดชนเพยงหนงคาจะเรยกวา ตวแปร

แบบอารเรย 1 มต เชน การเกบขอมลคะแนน ทอางองดวยลำาดบทของนกศกษาint age[10];

การประกาศตวแปรแบบอารเรยเพอเกบขอมลอาย เมอ ตองการเกบขอมลอายของนกศกษาคนท 1 สามารถ

ทำาไดดงนage[1] = 18;

ตวแปรอรเรยแบบ 1 มต

Page 186: 240-101 Introduction to computer programming

กรประกศ ตวแปรอรเรย

การประกาศตวแปรแบบอารเรยสามารถ ทำาไดคลายกบการประกาศตวแปรอน ๆ ทวไป

โดยการกำาหนดซอของตวแปร ชนดของขอมลและจำานวนของบลอกขอมลยอยๆ (Element) ตวอยางเชน

int grades[5];char codes[5];float prices[100];

Page 187: 240-101 Introduction to computer programming

grades[0] = 98;grades[1] = grades[0] – 11;grades[2] = 2 * (grades[0] – 6);grades[3] = 79;grades[4] = (grades[2] + grades[3] – 3) / 2;

grades[i];grades[2*i];grades[j-i];

total = grades[0]+ grades[1]+ grades[2]+ grades[3]+ grades[4];

กรเขถงตวแปรอรเรย

Page 188: 240-101 Introduction to computer programming

กรใช for loop กบอรเรย

ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนตทำาดงน

total = grades[0]+ grades[1]+ grades[2]+ grades[3]+ grades[4];

เปลยนเปน for loop ไดดงนtotal = 0;for ( i = 0 ; i <= 4 ; i++)total += grades[i];

Page 189: 240-101 Introduction to computer programming

รบคาprice[5] = 10.69;scanf(“%d %lf”, &grades[0], &price[2])scanf(“%c”, &code[0]);scanf(“%d %d %d”,&grades[0],&grades[1],&grades[2]);

แสดงคาprintf(“%lf”, price[6]);printf(“The value of element %d is %d”, i, grades[i]);for( n = 5 ; n <= 20 ; n++)

printf(“%d %lf”, n, price[n]);

กรแสดงคหรอรบคอรเรย (Input and Output)

Page 190: 240-101 Introduction to computer programming

int grades[5] = {98,87,92,79,85};char codes[6] = {‘s’, ‘a’, ‘m’, ‘p’, ‘l’, ‘e’};double width[7] = {10.96, 6.43, 2.58, 0.86, 5.89, 7.56, 8.22};static int temp[4] = {10, 20, 30, 40};static float temp[4] = {98.6, 97.2, 99.0 , 101.5};

int gallons[20] = { 19, 16, 14, 19, 20, 18, 12, 10, 22, 15,18, 17, 16, 24, 23,

19, 15, 18, 21, 5 };

กรณทประกาศไมครบfloat length[7] = {7.8, 6.4, 4.9, 11.2};

กรใหคเรมตน(Array Initialization)

Page 191: 240-101 Introduction to computer programming

การประกาศตวแปรแบบอารเรยพรอมทงกำาหนดคาเรมตนสามารถทำาไดโดยไมจำาเปนตองกำาหนดขนาดของอารเรย กไดเชนchar codes[6] = {‘s’, ‘a’, ‘m’, ‘p’, ‘l’, ‘e’};char codes[] = {‘s’, ‘a’, ‘m’, ‘p’, ‘l’, ‘e’};

ทงสองบรรทดทำางานเหมอนกน โดยคอมไพลเลอรจะรได เองวาขนาดของอารเรยจะมขนาดเปน 6 ในกรณจำาเปน

จะตองมการประกาศคาเรมตน ในกรณใหคาเรมตนแก ตวแปร char สามารถ กระทำาไดดงนดวย คอ

char code[] = “sample”;

คอมไพลเลอรจะใส ‘ \0 ’ หรอเรยกวา null character ไวทายขอความ

Page 192: 240-101 Introduction to computer programming

กรสงผนอรเรยไปยงฟงกชน กรณสงผนบงอลเมนต#include <stdio.h>void find_max(int vals); /* function prototype */void main(){

int nums[5] = {2, 18, 1, 27, 16};find_max(nums[0]);

}

void find_max(int vals) /* find the maximum value */

{printf(“Values is %d”, vals);

}

Page 193: 240-101 Introduction to computer programming

กรณสงผนทกอลเมนต#include <stdio.h>void find_max(int vals[5]); /* function prototype */void main(){

int nums[5] = {2, 18, 1, 27, 16};find_max(nums);

}

void find_max(int vals[5]) /* find the maximum value */{

int i, max = vals[0];for ( i = 0; i < 5; ++i)if (max < vals[i]) max = vals[i];printf(“The maximum value is %d”, max);

}

Page 194: 240-101 Introduction to computer programming

ตวแปรอารเรยแบบ 2 มตจะเปนตวแปรทมการ อางองถงคาขอมลโดยใชคาเลขดชน 2 คาซงประกอบ

ไปดวยคาดชนทใชในการอางองในแนวแถว (rows) และคาดชนทใชอางองในแนวคอลมน(columns)

ตวอยางขอมลอารเรย 2 มต เชน8 16 9 523 15 27 614 25 2 10

int val[3][4]; //(2 bytes * 3 * 4 = 24 bytes)

ตวแปรอรเรย แบบ 2 มต

Page 195: 240-101 Introduction to computer programming

int val[3][4];double prices[10][5]; char code[6][5];

กรประกศ ตวแปร อรเรย 2 มต

code[0][1] code[0][2]

code[0][0] code[0][3]

code[1][0] code[1][1]

code[5][0]

....

code[5][3]

Page 196: 240-101 Introduction to computer programming

num = val[2][3];val[0][0] = 62;new_nu = 4 * ( val[1][0] – 5);sum_row0 = val[0][0] + val[0][1 + val[0][2 + val[0][3];

กรเขถงตวแปรอรเรย2 มต

Page 197: 240-101 Introduction to computer programming

กรใหคเรมตน (Array Initialization)

int val[3][4] ={ {8,16, 9,52}, {3,15,27, 6}, {14,25,2,10} };

int val[3][4] = {8,16,9,52, 3,15,27,6, 14,25,2,10};

Page 198: 240-101 Introduction to computer programming

#include<stdio.h>void main(void){

int i, j, val[3][4] = {8,16,9,52,3,15,27,6,14,25,2,10}; printf(“\n Display of val array by eplicit element”);

printf(“\n%2d %2d %2d”,val[0][0],val[0][1],val[0][2],val[0][3]); printf(“\n%2d %2d %2d”,val[1][0],val[1][1],val[1][2],val[1][3]); printf(“\n%2d %2d %2d”,val[2][0],val[2][1],val[2][2],val[2][3]);

for ( i = 0; i < 3; ++i) {printf(“\n”); /* start a new line for each row */for ( j = 0; j < 4; ++j)

printf(“%2d “, val[i][j]);}

}

Page 199: 240-101 Introduction to computer programming

#include <stdio.h>void main(){ int i, j, val[3][4] = {8,16,9,52,3,15,27,6,14,25,2,10};

/* multiply each element by 10 and display it */

printf(“\n\nDisplay of multiplied elements\n”);

for(i =0 ; i < 3 ; ++ i ){ printf(“\n”); /* start a new line */ for(j = 0; j < 4; ++j){

val[i][j] = val[i][j] * 10; printf(“%3d “, val[i][j]);

} /* End for j */} /* End for i */

} /* End main */

Page 200: 240-101 Introduction to computer programming

#include <stdio.h>void display(int [3][4]); /* function prototype */void main(){ int i, j, val[3][4] = { 8,16,9,52,3,15,27,6,14,25,2,10 };

display(val);}

void display ( int nums[3][4]){ int row_num, col_num;

for(row_num = 0 ; row_num < 3 ; row_num++) { for(col_num = 0; col_num < 4; ++col_num) printf(“%4d “, nums[row_num][col_num]);printf(“\n”);} /* End for col_num */

} /* End display function */

Page 201: 240-101 Introduction to computer programming

อรเรยทมกกว 2 มต

เชน อารเรย 3 มตint volume[5][4][3];

อลเมนตแรกคอ volume[0][0][0] อลเมนตสดทายคอ volume[4][3][2]

3

42

Page 202: 240-101 Introduction to computer programming

ควมผดพลดของโปรแกรมทวไปเกยวกบอรเรย ลมประกาศตวแปร ใชงานตวแปรอารเรย นอกเหนอจากขอบเขตท

ประกาศไว

int error[3] , i;

for ( i = 0 ; i <=3 ; i++ )error[i] = i;

Page 203: 240-101 Introduction to computer programming

ควมผดพลดของโปรแกรมทวไปเกยว กบอรเรย (ตอ)

ลมใหคาเรมตนกบตวแปรอารเรย แลวนำาตวแปรนนไปใชงาน

int a1 = 5, a2 = 8;int total[2];

total[1] = total[0] + a1 + a2;

Page 204: 240-101 Introduction to computer programming

สยอกขระ (String) จดเปนโครงสรางของอารเรย 1 มต ‘สายอารเรยจะสนสดดวย \0’ เสมอ

char string[8];

string[0]=‘H’;string[1]=‘e’;string[2]=‘l’;string[3]=‘l’;string[4]=‘o’;string[5]=‘\0’;

จากตวอยางจะไดตวอกขระเปนขอความวา “Hello”

Page 205: 240-101 Introduction to computer programming

กรประกศตวแปรชนดสยอกขระ

ทำาไดเชนเดยวกบการประกาศตวแปรอารเรย 1 มตchar str1[] ={‘A’, ’B’, ’C’, ’D’, ’\0’};char str2[10]={‘A’, ’B’, ’C’, ’D’, ’\0’};char str3[] = “ABCD\0”;

ตวอยางการประกาศทผดchar str4[2] ={‘A’, ’B’, ’C’, ’D’, ’\0’};

Page 206: 240-101 Introduction to computer programming

กรกำหนดคใหกบตวแปรชนดสยอกขระ

การกำาหนดคาของอารเรยใหเปนขอความ จะไม สามารถใช โอเปอรเรเตอร = ไดโดยตรงเชน

char a[20];a = “Hello World!”;

ถาตองการเกบขอความใดๆ ลงในอารเรย ตอง ใชวธการเรยกใชฟงกชน เชน ฟงกชนมาตรฐาน

strcpy( ) ทนยามไวใน <string.h>

Page 207: 240-101 Introduction to computer programming

#include <stdio.h>#include <string.h>int main(){ char a[20] = "XXXXXXXXXX";

printf("%s\n", a); strcpy(a, "ABCD"); printf("%s\n", a); strcpy(a, "0123456789"); printf("%s\n", a);

return 0;}

ฟงกชน strcpy( ) จะทำาหนาทคดลอก ขอความตนฉบบใดๆ ทตองการไปยงอารเรย a โดย

ขอความทมอยเดมในอารเรย a จะถกเขยนทบ และ ขนาดของขอความใน a จะเปนขนาดของขอความ

ใหม

Page 208: 240-101 Introduction to computer programming

ฟงกชนมตรฐนทนยมใน<string.h>

strcpy (char str2[ ], char str1[ ] ) คดลอกขอความจาก str1 ไปใสใน str2

strlen (char str[ ]) หาความยาวสายอกขระ

strcat(char str2[ ], char str1[ ] ) นำาขอมลจากสายอกขระ str1 ไปใสตอทายสายอกขระ str2

ฯลฯ( เปด Help ของ Borlandc ในหวขอ string.h )

Page 209: 240-101 Introduction to computer programming

บทท 7สตรคเจอรStructure

Page 210: 240-101 Introduction to computer programming

Lesson1-210

วตถประสงค

เพอใหนกศกษารจกสตรคเจอร เขาใจรปแบบการจดเกบ และนำาสตรคเจอรไปใชงานได

เพอใหนกศกษาสามารถสงผานคาของสตรคเจอรไปยงฟงกชน และรบคาของสตรคเจอรจากฟงกชนได

Page 211: 240-101 Introduction to computer programming

Lesson1-211

1. ควมหมยของสตรคเจอรสตรคเจอร หรอกลมขอมลชนดโครงสราง (Structures) คอ กลมของขอมลทประกอบดวยสมาชกทเปนชนดเดยวกนหรอตางชนดกนรวมกนอยเปนกลมขอมล นนคอในสตรคเจอรอาจมสมาชกเปนจำานวนเตม ทศนยม และอกขระได นอกจากนในสตรคเจอรอาจมสมาชกทเปนอารเรย หรอแมแตสตรคเจอรดวยกได ยเนยน (Union) คอโครงสรางขอมลอกแบบหนง จะมความคลายกนกบสตรคเจอรมาก โดย ยเนยนจะมสมาชกไดหลายตว และมขอแตกตางจากสตรคเจอรคอ สมาชกของยเนยนแตละตวจะใชหนวยความจำารวมกน แมวาสมาชกแตละตวอาจจะมประเภทขอมลตางกน นนคอยเนยนยอมใหมการเกบขอมลทแตกตางกนไวในหนวยความจำาเดยวกน ในเวลาทตางกน

Page 212: 240-101 Introduction to computer programming

Lesson1-212

โครงสรงทวไปของสตรคเจอร struct ชอแบบของสตรคเจอร

{ ชนดของตวแปร ชอตวแปร [, ชอตวแปร , ...]; ชนดของตวแปร ชอตวแปร [, ชอตวแปร , ...]; ............ ชนดของตวแปร ชอตวแปร [, ชอตวแปร , ...];

} ชอตวแปร [, ชอตวแปร , ...];

struct ชอแบบของสตรคเจอร ชอตวแปร [, ชอตวแปร , ...];

Page 213: 240-101 Introduction to computer programming

Lesson1-213

struct address{ char name[30];

char detail[50];int age;char telephone[10];

};

Page 214: 240-101 Introduction to computer programming

Lesson1-214

เมอตองการสรางตวแปรสตรคเจอร สามารถกำาหนดไดดงน

struct address input1, input2;struct address{ char name[30];char detail[50];int age;char telephone[10];} input1, input2

Page 215: 240-101 Introduction to computer programming

Lesson1-215

ตวอยางการกำาหนดคาใหตวแปร input สามารถทำาไดดงน

strcpy(input.name, "User Example"); strcpy(input.detail, "1 ratutid

Haddyai Songkhla");input.age=20;

strcpy(input.telephone, "212895");

Page 216: 240-101 Introduction to computer programming

Lesson1-216

# include <stdio.h> void main()

{ struct { char name[3 0 ]; char detail[5 0 ]; int age; char telephone[1 0 ]; } address = {"User

1Example"," ratutid Haddyai

Songkhla",2 0 ,"2 1 2 8 9 5 "}newaddress; /* Display address of data groups* MMMMMMMMMMMMMMM MM MMMMMMM MMMMMMMM

is %p\n",&address); printf("Address of newaddress

variable is %p\n",&newaddress);

Page 217: 240-101 Introduction to computer programming

Lesson1-217

กรกำหนดชนดตวแปรชนดใหม

การกำาหนดชนดตวแปรชนดใหมในภาษาซ ทำาไดโดยโดยใชคำาสง typedef ซงสามารถใชในการลดขนตอนในการประกาศตวแปรชนดสตรคเจอรได

Page 218: 240-101 Introduction to computer programming

Lesson1-218

typedef struct {ชนดของตวแปร ชอตวแปร [, ชอตวแปร , ...];ชนดของตวแปร ชอตวแปร [, ชอตวแปร , ...];............ชนดของตวแปร ชอตวแปร [, ชอตวแปร , ...];

} ชอแบบของตวแปร;

Page 219: 240-101 Introduction to computer programming

Lesson1-219

typedef struct{ char name[30]; char detail[50];

int age; char telephone[10];

} addresstype;

Page 220: 240-101 Introduction to computer programming

Lesson1-220

เมอกำาหนดตวแปรหลงจากการกำาหนดดวย typedef แลว ไมตองมคำาวา struct นำาหนาชนดขอมลอก เชน

addresstype input1, input2;

Page 221: 240-101 Introduction to computer programming

Lesson1-221

กรผนสตรคเจอรใหฟงกชน

การผานคาตวแปรสตรคเจอรไปใหฟงกชนสามารถทำาไดเชนเดยวกบตวแปรเดยวทวไป โดยสามารถสงสมาชกของสตรคเจอรหรอ ทงกลมขอมลผานฟงกชนได สมาชกแตละตวของสตรคเจอรสามารถสงเปนอารกวเมนตของฟงกชน และสงกลบจากฟงกชน โดยผานประโยค returnได โดยสมาชกแตละตวของสตรคเจอรจะมการจดการลกษณะเดยวกบตวแปรธรรมดา

Page 222: 240-101 Introduction to computer programming

Lesson1-222

กรใชอรเรยกบสตรคเจอรจดประสงคในการสรางสตรคเจอรเพอเกบขอมล

รวมกนไวในโครงสรางเดยวกน ดงนนในการเกบขอมลสตรคเจอรจำานวนมากๆ จงตองกำาหนดใหเปนตวแปรอารเรยของสตรคเจอร เชนการกำาหนดให input เปนอารเรยของสตรคเจอร addressทมทเกบขอมลจำานวน 50 ชดสามารถกำาหนดไดดงน struct address input[50];

Page 223: 240-101 Introduction to computer programming

Lesson1-223

ชอตวแปรอรเรยของสตรคเจอร[ตำแหนงขอมลในอรเรย].ชอสมชกของสตรคเจอร

เชน การแสดงคาสมาชกในอารเรยของสตรคเจอร input สามารถทำาไดดงน int i;

for(i=0; i<50; i++) printf("%s\n",input[i].name);

Page 224: 240-101 Introduction to computer programming

Lesson1-224

ยเนยนในการกำาหนดตวแปรตามปกต ตวแปรแตละตวจะมพนท

เกบขอมลแยกจากกน แตยเนยนเปนการกำาหนดโครงสรางททำาใหตวแปรหรอกลมตวแปรทกำาหนดนนมาใชพนทเดยวกน

ยเนยนคลายกบสตรคเจอร คอยเนยนประกอบดวยสมาชกหลายตว ซงอาจมขอมลทแตกตางกน แตสมาชกทกตวในยเนยนจะใชเนอทหนวยความจำาของคอมพวเตอรรวมกน ในขณะทสมาชกแตละตวของสตรคเจอรจะมหนวยความจำาของตวเอง ดงนนการใชยเนยนสามารถประหยดหนวยความจำากบการทำางานทตองใชสมาชกหลายตว แตไมจำาเปนตองกำาหนดคาใหกบสมาชกทกตวในเวลาเดยวกน

ในการจดเกบขอมลของสมาชกทมชนดตางกน(ใชจำานวนเนอทหนวยความจำาไมเทากน ) ตวแปลโปรแกรมจะทำาใหเองโดยอตโนมต แตอยางไรกตามควรจะทราบวาในขณะนนเกบขอมลชนดใดในยเนยน เนองจากการเรยกใชขอมลผดชนด จะไดผลลพธทไมมความหมาย รปแบบทวไปในการกำาหนดยเนยนเปนดงน

Page 225: 240-101 Introduction to computer programming

Lesson1-225

union ชอแบบของยเนยน { ชนดของตวแปร ชอตวแปร[, ชอตวแปร, ...]; ชนดของตวแปร ชอตวแปร[, ชอตวแปร, ...]; ............ ชนดของตวแปร ชอตวแปร[, ชอตวแปร, ...]; } ชอตวแปร[, ชอตวแปร, ...];

Page 226: 240-101 Introduction to computer programming

Lesson1-226

union { long lvar; int ivar; char cvar;

} uvar;

Page 227: 240-101 Introduction to computer programming

บทท 8Software

Development on C

การพฒนาซอฟตแวรดวยภาษาซ

Page 228: 240-101 Introduction to computer programming

OObjectives (จดประสงค)อธบายขนตอนการพฒนาโปรแกรมได

ออกแบบขนตอนการเขยนโปรแกรมดวยภาษาซ

อธบายวธการคนหาแบบเรยงลำาดบ และจดลำาดบ แบบ bubble ได

Page 229: 240-101 Introduction to computer programming

Lesson1-229

กรประยกตใชงนโปรแกรมดวยภษซ

ภาษาซเปนภาษาระดบสงทสามารถทำางานแบบภาษาระดบตำา(assembly language)ได ดวยลกษณะการใชงานของภาษาและตวแปลภาษาทมความสามารถแปลงโปรแกรมไดอยางมประสทธภาพ การประยกตใชงานภาษาซเพอเขยนโปรแกรมจงสามารถทำาไดอยางหลากหลาย เชน การคำานวณทางคณตศาสตร การจดการแฟมขอมล การเขยนโปรแกรมระบบปฏบตการ การควบคมอปกรณตอพวงกบคอมพวเตอร หรอใชสรางโปรแกรมประยกตอนๆ ทงนตองมการพจารณาถงฟงกชนการใชงานของภาษาและตวแปลภาษาดวย การเขยนโปรแกรมดวยภาษาซ ไมเพยงตองรรปแบบภาษา(syntax) เทานน แตจำาเปนตองรขนตอนการสรางโปรแกรมดวย เพอใหโปรแกรมสามารถทำางานไดครบตามความตองการอยางถกตอง

Page 230: 240-101 Introduction to computer programming

Lesson1-230

1. ขนตอนกรพฒนโปรแกรม11. การระบความตองการใชงาน เปนขนตอนการ

อธบายลกษณะของงานทตองการนำาโปรแกรมใช12 การระบรายละเอยดการทำางานของโปรแกรม

เปนขนตอนทอธบายวาจะใชโปรแกรมไปทำาอะไรบางในงานทไดระบความตองการนน13 การออกแบบโปรแกรม เปนขนตอนทนำาราย

ละเอยดการทำางานของโปรแกรมมาออกแบบโดยการเขยน algorithms หรอ ลกษณะขอมลทจะตองใชในโปรแกรม

Page 231: 240-101 Introduction to computer programming

Lesson1-231

1.4 การเขยนโปรแกรม เปนขนตอนทนำาการออกแบบโปรแกรมไวมาเขยนเปนคำาสง ในภาษา คอมพวเตอร เพอสรางเปนโปรแกรมทสมบรณ

1.5 การทดสอบโปรแกรม เปนขนตอนเพอทดสอบโปรแกรมเพอหาขอผดพลาด และหนาทของโปรแกรม

1.6 การแกไขโปรแกรม เปนขนตอนทใชแกไขสวนผดพลาดจากการทดสอบใหถก ตอง และนำาไปทดสอบอกครง

1.7 การนำาโปรแกรมไปใชงาน เปนขนตอนการนำาโปรแกรมทผานจากการทดสอบแลวไปใชงานยงระบบงานทตองการ

1.8 การบำารงรกษาโปรแกรม เปนขนตอนการนำาโปรแกรมทมขอผดพลาดทพบจากการใชงานจรงไปแกไข

1.9 การปรบปรงและเปลยนแปลงโปรแกรม เปนขนตอนการนำาโปรแกรมทผานการ ใชงานแลว และตองการเปลยนแปลงบางอยาง เชน เพมเตมหนาท , เปลยนขนตอนวธ

ของโปรแกรมเพอเพม ประสทธภาพการทำางาน เปนตน

Page 232: 240-101 Introduction to computer programming

Lesson1-232

2. กรประยกตใชงนภษซการใชงานภาษาซเพอพฒนาโปรแกรมประยกตนน สามารถทำาได

โดยการดำาเนนตามขนตอนการพฒนาโปรแกรม แลวนำามาออกแบบการประมวลผลและลกษณะขอมลทใชงาน เพอใชสำาหรบเขยนโปรแกรมตอไปลกษณะโปรแกรมในภาษาซ ประกอบดวยสวนของโปรแกรมทเปนคำาสงในภาษาซ และตองมฟงกชนอยางนอยหนงฟงกชนคอฟงกชนหลก(main function) นอกจากการเขยนโปรแกรมเองแลวยงสามารถเรยกใชงานสวนของโปรแกรมทเขยนไวแลวในแฟมขอมลไลบราร(library file) กได โดยการระบแฟมขอมลหวเรอง(header file) ในคำาสง #include ดงแสดงไดตอไปน

Page 233: 240-101 Introduction to computer programming

Lesson1-233

แฟมขอมลหวเรอง

ฟงกชนหลก

ฟงกชน ยอย

#include <stdio.h>

main() printf(…….){ { printf(……….); function1(……….); }

scanf(……) function2(………..); {}

function1(……..){

}ไลบรารฟงกชน

function2(……..){

}

Page 234: 240-101 Introduction to computer programming

Lesson1-234

3. วธกรเรยงลำดบและกรคนหขอมล3.1 กรใช bubble sort เพอเรยงลำดบขอมลวธการเรยงลำาดบแบบ Bubble Sort เปนวธการจด

เรยงทมความซบซอนนอย โดยใชการเปรยบเทยบขอมลคทอยตดกน ถาไมเรยงลำาดบกนอยกจะสลบขอมลกน จนกระทงครบทกขอมล ในการเปรยบเทยบแตละรอบจะไดคาทมากทสด หรอนอยทสดตามทกำาหนดไวในลำาดบทตองการจากนนกเปรยบเทยบในรอบตอไป ซงขอมลทนำามาเปรยบเทยบกจะลดลงไปรอบละหนงขอมล เมอเปรยบเทยบไปเรอยๆ จะไดขอมลสดทายเหลออยหนงขอมล กจะไดชดขอมลทเรยงลำาดบตามทตองการ

Page 235: 240-101 Introduction to computer programming

Lesson1-235

ตวอยง ขอมลทไดจากการเรยงขอมลดวยวธ Bubble จากนอยไปมากเปนดงน

เรมตน 5 7 2 9 8 1 3 6 0 4

รอบท 1 5 2 7 8 1 3 6 0 4 9รอบท 2 2 5 7 1 3 6 0 4 8 9รอบท 3 2 5 1 3 6 0 4 7 8 9รอบท 4 2 1 3 5 0 4 6 7 8 9รอบท 5 1 2 3 0 4 5 6 7 8 9รอบท 6 1 2 0 3 4 5 6 7 8 9รอบท 7 1 0 2 3 4 5 6 7 8 9รอบท 8 0 1 2 3 4 5 6 7 8 9รอบท 9 0 1 2 3 4 5 6 7 8 9

Page 236: 240-101 Introduction to computer programming

Lesson1-236

32. กรคนหแบบเรยงลำดบ(Sequential Search หรอ Linear Search)ลกษณะของขอมลทจะทำาการคนหาจะมอยสองแบบกคอ

ขอมลทผานการจดเรยงแลวและ ขอมลทยงไมไดผาน การจดเรยง การคนหาขอมลในชดขอมลทยงไมไดจด

เรยงวธการหาทงายทสดคอวธการคนหาแบบเรยงลำาดบวธการคนหาวธนจะทำาการเปรยบเทยบขอมลไปเรอยๆจนกวาจะเจอขอมลตวทตองการหรอถาหาไมเจอกจะคน

ไปจนจบชดขอมล เนองจากเราไมสามารถบอกไดวาขอมลตวทเราตองการจะอยทตำาแหนงใดในชดขอมล

Page 237: 240-101 Introduction to computer programming

Lesson1-237

ตวอยางการคนหาขอมล 3 จากขอมลทยงไมจดเรยงจะไดผลดงตอไปนData for search are 1 3 6 8 9 5 3 2 2 4 4 4 4 7 7 7

7 7 7 7Found 3 in data number 2Found 3 in data number 7* Found 3 about 2 data *

จะไดวามตวเลข 3 อยในชดขอมลตำาแหนงท 2 และ 7 โดยการคนหา แบบเรยงลำาดบจากตนขอมลจนจบขอมลจำานวน 20 ครง