240-101 introduction to computer programming

Post on 19-Mar-2016

35 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

240-101240-101Introduction to Introduction to

computer computer programmingprogramming

บทท 1 Introduction to Basic

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

เบองตน

Lesson1-3

วตถประสงค

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

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

Lesson1-4

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

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

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

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

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

Lesson1-5

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

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

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)

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)

Lesson1-8

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

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

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

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

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

Lesson1-9

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

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

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

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

Lesson1-10

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

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

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

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

Lesson1-11

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

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

Lesson1-12

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

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

Lesson1-13

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

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

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

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

Lesson1-14

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

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

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

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

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

Lesson1-15

5. นาฬกา (Clock)

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

Lesson1-16

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

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

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

Lesson1-17

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

Lesson1-18

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

Lesson1-19

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

Lesson1-20

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

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

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

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

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

Lesson1-21

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

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

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

Lesson1-22

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

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

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

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

Program)

Lesson1-23

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

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

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

Lesson1-24

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

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

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

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

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

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

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

Lesson1-25

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

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

Lesson1-26

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

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

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

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

บทท 2Introduction to C

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

ภาษาซ

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

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

Lesson1-29

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

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

Lesson1-30

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

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

Lesson1-31

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

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

Lesson1-32

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

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

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

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

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

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

Lesson1-33

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

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

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

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

Lesson1-35

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

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

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

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

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

Lesson1-36

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

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

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

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

Lesson1-37

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

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

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

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

Lesson1-38

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

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

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

Lesson1-39

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

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

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

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

Lesson1-40

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

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

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

Lesson1-41

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

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

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

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

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

Lesson1-42

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

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

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

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

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

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

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

Lesson1-43

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

Source file

C Compiler

ComputerObject fileComputer Execute file

Linker Library

Lesson1-44

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

ดงน

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

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

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

Lesson1-45

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

Lesson1-46

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

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

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

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

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

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

Lesson1-47

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

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

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

a = 23;

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

}

Lesson1-48

Output

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

Lesson1-49

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

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

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

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

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

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

Lesson1-50

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

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

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

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

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

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

Lesson1-52

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

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

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

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

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

Lesson1-53

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

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

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

Lesson1-54

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

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

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

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

Lesson1-55

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

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

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

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

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

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

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

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 แสดงชนดและขนาดของขอมลทใชในภาษาซ

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

}

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 เปนตวแปรทใชสำาหรบเกบคาทเปน เลขจำานวนเตม แบบยาวทไมคดเครองหมาย

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” */

Lesson1-61

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

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

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

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

Lesson1-62

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

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

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

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

Lesson1-63

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

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

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

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

Lesson1-64

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

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

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

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

Lesson1-65

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

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

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

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

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

Lesson1-66

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

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

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

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

Lesson1-67

2.2 แอสก (ASCII)

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

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

Lesson1-68

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

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

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

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

Lesson1-69

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

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

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

printf ( control , argument list ) ;

Lesson1-70

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

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

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

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

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

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

Lesson1-72

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

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

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

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

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

Lesson1-73

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

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

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

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 แสดงตว ตงๆ ทมใชในภษซ

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

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

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

Lesson1-78

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

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

ตวอยางเชน

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

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

}

Lesson1-79

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

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

|1234567890| | price|

Lesson1-80

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

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

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

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

Lesson1-81

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

char a; int b; charname[22];

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

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

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

Lesson1-82

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

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

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

name */

Lesson1-83

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

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

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

Lesson1-84

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

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

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

Lesson1-85

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

ch=getchar ( ); }

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

Lesson1-86

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

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

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

Lesson1-87

gets ( n ) ;

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

gets(name); }

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

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

เกบ \0 เอาไว

Lesson1-88

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

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

}

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

Lesson1-89

puts ( n ) ;

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

gets (name) ;puts (name);

}

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

Lesson1-90

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

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

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 แสดงประเภทของตวดำาเนนการทางคณตศาสตร

Lesson1-92

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

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

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

Lesson1-93

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

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

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

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

Lesson1-94

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

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

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

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

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

|| หรอ

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

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 */

Lesson1-96

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

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

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

Lesson1-97

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

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

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

Lesson1-98

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

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

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

Lesson1-99

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

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

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

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

Lesson1-100

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

ตวอยาง

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

ผลลพธ2

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

Lesson1-102

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

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

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

Lesson1-103

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

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

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

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

ขอมลชนด float

บทท 3Structured Program

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

โครงสรง

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

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

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

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

Lesson1-106

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

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

Lesson1-107

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

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

actions are to be executed)

Lesson1-108

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

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

Lesson1-109

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

Lesson1-110

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

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

Lesson1-111

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

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

Lesson1-112

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

Lesson1-113

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

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

Lesson1-114

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

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

Lesson1-115

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

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

printf(“Passed\n”);

Lesson1-116

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

Lesson1-117

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

“พมพ Passed”else

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

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

elseprintf(“Failed\n”);

Lesson1-118

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

Lesson1-119

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

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

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

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

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

Lesson1-120

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

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

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

product = 2 * product;

Lesson1-121

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

Lesson1-122

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

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

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

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

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

Lesson1-123

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

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

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

Lesson1-124

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

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

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

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

บทท 4Program Control

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

หวขอ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)

4.1 คำสง if (The if Statement)

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

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

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

เงอนไขcondition

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

TRUEFALSE

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

statement T ;

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

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

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

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

กรณคำาสง 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”);

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

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

ตวอยาง/*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;

4.2 คำสง switch (The switch Statement)

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

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

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

switch Statement SYNTAX : switch (controlling expression) {

case lable_set1 :

statements1

break;case label_set2 :

statements2

break;:.case lable_setn :

statementsn

break;default :} statementsd

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

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

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

break;

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

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

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

looprepetition condition

statement

TRUE

FALSE

Exit loop

While StatementSYNTAX : While (loop repetition condition)

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

4.5 คำสง for

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

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

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

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

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

4.6 คำสง do-while

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

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

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

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

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

4.7 คำสง continue

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

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

continue;

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

}}

ผลลพธไดดงน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

บทท 5 ฟงกชน

(Function)

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

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

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

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

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

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

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

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

Program Module ในภษC

FUNCTIONS IN C

C STANDARD

LIBRARY

PROGRAMMER

DEFINED FUNCTION

Function Algorithm

BOSS(calling func)

WORKER(called func)

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

3. รายงานผล

2. ทำางาน

main

worker1 worker3worker2

worker4 worker5

Complex Function

กรนยมฟงกชน/* 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;

}

/* 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;

}

main( )

x

square( )

y

COPY ARGUMENTS

COPY RETURN-VALUE

y * yprintf

กรนยมฟงกชน

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

{declarationsstatements

}

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

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

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

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

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

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

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

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

}

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

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

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

}

Function แบบตาง ๆ

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

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

}

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

void main(){my_print(2);

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

main my_print

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

2. พมพ

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

/* 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. เสรจแลวครบ

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

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

}

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

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

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

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

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

/* 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

/* 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

/* 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

/* 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

/* 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

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

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

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

/* 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

/* 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

/* 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

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

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ปนสวนหนงของนพจน

ตวอยางโปรแกรมทไมใชฟงกชน#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);

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

ตวอยางโปรแกรมทใชฟงกชน#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);

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

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

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

บทท 6

ProgramControl

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

อารเรย บทสรป

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

บทนำ

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

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

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

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

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

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

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

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

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

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

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

กรใช 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];

รบคา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)

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)

การประกาศตวแปรแบบอารเรยพรอมทงกำาหนดคาเรมตนสามารถทำาไดโดยไมจำาเปนตองกำาหนดขนาดของอารเรย กไดเชน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 ไวทายขอความ

กรสงผนอรเรยไปยงฟงกชน กรณสงผนบงอลเมนต#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);

}

กรณสงผนทกอลเมนต#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);

}

ตวแปรอารเรยแบบ 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 มต

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]

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 มต

กรใหคเรมตน (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};

#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]);}

}

#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 */

#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 */

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

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

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

3

42

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

ประกาศไว

int error[3] , i;

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

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

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

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

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

สยอกขระ (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”

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

ทำาไดเชนเดยวกบการประกาศตวแปรอารเรย 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’};

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

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

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

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

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

#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 จะเปนขนาดของขอความ

ใหม

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

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

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

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

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

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

Lesson1-210

วตถประสงค

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

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

Lesson1-211

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

Lesson1-212

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

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

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

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

Lesson1-213

struct address{ char name[30];

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

};

Lesson1-214

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

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

Lesson1-215

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

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

Haddyai Songkhla");input.age=20;

strcpy(input.telephone, "212895");

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

Lesson1-217

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

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

Lesson1-218

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

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

Lesson1-219

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

int age; char telephone[10];

} addresstype;

Lesson1-220

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

addresstype input1, input2;

Lesson1-221

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

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

Lesson1-222

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

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

Lesson1-223

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

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

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

Lesson1-224

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

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

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

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

Lesson1-225

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

Lesson1-226

union { long lvar; int ivar; char cvar;

} uvar;

บทท 8Software

Development on C

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

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

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

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

Lesson1-229

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

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

Lesson1-230

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

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

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

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

Lesson1-231

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

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

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

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

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

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

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

Lesson1-232

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

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

Lesson1-233

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

ฟงกชนหลก

ฟงกชน ยอย

#include <stdio.h>

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

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

function1(……..){

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

function2(……..){

}

Lesson1-234

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

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

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

Lesson1-236

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

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

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

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

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 ครง

top related