22

การเขียนคำสั่งควบคุม

Embed Size (px)

Citation preview

Page 1: การเขียนคำสั่งควบคุม
Page 2: การเขียนคำสั่งควบคุม

ภาษาซเปนภาษาทมการพฒนาการมาอยางตอเนอง ภาษาซรนแรกท างานภายใตระบบปฏบตการคอส (cos) ปจจบนท างานภายใตระบบปฏบตการวนโดวส (Windows) ภาษาซใชวธแปลรหสค าสงใหเปนเลขฐานสองเรยกวา คอมไพเลอร การศกษาภมหลงการเปนมาของภาษาซและกระบวนการแปลภาษาจะชวยใหผใชภาษาซในรนและบรษทผผลตแตกตางกน สามารถใชภาษาไดอยางเขาใจมากขน

ลกษณะการท างานของภาษาซ

Page 3: การเขียนคำสั่งควบคุม

ภาษาซไดรบการพฒนาเมอป ค.ศ.1972 โดยนายเดนนส รตซ ตงชอวาซเพราะพฒนามาจากภาษา BCLP และภาษา B ในชวงแรกใชทดลองเขยนค าสงควบคมในหองปฏบตการเบล (Bell Laboratoorics) เทานน เมอป ค.ศ.1978 นายไบรอน เคอรนกฮน และ นายเดนนส รตซ รวมกนก าหนดนยามรายละเอยดของภาษาซ

ความเปนมาของภาษาซ

Page 4: การเขียนคำสั่งควบคุม

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

การท างานของตอมไพเลอรภาษาซ

Page 5: การเขียนคำสั่งควบคุม

1.จดท าโปรแกรมตนฉบบ (Source Program) หลงจากพมค าสงงาน ตามโครงสรางภาษาทสมบรณแลวทกสวนประกอบ ใหบนทกโดยก าหนดชนดงานเปน .c เชน work.c

2.การแปลรหสค าสงเปนภาษาเครอง (Compile) หรอการบวด(Build) เครองจะตรวจสอบค าสงทละค าสง เพอวเคราะหวาใชงานไดถกตองตามรปแบบไวยากรณทภาษาซก าหนดไวหรอหากมขอผดพลาดจะแจงใหทราบ หากไมมขอผดพลาดจะไปกระบวนการ

Page 6: การเขียนคำสั่งควบคุม

3.การเชอมโยงโปรแกรม (Link) ภาษาซมฟงกชนมาตรฐานใหใชงาน เชน print f( ) ซงจดเกบไวในเฮดเดอรไพล หรอเรยกวา ไลบราร ในต าแหนงทก าหนดชอแตกตางกนไป ผใชตองศกษาและเรยกใชเฮดเดอรไฟลกบฟงกชนใหสมพนธเรยกวาเชอมโยงกบไลบราร กระบวนการนไดผลลพธเปนไฟลชนด .exe

Page 7: การเขียนคำสั่งควบคุม

สวนประกอบโครงสรางภาษาซ

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

Page 8: การเขียนคำสั่งควบคุม

สวนหวของโปรแกรม(Header File)

หรอเรยกวาฟรโปรเซสเซอรไดเรกท ใชระบชอเฮดเดอร ควบคมการท างานของฟงกชนมาตรฐานทถกเรยกใชงานในสวน main( )

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

อธบาย header_name ชอเฮดเดอรไฟลควบคมฟงกชนมาตรฐาน เชนฟงกชนprintf ใชควบคมการแสดงผล จดเกบในไลบรารชอ #include <stdio.h>

Page 9: การเขียนคำสั่งควบคุม

สวนฟงกชนหลก (Main Function)

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

Page 10: การเขียนคำสั่งควบคุม

การพมพค าสงควบคมงานในโครงสรางภาษาซ

ค าแนะน าในการพมพค าสงงาน ซงภาษาซเรยกวา ฟงกชน (ตอไปนจะเรยกวา ค าสงตามทนยมทวไป) ในสวนประกอบภายในโครงสรางภาษาซมแนวทางปฏบตดงน

1.ค าสงทใชควบคมการประมวลผมตามล าดบทวเคราะหไว ตองเขยนภายในเครองหมาย { } ทอยภายใตการควบคมงานของฟงกชนหลกชอ main

{}2.ปกตค าสงควบคมงานเปนตวอกษรพมพเลก ยกเวนบางค าสงทภาษา

ก าหนดวาตองเปนอกษรตวพมพใหญ ตองปฏบตตามนน เพราะภาษาซมความแตกตางเรองตวอกษร

3.เมอสนสดค าสงงาน ตองพมพโคลอน(:)4. ใน 1 บรรทด พมพไดมากกวา 1 ค าสง แตนยมบรรทดละ 1 ค าสง เพราะวาอานโปรแกรมงายเมอมขอผดพลาด ยอมตรวจสอบและคนหาเพอแกไขไดเรว5. การพมพค าสง หากมสวนยอย นยมเคาะเยองเขาไป เพออานโปรแกรมไดงายขน เมอมขอผดพลาดยอมตรวจสอบและคนหาเพอแกไขไดรวดเรว

Page 11: การเขียนคำสั่งควบคุม

ค าสงจดเกบขอมลลงหนวยความจ า

การจดเกบขอมลลงหนวยความจ าคอมพวเตอร ภาษาก าหนดใหด าเนนการผานซอ (identifier) ทผสรางงานโปรแกรมเปนผก าหนดเอง ระบบคอมพวเตอรจะจดเกบชอและต าแหนงทอย (address) ในหนวยความจ า เพออางองน าขอมลทจดเกบนนมาใชงาน

การก าหนดชอทใชเกบขอมลตองท าภายใตกฎเกณฑ และตองศกษาวธก าหนดลกษณะการจดเกบขอมลทภาษาก าหนดไว ลกษณะการจดเกบขอมลม 2 แบบคอ แบบคาคงทและแบบตวแปร ทงนกอนทจะเขยนค าสงก าหนดการจดเกบขอมล ควรมความรในเรองชนดขอมลกอน

Page 12: การเขียนคำสั่งควบคุม

ค าสงจดเกบขอมลลงหนวยความจ า

3.1 ชนดขอมลแบบพนฐานการจดเกบขอมลลงหนวยความจ าทงแบบคาคงทหรอแบบตวแปร ตองก าหนดชนดขอมลใหระบบรบทราบ ในทนกลาวถงชนดขอมลแบบพนฐาน 3 กลมหลกเทานน3.2 ค าสงจดเกบขอมลแบบคาคงทประสทธภาพค าสง : ลกษณะการจดเกบขอมลในหนวยความจ าไมสามารถเปลยนแปลงไดรปแบบ อธบาย data_type คอทชนดขอมลแบบพนฐานVar คอชอหนวยความจ าทผใชตองก าหนดตามกฎการตงชอData คอขอมลทก าหนดเปนคาคงท

Page 13: การเขียนคำสั่งควบคุม

ค าสงจดเกบขอมลลงหนวยความจ า

3.3ค าสงจดเกบขอมลตวแปรประสทธภาพค าสง :ลกษณะการจดเกบขอมลในหนวยความจ าสามารถเปลยนแปลงไดรปแบบ 1รปแบบ 2 อธบาย var_type คอหนวยชนดขอมลแบบพนฐานVar name คอชอหนวยความจ าทผใชตองก าหนดตามกฎการตงชอData คอขอมลทก าหนดเปนคาเรมตน (อาจมหรอไมมกได)

Page 14: การเขียนคำสั่งควบคุม

ค าสงควบคมการท างานขนพนฐาน

ค าสงทใชควบคมการท างานขนพนฐาน ม3 กลมใหญคอ ค าสงรบขอมลจากแปนพมพแลว น าไปจดเกบหนวยความจ า (input) การเขยนสมการค านวณโดยใชนพจนทางคณตศาสตร (process) และค าสงแสดงผลขอมล หรอขอมลทจดเกบในหนวยความจ า (output)

4.1 ค าสงแสดงผล printf ( )ประสทธภาพค าสง : ใชแสดงผลสงตอไปนเชน ขอความ ขอมลจากคาคงท หรอตวแปลทจอภาพ

Page 15: การเขียนคำสั่งควบคุม

ค าสงควบคมการท างานขนพนฐาน

4.2 ค าสงรบขอมล : รบขอมลจากแปนพมพ แลวจดเกบลงหนวยความจ า ของตวแปลรปแบบ อธบาย String _format คอรปแบบของการแสดงผลขอมลเทานน เชน %dAddress_list คอการระบต าแหนงทอยในหนวยความจ า ตอใชสญลกษณ & (Ampersand) น าหนาชอตวแปลเสมอ

Page 16: การเขียนคำสั่งควบคุม

ค าสงควบคมการท างานขนพนฐาน

4.3 ค าสงประมวลผล : expreeionประสทธภาพค าสง : เขยนค าสงแบบนพจนเพอประมวลผล แลวน าขอมลทไดไปจดเกบ ในหนวยความจ าของตวแปล ทตองก าหนดชอและชนดขอมลไวแลวรปแบบ อธบาย var คอ ชอหนวยความจ าชนดตวแปรexpreeion คอสมการนพจน เชน สตรค านวณทางคณตศาสตร

Page 17: การเขียนคำสั่งควบคุม

ค าสงแสดงผล-รบขอมล เฉพาะอกขระ

ภาษาซมค าสงแสดงผลและรบขอมลเฉพาะขอมลประเภท 1 อกขระ (char) ดงน

5.1 ค าสง putchar ( ) 5.2 ค าสง getchar ( )5.3 ค าสง getch ( ) 5.4 ค าสง getche ( )

Page 18: การเขียนคำสั่งควบคุม

ค าสงแสดงผล-รบขอมล เฉพาะอกขระ

5.1 ค าสง putchar ( )แสดงผลขอมลจากหนวยความจ าของตวแปร ทางจอภาพครงละ1อกขระเทานนรปแบบ Putchar ( char_argument) ;

อธบาย putchar_argument คอ ขอมลชนดอกขระ

5.2 ค าสง getchar ( )

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

รปแบบท1 ไมน าขอมลจดเกบลงหนวยความจ าตวแปรรปแบบท2 น าขอมลจดเกบลงหนวยความจ าของตวแปร

Page 19: การเขียนคำสั่งควบคุม

ค าสงแสดงผล-รบขอมล เฉพาะอกขระ

5.3 ค าสง getch ( )

รบขอมลจากแปนพมพครงละ 1 อกขระ แตไมปรากฏอกษรบนจอภาพและไมตองกดแปน Enter

รปแบบ 1 ไมน าขอมลจดเกบลงหนวยความจ าตวแปรรปแบบ 2 น าขอมลจดเกบลงหนวยความจ าตวแปร

5.4 ค าสง getche ( )รบขอมลจากแปนพมพครงละ 1 อกขระ และแสดงอกษรบนจอภาพ และไม

ตองกดแปน Enterรปแบบ1 ไมน าขอมลจดเกบลงหนวยความจ าของตวแปร

รปแบบ2 น าขอมลจดเกบลงหนวยความจ าของตวแปร

Page 20: การเขียนคำสั่งควบคุม

ภาษาซมค าสงใชในดารรบขอมลเฉพาะประเภทขอความ (String) ในภาษาซคอชนดขอมล char[n] จดเกบในหนวยความจ า และแสดงผลขอมลประเภทขอความเทานน มรายละเอยดดงน

6.1 ค าสง puts() แสดงผลเฉพาะประเภทขอความทางจอภาพครงละ 1 ขอความ

ตวอยางโปรแกรมท 2.6 แสดงประสทธภาพค าสง puts()แนวคดในการเขยนค าสงควบคมการท างาน

1.เขยนค าสงก าหนดคาขอความในตวแปรชอ wordChar word [15] = “*Example*”;

2.เขยนค าสงควบคมการแสดงผลในลกษณะขอความดวย putsPuts (word) ;Puts (“*************”);

ค าสงแสดงผล-เฉพาะขอมล เฉพาะขอความ

Page 21: การเขียนคำสั่งควบคุม

ค าสงแสดงผล-เฉพาะขอมล เฉพาะขอความ

6.2 ค าสง gets( ) รบขอมล ขอความจากแปนพมพและตองกดแปน Enterรปแบบ 1ไมน าขอมลจดเกบลงหนวยความจ าของตวแปร

รปแบบ 2 น าขอมลจดเกบลงหนวยความจ าของตวแปร

ตวอยางโปรแกรมท 2.7 แสดงประสทธภาพค าสง get ( )แนวคดในการเขยนค าสงควบคมกาท างาน

1.เขยนค าสงใหรบขอมลนดขอความจากแปนพมพและตองกดแปน Enter เพอนน าขอความบนทกลงตวแปรชนดขอความดวยค าสง gets (word);2.เขยนค าสงควบคมใหแสดงผลลกษณะขอความดวย printf (You name is = %s\n”,word) ;

Page 22: การเขียนคำสั่งควบคุม