Upload
kashima-seto
View
23
Download
0
Embed Size (px)
Citation preview
ภาษาซเปนภาษาทมการพฒนาการมาอยางตอเนอง ภาษาซรนแรกท างานภายใตระบบปฏบตการคอส (cos) ปจจบนท างานภายใตระบบปฏบตการวนโดวส (Windows) ภาษาซใชวธแปลรหสค าสงใหเปนเลขฐานสองเรยกวา คอมไพเลอร การศกษาภมหลงการเปนมาของภาษาซและกระบวนการแปลภาษาจะชวยใหผใชภาษาซในรนและบรษทผผลตแตกตางกน สามารถใชภาษาไดอยางเขาใจมากขน
ลกษณะการท างานของภาษาซ
ภาษาซไดรบการพฒนาเมอป ค.ศ.1972 โดยนายเดนนส รตซ ตงชอวาซเพราะพฒนามาจากภาษา BCLP และภาษา B ในชวงแรกใชทดลองเขยนค าสงควบคมในหองปฏบตการเบล (Bell Laboratoorics) เทานน เมอป ค.ศ.1978 นายไบรอน เคอรนกฮน และ นายเดนนส รตซ รวมกนก าหนดนยามรายละเอยดของภาษาซ
ความเปนมาของภาษาซ
คอมไพเลอรเปนโปรแกรมทไดรบการพฒนามาเพอแปลลภาษาคอมพวเตอรรปแบบหนงมกใชกบโปรแกรมเชงโครงสราง ลกษณะการแปลจะอานรหสค าสงทงโปรแกรมตงแตบรรทดค าสงแรกถงบรรทดสดทาย หากมขอผดพลาดจะรายงานทกต าแหนงค าสงทใชผดกฎไวยากรณของภาษา กระบวนการคอมไพเลอรโปรแกรมค าสงของภาษาซ มดงน
การท างานของตอมไพเลอรภาษาซ
1.จดท าโปรแกรมตนฉบบ (Source Program) หลงจากพมค าสงงาน ตามโครงสรางภาษาทสมบรณแลวทกสวนประกอบ ใหบนทกโดยก าหนดชนดงานเปน .c เชน work.c
2.การแปลรหสค าสงเปนภาษาเครอง (Compile) หรอการบวด(Build) เครองจะตรวจสอบค าสงทละค าสง เพอวเคราะหวาใชงานไดถกตองตามรปแบบไวยากรณทภาษาซก าหนดไวหรอหากมขอผดพลาดจะแจงใหทราบ หากไมมขอผดพลาดจะไปกระบวนการ
3.การเชอมโยงโปรแกรม (Link) ภาษาซมฟงกชนมาตรฐานใหใชงาน เชน print f( ) ซงจดเกบไวในเฮดเดอรไพล หรอเรยกวา ไลบราร ในต าแหนงทก าหนดชอแตกตางกนไป ผใชตองศกษาและเรยกใชเฮดเดอรไฟลกบฟงกชนใหสมพนธเรยกวาเชอมโยงกบไลบราร กระบวนการนไดผลลพธเปนไฟลชนด .exe
สวนประกอบโครงสรางภาษาซ
ส าหรบโครงสรางของภาษาซในเบองตนนจะกลาวถงเฉพาะรายละเอยดทน าไปใชในการเขยนค าสงควบคมระดบพนฐาน ผสรางงานโปรแกรมจะใชงานสวนประกอบในภาษาซเพยง2สวน คอ สวนหวและสวนฟงกชนหลก ดงน
สวนหวของโปรแกรม(Header File)
หรอเรยกวาฟรโปรเซสเซอรไดเรกท ใชระบชอเฮดเดอร ควบคมการท างานของฟงกชนมาตรฐานทถกเรยกใชงานในสวน main( )
เฮดเดอรไฟลมชนดเปน h. จดเกบในไลบรารฟงกชน ผ เขยนค าสงตองศกษาวาฟงกชนทใชงานอยนนอยในเฮดเดอรไฟลชออะไร จงจะเรยกใชงานไดถกตอง นยมใชรปแบบค าสงดงน
อธบาย header_name ชอเฮดเดอรไฟลควบคมฟงกชนมาตรฐาน เชนฟงกชนprintf ใชควบคมการแสดงผล จดเกบในไลบรารชอ #include <stdio.h>
สวนฟงกชนหลก (Main Function)
เปนสวนเขยนค าสงควบคมการท างานภายในขอบเขตเครองหมาย{ }ของฟงกชนหลกคอ main( ) ตองเขยนค าสงตามล าดบขนตอนจากกระบวนการวเคราะหระบบงานเบองตนและขนวางแผนล าดบการท างานทไดจดท าไวลวงหนา เชน ล าดบการท างานดวยแผนผงโปรแกรมเพอลดขอผดพลาดในขนตอนล าดบค าสงควบคมงาน ในสวนนพงระมดระวงเรองเดยวคอตองใชงานค าสงตามรปแบบไวยากรณของภาษาซทก าหนดไว
การพมพค าสงควบคมงานในโครงสรางภาษาซ
ค าแนะน าในการพมพค าสงงาน ซงภาษาซเรยกวา ฟงกชน (ตอไปนจะเรยกวา ค าสงตามทนยมทวไป) ในสวนประกอบภายในโครงสรางภาษาซมแนวทางปฏบตดงน
1.ค าสงทใชควบคมการประมวลผมตามล าดบทวเคราะหไว ตองเขยนภายในเครองหมาย { } ทอยภายใตการควบคมงานของฟงกชนหลกชอ main
{}2.ปกตค าสงควบคมงานเปนตวอกษรพมพเลก ยกเวนบางค าสงทภาษา
ก าหนดวาตองเปนอกษรตวพมพใหญ ตองปฏบตตามนน เพราะภาษาซมความแตกตางเรองตวอกษร
3.เมอสนสดค าสงงาน ตองพมพโคลอน(:)4. ใน 1 บรรทด พมพไดมากกวา 1 ค าสง แตนยมบรรทดละ 1 ค าสง เพราะวาอานโปรแกรมงายเมอมขอผดพลาด ยอมตรวจสอบและคนหาเพอแกไขไดเรว5. การพมพค าสง หากมสวนยอย นยมเคาะเยองเขาไป เพออานโปรแกรมไดงายขน เมอมขอผดพลาดยอมตรวจสอบและคนหาเพอแกไขไดรวดเรว
ค าสงจดเกบขอมลลงหนวยความจ า
การจดเกบขอมลลงหนวยความจ าคอมพวเตอร ภาษาก าหนดใหด าเนนการผานซอ (identifier) ทผสรางงานโปรแกรมเปนผก าหนดเอง ระบบคอมพวเตอรจะจดเกบชอและต าแหนงทอย (address) ในหนวยความจ า เพออางองน าขอมลทจดเกบนนมาใชงาน
การก าหนดชอทใชเกบขอมลตองท าภายใตกฎเกณฑ และตองศกษาวธก าหนดลกษณะการจดเกบขอมลทภาษาก าหนดไว ลกษณะการจดเกบขอมลม 2 แบบคอ แบบคาคงทและแบบตวแปร ทงนกอนทจะเขยนค าสงก าหนดการจดเกบขอมล ควรมความรในเรองชนดขอมลกอน
ค าสงจดเกบขอมลลงหนวยความจ า
3.1 ชนดขอมลแบบพนฐานการจดเกบขอมลลงหนวยความจ าทงแบบคาคงทหรอแบบตวแปร ตองก าหนดชนดขอมลใหระบบรบทราบ ในทนกลาวถงชนดขอมลแบบพนฐาน 3 กลมหลกเทานน3.2 ค าสงจดเกบขอมลแบบคาคงทประสทธภาพค าสง : ลกษณะการจดเกบขอมลในหนวยความจ าไมสามารถเปลยนแปลงไดรปแบบ อธบาย data_type คอทชนดขอมลแบบพนฐานVar คอชอหนวยความจ าทผใชตองก าหนดตามกฎการตงชอData คอขอมลทก าหนดเปนคาคงท
ค าสงจดเกบขอมลลงหนวยความจ า
3.3ค าสงจดเกบขอมลตวแปรประสทธภาพค าสง :ลกษณะการจดเกบขอมลในหนวยความจ าสามารถเปลยนแปลงไดรปแบบ 1รปแบบ 2 อธบาย var_type คอหนวยชนดขอมลแบบพนฐานVar name คอชอหนวยความจ าทผใชตองก าหนดตามกฎการตงชอData คอขอมลทก าหนดเปนคาเรมตน (อาจมหรอไมมกได)
ค าสงควบคมการท างานขนพนฐาน
ค าสงทใชควบคมการท างานขนพนฐาน ม3 กลมใหญคอ ค าสงรบขอมลจากแปนพมพแลว น าไปจดเกบหนวยความจ า (input) การเขยนสมการค านวณโดยใชนพจนทางคณตศาสตร (process) และค าสงแสดงผลขอมล หรอขอมลทจดเกบในหนวยความจ า (output)
4.1 ค าสงแสดงผล printf ( )ประสทธภาพค าสง : ใชแสดงผลสงตอไปนเชน ขอความ ขอมลจากคาคงท หรอตวแปลทจอภาพ
ค าสงควบคมการท างานขนพนฐาน
4.2 ค าสงรบขอมล : รบขอมลจากแปนพมพ แลวจดเกบลงหนวยความจ า ของตวแปลรปแบบ อธบาย String _format คอรปแบบของการแสดงผลขอมลเทานน เชน %dAddress_list คอการระบต าแหนงทอยในหนวยความจ า ตอใชสญลกษณ & (Ampersand) น าหนาชอตวแปลเสมอ
ค าสงควบคมการท างานขนพนฐาน
4.3 ค าสงประมวลผล : expreeionประสทธภาพค าสง : เขยนค าสงแบบนพจนเพอประมวลผล แลวน าขอมลทไดไปจดเกบ ในหนวยความจ าของตวแปล ทตองก าหนดชอและชนดขอมลไวแลวรปแบบ อธบาย var คอ ชอหนวยความจ าชนดตวแปรexpreeion คอสมการนพจน เชน สตรค านวณทางคณตศาสตร
ค าสงแสดงผล-รบขอมล เฉพาะอกขระ
ภาษาซมค าสงแสดงผลและรบขอมลเฉพาะขอมลประเภท 1 อกขระ (char) ดงน
5.1 ค าสง putchar ( ) 5.2 ค าสง getchar ( )5.3 ค าสง getch ( ) 5.4 ค าสง getche ( )
ค าสงแสดงผล-รบขอมล เฉพาะอกขระ
5.1 ค าสง putchar ( )แสดงผลขอมลจากหนวยความจ าของตวแปร ทางจอภาพครงละ1อกขระเทานนรปแบบ Putchar ( char_argument) ;
อธบาย putchar_argument คอ ขอมลชนดอกขระ
5.2 ค าสง getchar ( )
รบขอมลจากแปนพมพครงละ 1 อกขระ และแสดงอกขระทจอภาพ จากนนตองกดแปนพมพท Enter เพอน าขอมลบนทกลงหนวยความจ าดวย
รปแบบท1 ไมน าขอมลจดเกบลงหนวยความจ าตวแปรรปแบบท2 น าขอมลจดเกบลงหนวยความจ าของตวแปร
ค าสงแสดงผล-รบขอมล เฉพาะอกขระ
5.3 ค าสง getch ( )
รบขอมลจากแปนพมพครงละ 1 อกขระ แตไมปรากฏอกษรบนจอภาพและไมตองกดแปน Enter
รปแบบ 1 ไมน าขอมลจดเกบลงหนวยความจ าตวแปรรปแบบ 2 น าขอมลจดเกบลงหนวยความจ าตวแปร
5.4 ค าสง getche ( )รบขอมลจากแปนพมพครงละ 1 อกขระ และแสดงอกษรบนจอภาพ และไม
ตองกดแปน Enterรปแบบ1 ไมน าขอมลจดเกบลงหนวยความจ าของตวแปร
รปแบบ2 น าขอมลจดเกบลงหนวยความจ าของตวแปร
ภาษาซมค าสงใชในดารรบขอมลเฉพาะประเภทขอความ (String) ในภาษาซคอชนดขอมล char[n] จดเกบในหนวยความจ า และแสดงผลขอมลประเภทขอความเทานน มรายละเอยดดงน
6.1 ค าสง puts() แสดงผลเฉพาะประเภทขอความทางจอภาพครงละ 1 ขอความ
ตวอยางโปรแกรมท 2.6 แสดงประสทธภาพค าสง puts()แนวคดในการเขยนค าสงควบคมการท างาน
1.เขยนค าสงก าหนดคาขอความในตวแปรชอ wordChar word [15] = “*Example*”;
2.เขยนค าสงควบคมการแสดงผลในลกษณะขอความดวย putsPuts (word) ;Puts (“*************”);
ค าสงแสดงผล-เฉพาะขอมล เฉพาะขอความ
ค าสงแสดงผล-เฉพาะขอมล เฉพาะขอความ
6.2 ค าสง gets( ) รบขอมล ขอความจากแปนพมพและตองกดแปน Enterรปแบบ 1ไมน าขอมลจดเกบลงหนวยความจ าของตวแปร
รปแบบ 2 น าขอมลจดเกบลงหนวยความจ าของตวแปร
ตวอยางโปรแกรมท 2.7 แสดงประสทธภาพค าสง get ( )แนวคดในการเขยนค าสงควบคมกาท างาน
1.เขยนค าสงใหรบขอมลนดขอความจากแปนพมพและตองกดแปน Enter เพอนน าขอความบนทกลงตวแปรชนดขอความดวยค าสง gets (word);2.เขยนค าสงควบคมใหแสดงผลลกษณะขอความดวย printf (You name is = %s\n”,word) ;