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

Post on 26-Jan-2017

19 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

การเขยนคำาสงควบคมขนพนฐาน

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

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

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

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

การทำางานของตอมไพเลอรภาษาซคอมไพเลอรเปนโปรแกรมทไดรบการพฒนามาเพอแปลภาษาคอมพวเตอรรปแบบหนงมกใชกบ

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

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

2.การแปลรหสคำาสงเปนภาษาเครอง (Compile) หรอการบวด (Build) เครองจะตรวจสอบคำาสงทละคำาสง  เพอวเคราะหวาใชงานไดถกตองตามรปแบบไวยากรณทภาษาซกำาหนดไวหรอหากมขอผดพลาดจะแจงใหทราบ  หากไมมขอผดพลาดจะไปกระบวนการ33.การเชอมโยงโปรแกรม (Link) ภาษาซมฟงกชนมาตรฐานใหใชงาน เชน printf() ซงจดเกบไวในเฮดเดอรไพล  หรอเรยกวา  ไลบราร ในตำาแหนงทกำาหนดชอแตกตางกนไป ผใชตองศกษาและเรยกใชเฮดเดอรไฟลกบฟงกชนใหสมพนธเรยกวาเชอมโยงกบไลบราร กระบวนการนไดผลลพธเปนไฟลชนด .exe

2.สวนประกอบในโครงสรางภาษาซภาษาซเปนภาษาทมโครงสรางในการเขยนโปรแกรมทชดเจน ซงมรปแบบของโครงสรางโปรแกรม ดงน1.  สวนของการประกาศสวนหวของโปรแกรม                         หรอทเรยกวา เฮดเดอรไฟล (Header File) เปนการเรยกใชเฮดเดอรไฟลเขามารวมใชงานภายในโปรแกรม โดยไฟลเฮดเดอรเปนไฟลทใชในการรวบรวมฟงกชนการทำางานตาง ๆ ทสามารถเรยกใชได เชน ภายในเฮดเดอรไฟล  stdio.h  เปนไฟลเฮดเดอรทรวบรวมเกยวกบฟงกชนมาตรฐานทางดานการรบขอมล (Input)  และแสดงผลขอมล (Output) ยกตวอยางเชน ฟงกชน printf( );  เปนฟงกชนในการแสดงผลขอมล ซงบรรจอยในไฟล  stdio.h  เปนตน 2. สวนของชอฟงกชน ในทน ฟงกชนทกำาหนดขนมาชอฟงกชน main() โดยทกโปรแกรมจะตองมฟงกชน main() ทำาหนาทเปนฟงกชนหลกในการทำางานในการประมวลผลโปรแกรมทกครง โปรแกรมจะทำาการประมวลผลทฟงกชน main() เปนฟงกชนแรก ซงในการเขยนโปรแกรมภาษาซทกครงจะขาดฟงกชน main() ไมได

3. สวนตวโปรแกรม สวนนเปนสวนในการเขยนคำาสงตาง ๆ เพอสงใหคอมพวเตอรทำางาน ในการเขยนคำาสงจะเขยนภายในเครองหมายปกกาเปด { และเครองหมายปกกาปด } โดยปกตสวนของการเขยนโปรแกรมจะสามารถแบงออกไดเปน 2 สวนดวยกน คอ 1) สวนของการประกาศตวแปร คอ สวนทใชในการกำาหนดตวแปรทจะใชงานในการเขยนโปรแกรม 2) สวนของคำาสง หรอ ฟงกชนตาง ๆ คอ สวนทใชสำาหรบในการพมพคำาสงและฟงกชนตาง ๆ ซงหลงจากพมพฟงกชนเสรจแลวจะตองปดทายดวยเครองหมายเซมโคลอน ; เสมอ

4. สวนของการเปดโปรแกรมและปดโปรแกรม ตามโครงสรางของภาษาซ จะตองมการกำาหนดจดเรมตนและจบโปรแกรม โดยในทนใชเครองหมายปกกาเปด { ในการระบตำาแหนงการเรมตนโปรแกรม และ ใชเครองหมายปกกาปด } ในการระบตำาแหนงการจบโปรแกรม

5.  การกำาหนดตำาแหนง หมายเหต (Comment)                         ในการเขยนโปรแกรม ผเขยนสามารถเขยนสวนคำาอธบาย หรอ หมายเหตของโปรแกรมได ซงสวนของคำาอธบายหรอหมายเหตดงกลาว จะไมถกแปลความหมายโดยคอมพวเตอร ซงวธในการเขยนคำาอธบาย หรอหมายเหต ม 2 แบบ คอ1)  การกำาหนดหมายเหต 1 บรรทด                              ในการกำาหนดหมายเหต  1  บรรทด  จะใชเครองหมาย  //  ดานหนาขอความทตองการกำาหนดหมายเหต  เชน

2)  การกำาหนดหมายเหตหลายบรรทด                               ในการกำาหนดหมายเหตหลายบรรทด จะใชเครองหมาย  /*  ไวทตำาแหนงบรรทดเรมตน และ   */  ไวทตำาแหนงบรรทดสดทาย หมายเหต  เชน

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

การจดเกบขอมลลงหนวยความจำาคอมพวเตอร ภาษากำาหนดใหดำาเนนการผานซอ(identifier) ทผสรางงานโปรแกรมเปนผกำาหนดเอง ระบบคอมพวเตอรจะจดเกบชอและตำาแหนงทอย (Address ) ในหนวยความจำา เพออางองนำาขอมลทจดเกบนนมาใชงาน การกำาหนดชอทใชเกบขอมลตองทำาภายใตกฎเกณฑ และตองศกษาวธกำาหนดลกษณะการจดเกบขอมลตามทภาษากำาหนดไว ลกษณะการจดเกบขอมลม 2 แบบคอ แบบคาคงทและแบบตวแปร ทงนกอนทจะเขยนคำาสงกำาหนดการจดเกบขอมล ควรมความรในเรองชนดขอมลกอน

ชนดขอมลแบบพนฐาน

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

ชนดขอมล ขอบเขตของขอมล อธบาย

char -128 ถง 127 เกบขอมลแบบอกขระ

int -32768 ถง32767 เกบขอมลแบบตวเลขจำานวนเตม

float 3.4×10 ถง 3.4×10 เกบขอมลแบบตวเลขทศนยมตวเลขหลงจด 6หลก

ตาราง ชนดขอมลแบบพนฐานขอควรจำา : ขอมลแบบขอความใชแบบขอมลแบบตวแปรชด เชน char a [20] :หมายเหต : ตารางแสดงชนดขอมลของภาษาซทกชนดแสดงในภาคผนวก

คำาสงจดเกบขอมลแบบคาคงทประสทธภาพคำาสง : ลกษณะการจดเกบขอมลในหนวยความจำาไมสามารถเปลยนแปลงไดรปแบบ : Const data_type var = data ;อธบาย : data_type คอทชนดขอมลแบบพนฐานVar คอชอหนวยความจำาทผใชตองกำาหนดตามกฎการตงชอData คอขอมลทกำาหนดเปนคาคงทขอควรจำากรณขอมลม 1 อกขระ กำาหนดใหอยใน ‘ ‘ (single quotation)กรณขอมลมมากกวา 1 อกขระ กำาหนดใหอยใน “ ” (double quotation)กรณขอมลเปนชนดตวเลขใชในการคำานวณไมตองอยใน หรอ ‘’ “ ”

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

รปแบบ : 1 var_type var_name[,….];รปแบบ : 2 var_type var_name = data ;อธบาย : var_type คอหนวยชนดขอมลแบบพนฐาน

var name คอชอหนวยความจำา ทผใชตองกำาหนดตามกฎการตงชอ

data คอขอมลทกำาหนดเปนคาเรมตน (อาจมหรอไมกได)หมายเหต : หากมตวแปรมากกวา 1 ตว แตเปนตวแปรเกบขอมลประเภทเดยว ใชคอมมา (,) คน

ตวอยางคำาสง : กำาหนดคณสมบตใหตวแปรในการจดเกบขอมลChar ans ;List salary , bonus ;Short value = 2;

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

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

คำาสงแสดงผล PRINTF ( )ประสทธภาพคำาสง : ใชแสดงผล สงตอไปน เชน ขอความ ขอมลจากคาคงท หรอตวแปรทจอภาพรปแบบ 1 : Printf (“ string_format” , data_list ) ;รปแบบ 2 : Printf (“string_format” ) ;อธบาย : string_format คอลกษณะของสงตอไปน เชน ขอความ (text ) รหสรปแบบขอมล เชน %d รหสควบคม เชน \nData_list คอขอมลแสดงผลอาจเปนคาคงทตวแปร นพจน หากมหลายตวใช , คนรหส format code ความหมาย

%c ใชกบขอมลแบบ char%d ใชกบขอมลแบบ int เฉพาะฐาน10%s ใชกบขอมลแบบ string

ตาราง รหสรปแบบขอมลระดบพนฐาน

หมายเหต : รหสรปแบบขอมลรปแบบ แสดงในภาคผนวกตวอยางคำาสง : ควบคมการแสดงผลดวย printfPrintf ( “ Data is %d \n ” , score ) ;อธบาย : พมพขอความคำาวา data is ตามดวยคาขอมลในหนวยความจำาตวแปรชอ score ซงเปนขอมลชนดจำานวนเตม (%) แลวเลอนคอรเซอรไปไวบรรทดถดไป (\n)

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

รปแบบ : Scanf ( “ string_format” , & address_list ) ;อธบาย : string_format คอรปแบบการแสดงผลของขอมลเทานน เชน %dAddress_list คอการระบตำาแหนงทอยในหนวยความจำาตองใชสญลกษณ &(Ampersand) นำาหนาชอตวแปรเสมอขอควรจำา : กรณเปนตวแปรขอความ (String) สามารถยกเวนไมตองใช & นำาหนาไดตวอยางคำาสง : เขยนคำาสงควบคมการรบคาจากแปนพมพดวย scanfScanf ( “%d ” , &score ) ;อธบาย : รบขอมลจากแปนพมพ นำาไปเกบในหนวยความจำาชอ score เปนขอมลประเภทจำานวนเตม

คำาสงประมวลผล : EXPRESSIONประสทธภาพคำาสง : เขยนคำาสงแบบนพจนเพอประมวลผล แลวนำาขอมลทไดไปจดเกบในหนวยความจำาของตวแปรทตองกำาหนดชอและชนดขอมลไวแลวรปแบบ : Var = expression ;อธบาย : var คอชอหนวยความจำาชนดตวแปรExpression คอสมการนพจน เชน สตรคำานวณทางคณตศาสตรตวอยางคำาสง : นพจนทเปนสตรคำานวณทางคณตศาสตรSum = a+b ;อธบาย : ใหนำาคาในหนวยความจำาตวแปรชอ a กบ b มา+กนแลวนำาคาไปเกบในหนวยความจำาตวแปรชอ sumแนวคดในการเขยนคำาสงควบคมการทำางาน

1. สวนปอนขอมล ผใชระบบงานปอนคา ; เกบในหนวยความจำา x และปอนคา A เกบในหนวยความจำา y ดวยคำาสงPrintf ( “data x=” ) ; scanf ( “%d ,&x ) ;Printf ( “data y=” ) ; scanf ( “%d ,&y ) ; 2. สวนประมวลผล ระบบจะนำาคาไปประมวลผลตามนพจนคณตศาสตรr = 2 + 3 * 2 ; ไดคำาตอบคอ 8s = (2 + 3 ) * 2; ไดคำาตอบคอ 10t = 2 + 3 * 2-1 ; ไดคำาตอบคอ 7ทงนคอมพวเตอรประมวลผล โดยยดหลกลำาดบความสำาคญของเครองหมายทางคณตศาสตร เชนคำานวณเครองหมาย * กอนเครองหมาย + 3. สวนแสดงผล คำาสงควบคมใหแสดงผลลพธPrintf ( “r = x + y * 2 = %d \n” , r ) ;Printf ( “r = (x + y X* 2 = %d \n” , s ) ;Printf ( “r = x + y * 2-1 = %d \n” , t ) ;

5.คำาสงแสดงผล- รบขอมล เฉพาะอกขระภาษาซมคำาสงแสดงผลและรบขอมลเฉพาะขอมลประเภท 8 อกขระ (char )ดงน5.1 คำาสง putchar ( )แสดงผลขอมลจากหนวยความจำาของตวแปร ทางจอภาพครงละ1อกขระเทานน

แนวคดในการเขยนคำาสงควบคมการทำางาน             1. � กำาหนดคา ‘A’ เกบในตวแปรประเภท char ชอ word1 และกำาหนดคา ‘1’ เกบในตวแปรชอ word2 ดวยคำาสงchar word1=’A’ , word2=’1’             2. � เขยนคำาสงควบคมการแสดงผลทละ 1 อกขระ โดยไมตองใชสญลกษณขนบรรทดใหมดวยคำาสงputchar(word1); putcar(word2);  จงพมพคำาวา A1 ทจอภาพ

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

แนวคดในการเขยนคำาสงควบคมการทำางาน1.เขยนคำาสงควบคมการปอนขอมลประเภทอกขระดวยคำาสงprintf ( “Key 1 Character = “ ) ;word = getchar ( );หมายถงปอนอกขระ 1 ตว เชน a จะแสดงคา ใหเหนทหนาจอดวย แลว ตองกดแปนEnter เพอนำาขอมลบนทกลงหนวยความจำาตวแปรประเภท char ชอ word2 . เขยนคำาสงควบคมการแสดงผลจากหนวยความจำา word จงเหนคา a  ( แทนท word)printf ( “You key Character is = %c\n”, word ) ; 

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

แนวคดในการเขยนคำาสงควบคมการทำางาน1.เขยนคำาสงควบคมการปอนขอมลประเภทอกขระดวยคำาสงprintf ( “Key 1 Character = “ ) ;word = getch ( );หมายถงปอนคาใดทางแปนพมพเปนอกขระ 1 ตว เชน a จะ ไมแสดง คาใหเหนทหนาจอไมตอง กดแปน Enter เพอนำาขอมลบนทกลงหนวยความจำาตวแปรประเภท char ชอ word2.เขยนคำาสงควบคมการแสดงผลจากหนวยความจำา word จงเหนคา a ( แทนท word )printf ( “You key Character is = %c\n”, word ) ;

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

แนวคดในการเขยนคำาสงควบคมการทำางาน1.เขยนคำาสงควบคมการปอนขอมลประเภทอกขระดวยคำาสงprintf ( “Key 1 Character = “ ) ;word = getche ( );หมายถงปอนคาใดทางแปนพมพเปนอกขระ 1 ตว เชน a จะ แสดง คาใหเหนทหนาจอ และไมตอง กดแปน Enter เพอนำาขอมลบนทกลงหนวยความจำาตวแปรประเภท char ชอ word2.เขยนคำาสงควบคมการแสดงผลเพอแสดงคาจากหนวยความจำา word จงเหนคา a ( แทนท word )printf ( “You key Character is = %c\n”, word ) ;

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

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

แนวคดในการเขยนคำาสงควบคมการทำางาน1.เขยนคำาสงกำาหนดคาขอความเกบในตวแปรชอ wordChar word [15] = “*Example * “ ;2.เขยนคำาสงควบคมการแสดงผลในลกษณะขอความดวย putsPuts ( word ) ;Puts (“**************”);

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

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

7.กรณศกษาการใชคำาสงควบคมขนพนฐาน7.1.คำาสง puts( ) แสดงผลขอมลเฉพาะประเภทขอความทางจอภาพครงละ 1 ขอความ รปแบบ puts ( string_argument ) ; อธบาย string_argument คอ ขอมลชนดขอความแนวคดในการเขยนคำาสงควบคมการทำางาน 1.เขยนคำาสงกำาหนดคาขอความเกบในตวแปรชอ word Char word [15] = “*Example * “ ; 2.เขยนคำาสงควบคมการแสดงผลในลกษณะขอความดวย puts Puts ( word ) ; Puts (“**************”);

แนวคดในการเขยนคำาสงควบคมการทำางาน 1.เขยนคำาสงกำาหนดคาขอความเกบในตวแปรชอ word Char word [15] = “*Example * “ ; 2.เขยนคำาสงควบคมการแสดงผลในลกษณะขอความดวย puts Puts ( word ) ; Puts (“**************”);

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

สมาชก

1. นาย ณฐพงศ กอเยน เลขท 2. นางสาว สรวรรรณ คำาเตจะ เลขท 3. นางสาว เบญจรตน ศรอารา เลขท 4. นางสาว กนกวรรณ ลดดากล เลขท 5. นางสาว สโรชา บญชวย เลขท 6. นางสาว เพญพชชา เทยนชย เลขท  

top related