ใบความรู้ วิชาหลักการเขยี นโปรแกรม (Programming principles) รหสั วิชา 30204 - 0001 จุดประสงค์รายวิชา เพ่อื ให้ 1. เข้าใจเกยี่ วกับหลักการเขยี นโปรแกรม 2. สามารถวเิ คราะหอ์ อกแบบผังงาน รหสั เทยี ม และข้ันตอนการแก้ไขปญั หา (Algorithm) 3. สามารถออกแบบและเขยี นโปรแกรมโดยใช้ภาษาคอมพวิ เตอร์ 4. สามารถเขยี นคาสั่งควบคุมการทางานเบื้องตน้ 5. มเี จตคติและกิจนิสยั ทดี่ ใี นการปฏบิ ัติงานคอมพิวเตอร์ด้วยความละเอียดรอบคอบ และถกู ต้อง สมรรถนะรายวิชา 1. แสดงความร้คู วามเข้าใจเก่ยี วกบั หลักการเขียนโปรแกรม 2. วิเคราะห์ออกแบบผังงาน รหสั เทียมและขัน้ ตอนการแก้ไขปญั หา (Algorithm) 3. ออกแบบและเขยี นโปรแกรมโดยใช้ภาษาคอมพวิ เตอร์ 4. เขียนคาสง่ั ควบคมุ การทางานเบ้อื งตน้ คาอธิบายรายวิชา ศกึ ษาและปฏบิ ัตเิ ก่ียวกับหลกั การเขียนโปรแกรมและการวเิ คราะหง์ าน ผงั งาน รหัสเทยี ม และขั้นตอน การแกไ้ ขปญั หา (Algorithm) โครงสร้างภาษาคอมพิวเตอรแ์ ละการใชก้ ระบวนการเขยี นโปรแกรม คาส่ังการ คานวณ เงื่อนไขกรณี และการทาซา้ การออกแบบและเขียนโปรแกรมอย่างงา่ ย
! บทที่ 1 แนะนําภาษา C++ เบอ้ื งตน ♦!ประวตั ภิ าษา C , C++ ค.ศ. 1970 มีการพัฒนาภาษา B โดย Ken Thompson ซึ่งทาํ งานบนเครอ่ื ง DEC PDP-7 ซึ่ง ทาํ งานบนเครอ่ื งไมโครคอมพวิ เตอรไ มไ ด และยังมีขอจาํ กัดในการใชงานอยู (ภาษา B สืบทอดมาจาก ภาษา BCPL ซง่ึ เขยี นโดย Marth Richards) ค.ศ. 1972 Dennis M. Ritchie และ Ken Thompson ไดสรางภาษา C เพื่อเพิ่มประสิทธิภาพ ภาษา B ใหดียิ่งขึ้น ในระยะแรกภาษา C ไมเ ปน ทน่ี ยิ มแกน กั โปรแกรมเมอรโ ดยทว่ั ไปนกั ค.ศ. 1978 Brian W. Kernighan และ Dennis M. Ritchie ไดเ ขยี นหนงั สอื เลม หนง่ึ ชอ่ื วา The C Programming Language และหนังสือเลมนี้ทาํ ใหบุคคลทั่วไปรูจักและนิยมใชภาษา C ในการเขียน โปรแกรมมากขน้ึ แตเ ดมิ ภาษา C ใช Run บนเครอ่ื งคอมพวิ เตอร 8 bit ภายใตระบบปฏิบัติการ CP/M ของ IBM PC ซึ่งในชวงป ค. ศ. 1981 เปน ชว งของการพฒั นาเครอ่ื งไมโครคอมพวิ เตอร ภาษา C จึงมี บทบาทสาํ คญั ในการนํามาใชบ นเครอ่ื ง PC ตง้ั แตน น้ั เปน ตน มา และมีการพัฒนาตอมาอีกหลาย ๆ คาย ดงั นน้ั เพอ่ื กาํ หนดทิศทางการใชภาษา C ใหเปนไปแนวทางเดียวกัน ANSI (American National Standard Institute) ไดกาํ หนดขอ ตกลงทเ่ี รยี กวา 3J11 เพื่อสรางภาษา C มาตรฐานขน้ึ มา เรยี นวา ANSI C ค.ศ. 1983 Bjarne Stroustrup แหง หอ งปฏบิ ตั กิ ารเบล (Bell Laboratories) ไดพัฒนาภาษา C++ ขึ้นรายละเอยี ดและความสามารถของ C++ มีสวนขยายเพิ่มจาก C ที่สาํ คัญ ๆ ไดแก แนวความคดิ ของการ เขียนโปรแกรมแบบกําหนดวตั ถเุ ปา หมายหรอื แบบ OOP (Object Oriented Programming) ซง่ึ เปน แนว การเขียนโปรแกรมที่เหมาะกับการพัฒนาโปรแกรมขนาดใหญที่มีความสลับซับซอนมาก มีขอมูลที่ใชใน โปรแกรมจาํ นวนมาก จงึ นยิ มใชเ ทคนคิ ของการเขยี นโปรแกรมแบบ OOP ในการพฒั นาโปรแกรมขนาด ใหญใ นปจ จบุ นั น้ี ♦ข! อ ดขี องภาษา C และ C++ โปรแกรมเมอรโ ดยทว่ั ไปในปจ จบุ นั นยิ มพฒั นาโปรแกรมดว ยภาษา C และ C++ ดว ยเหตผุ ล ดงั น้ี 1. โปรแกรมเมอรส ามารถสรา งโปรแกรมทค่ี วบคมุ การทาํ งานของคอมพวิ เตอรแ ละการโตต อบ ระหวางผูใชกับคอมพิวเตอรไดอยางเต็มประสิทธิภาพ เชน การเขียนโปรแกรมในลักษณะที่ผูใชควบคุม โปรแกรมในสภาพแวดลอ ม ท่เี ปน Event-Driven คือ ผูใชสามารถควบคุมเหตุการณตาง ๆ ของโปรแกรม ศิริชยั นามบุรี แนะนําภาษา C++ เบอ้ื งตน !
!2 ในขณะทาํ งานไดไมใชผูใชถูกควบคุมโดยโปรแกรม ลักษณะการทาํ งานแบบ Event-Driven ไดแก โปรแกรมทท่ี าํ งานในสภาพแวดลอมภายใตระบบปฏิบัติการวินโดวส เปน ตน 2. ภาษา C และ C++ มีประสิทธิภาพของภาษาอยูในระดับที่ใกลเคียงกับภาษา Assembly มากที่ สุด แตม คี วามยดื หยนุ ในยดึ ตดิ กบั ฮารด แวรค อมพวิ เตอรห รอื Microprocessor รนุ ใดรนุ หนง่ึ ทาํ ใหสามารถ นาํ โปรแกรมท่ีสรา งขน้ึ ไปทาํ งานไดก บั เครอ่ื งคอมพวิ เตอรไ ดท กุ รนุ 4. ภาษา C++ สนับสนุนการเขียนโปรแกรมในลักษณะเชิงวัตถุหรือ OOP (Object Oriented Programming) ซง่ึ เปน เทคนคิ การเขยี นโปรแกรมทน่ี ยิ มใชเ ขยี นโปรแกรมขนาดใหญท ม่ี จี ํานวนขอมูลใน โปรแกรมมาก 5. โปรแกรมเมอรส ว นใหญจ ะนยิ มใชภ าษา C, C++ พฒั นาโปรแกรมประยกุ ตใ นงานดา นตา ง ๆ เปน จํานวนมากในปจจุบัน เพราะประสิทธิภาพของภาษาที่ไดเปรียบภาษาอื่น ๆ ♦!ขน้ั ตอนการพฒั นาโปรแกรมดว ย C++ การพฒั นาโปรแกรมดว ยภาษา C++ มีขั้นตอนในการสรางคลายกับภาษาระดับสูงทั่วไป แตภ าษา C++ ไดจ ดั เตรยี มเครอ่ื งมอื ในการพฒั นาโปรแกรมในสภาพแวดลอ มทร่ี วมไวด ว ยกนั แบบเบด็ เสรจ็ ที่เรียก วา IDE (Integrated Development Environment) คือ ไดน าํ เครอ่ื งมอื ทจ่ี าํ เปน ทง้ั หมดในการพฒั นา โปรแกรมมารวมไว ดวยกัน ทั้ง Editor, Compiler, Link Library และ Help เพื่อความสะดวกของผูใชใน ขณะทาํ การพฒั นาโปรแกรม การพฒั นาโปรแกรมดว ยภาษา C++ มีขน้ั ตอนตามลาํ ดบั ดงั น้ี 1. ขน้ั ตอนการสรา ง Source File หรอื แฟม ตน ฉบบั เปน Text File โดยการใชสวน Editor ของ IDE (หรอื สรา งจาก Editor ของโปรแกรมอน่ื ๆ ก็ได) เมอ่ื สรา งเสรจ็ แลวจึงบันทึก Source File ไว โดย กําหนดสวนขยายเปน CPP เชน TEST.CPP (C Plus Plus) โดย Source File นจ้ี ะตอ งสรา งใหถ กู ตอ งตาม โครงสรางและไวยากรณของภาษา C++ ทั้งหมดกอน 2. การคอมไพล (Compile) คอื การใชต วั โปรแกรมหรอื Compiler ของ C++ ในการแปล Source File ใหเปนไฟลภาษาเครื่องที่เรียกวา Object File หรอื Object Code จะไดไฟลที่มีสวนขยายเปน OBJ เพิ่มขึ้นมาอีกหนึ่งไฟล เชน TEST.OBJ 3. การเชอ่ื มโยง (Linking) เปน ขน้ั ตอนการเชอ่ื มโยงไฟลป ระเภท OBJ เขากับแฟมจากคลัง (Library) ของภาษา C++ จาํ นวน 1 แฟมหรือมากกวา ซึ่งไฟลใน Library นจ้ี ดั เตรยี มไวโ ดยผสู รา งภาษา C++ ผลก็คือจะไดผลลัพธเปนไฟลที่สามารถนาํ ไปทาํ งาน หรอื Run ไดโ ดยอสิ ระ หรอื ทเ่ี รยี กวา Executable File มีสวนขยายเปน EXE เชน TEST.EXE เปน ตน ขน้ั ตอนของการสรา ง Source File , การ Compile และการ Link ทั้งหมดจะดาํ เนนิ การไดใ น IDE ของ C++ ทจ่ี ดั เตรยี มไวใ หแ ลว อยา งอตั โนมตั ิ ทาํ ใหผูเขียนโปรแกรมสามารถทาํ สรา งโปรแกรมดว ย ภาษา C++ สะดวกยิ่งขึ้น ศิริชยั นามบรุ ี แนะนําภาษา C++ เบอ้ื งตน
! 3 ! Executable File ! TEST.EXE ! Source File C++ Library File ! TEST.CPP ! iostream.h, conio.h ! Compile Link ! Object File ! TEST.OBJ ! รปู แสดง ขน้ั ตอนการพฒั นาโปรแกรมดว ย C++ ♦!การใช IDE ของ C++ ในการพฒั นาโปรแกรมดว ยภาษา C++ โดยใช Turbo C++ Version 3.0 มี ซง่ึ ไดจ ดั เตรยี มเครอ่ื ง มอื ในการพฒั นาโปรแกรมทเ่ี รยี กวา IDE มาใหแลว ลักษณะการใชงานใน IDE มีความคลายคลึงกับ Editor ของภาษาระดับสูงอื่น ๆ เชน BASIC, PASCAL การเรยี กใช IDE ของ C++ ใหเขาเรียกใชไฟล TC.EXE ดงั น้ี C:\\TC>TC แลวกดแปน Enter หรอื C:\\TC\\BIN>TC แลวกดแปน Enter (กรณี TC.EXE อยูใน path C:\\TC\\BIN) โปรแกรมสภาพแวดลอ มของ IDE ดังนี้จอภาพตอไปนี้ ศิริชัย นามบรุ ี แนะนําภาษา C++ เบอ้ื งตน
!4 การเปด IDE ของ TURBO C++ version 3.0 ในระบบปฏิบัติการ Windows'95 ในลักษณะหนา ตางแบบ Graphic ก็สามารถทํางานไดเ ชนเดยี วกนั โดยการเลอื กโปรแกรม MS-DOS Prompt จากเมนู ของ Windows'95 เมอ่ื เครอ่ื งหมาย prompt ของ DOS ปรากฏขึ้นแลว ก็ใหเปลี่ยน directory ไปยัง path ของ Turbo C++ ดงั น้ี C:\\>cd\\tc [enter] C:\\TC>TC [enter] เพื่อ run program จะปรากฎ IDE ของ Turbo C++ ดังภาพขางลางในรูปแบบ Graphic windows (ถาไมเปนดังภาพ ให กดแปน Alt+Enter เพื่อสลับการแสดงผลระหวาง Graphic window กับ IDE แบบเดมิ ศิริชัย นามบรุ ี แนะนําภาษา C++ เบอ้ื งตน
!5 ! พิมพ Code ของภาษา C++ ใน ! Editor น้ี ♦!ตวั อยา งวธิ กี ารเขยี นโปรแกรมและ Compile ดวย C++ จากตวั อยา ง Source File ตอ ไปน้ี ใหทดลองสรางโปรแกรมภาษา C++ โดยใช IDE ของ Turbo C++ 3.0 ของบรษิ ทั Borland International, Inc. (หรอื อาจใช C++ ของบรษิ ทั อน่ื ๆ ) /*Program : First.CPP Written by: Mr.Sirichai Date : 10/1997 */ #include <iostream.h> void main(void) { cout << \"My name is Mr.Sirichai Namburi \\n\"; cout << \"Office : Computer Department,RIPA\"; } ศิริชัย นามบรุ ี แนะนําภาษา C++ เบอ้ื งตน
!6 ขน้ั ท่ี 1 สราง Source File ใน Editor โดยการ Click Mouse ในหนา ตา ง Editor แลวพิมพ รหสั คาํ สั่งของภาษา C++ ตามตวั อยา งใหถ กู ตอ ง ขน้ั ท่ี 2 บันทึกแฟม Source File โดยใชค าํ สั่งเมนู File, Save เลือกหรอื พมิ พช ่อื ไดรฟและ ไดเรกทอร่ี จากนั้นพิมพชื่อไฟล First.CPP แลว Click ปุมคาํ สั่ง OK หรือใชฟงกชันคีย F2 เพอื่ สง่ั บันทึกแฟมก็ได (ถา ตอ งการเขยี นเปน ภาษา C ใหบันทึกเปนไฟลเปนประเภท C เชน First.C) ขน้ั ท่ี 3 ใชคาํ สั่งสั่ง Run, Run หรอื Ctrl+F9 เพอ่ื ทาํ การ Compile , Link และทดลอง Run โปรแกรมทส่ี รา งขน้ึ เพอ่ื ทาํ งาน จากนัน้ กดแปน Alt+F5 เพอ่ื ดผู ลการทํางานของโปรแกรมในหนา ตา ง ผลลัพธ (User Screen) ผลการทํางานจากโปรแกรม หรอื ผลการ RUN ไดด งั น้ี My name is Mr.Sirichai Namburi Office : Computer Department,RIPA ขน้ั ท่ี 4 กรณีมีขอผิดพลาด IDE ของ C++ จะไมสามารถทาํ การ Compile ได จะแจง ขา วสารขอ ผดิ พลาดไวในกรอบหนาตาง Message จะตองแกไขใหถูกตองกอน แลว จงึ ดาํ เนนิ การในขน้ั ท่ี 3 ใหม ♦!โครงสรา งของโปรแกรม C++ การเขยี นโปรแกรมดว ย C++ มโี ครงสรา งของโปรแกรมพน้ื ฐานดงั ตวั อยาง /*Program : First.CPP 1. หมายเหตหุ รอื คาํ อธิบาย (comments) Written by: Mr.Sirichai Date : 10/1997 */ 2. Preprocessor, Directive, header file #include <iostream.h> 3. Function main() void main() { 4. Statement ของคาํ สั่งอยูใน block ของ cout << \"My name is Mr.Sirichai Namburi \\n\"; เครอ่ื งหมาย{ …. }แตล ะ Statement จบดว ย ; cout << \"Office : Computer Department,RIPA\"; } สวนประกอบเบื้องตนของ C++ มีดังนี้ 1. Comments or Remark หมายถงึ สว นทเ่ี ปน การอธบิ ายหรอื หมายเหตใุ นโปรแกรม เขียน อธบิ ายไวในเคร่อื งหมาย /* ………*/ หรอื เขยี นตามหลงั เครอ่ื งหมาย // ก็ได ในขณะที่แปล Compiler ของ C++ จะไมนาํ ไปแปลดวย แตต อ งเขยี น Comments อยูภายในเครื่องหมายใหถูกตอง โดยท่ี /*…..*/ ศิริชยั นามบุรี แนะนาํ ภาษา C++ เบอ้ื งตน
!7 มักใชกับ Comment หลาย ๆ บรรทดั สวน // ใชกับการ Comments ตามหลัง Statement เปน สว นใหญ เชน /*Program : First.CPP Written by: Mr.Sirichai หมายเหตหุ รอื คาํ อธิบาย Date : 10/1997 */ หรอื cout << \"My name is Mr.Sirichai Namburi \\n\"; // display text to screen 2. #include <iostream.h> บรรทดั ทข่ี น้ึ ตน ดว ย # นจ้ี ะตอ งมเี สมอในทกุ โปรแกรม เรยี กวา preprocessor เรยี กคําวา include ทต่ี ามเครอ่ื งหมาย # นว้ี า directive และชื่อไฟลที่อยูในเครื่องหมาย <…..> (จะใชเ ครอ่ื งหมาย “……” แทนก็ได) เรยี กวา header file หรอื include file ซึ่งเปนไฟลที่เก็บไว ในคลังคาํ สั่ง (Library File) ของ C++ ขอ สงั เกต การเขียน preprocessor directive จะตอ งเขยี นรายการละ 1 บรรทดั และไมตอง มเี ครอ่ื งหมาย ; ที่ทายประโยค #include <iostream.h> หมายถึง การสั่งให Compiler นาํ สิ่งที่อยูในไฟลที่กําหนดชอ่ื มา ให คือไฟล iostream.h มารวมกับ source file ขณะทาํ การ link เพอ่ื ใหไ ด Executable file นน่ั หมาย ความวา ในโปรแกรมทเ่ี ราสรา งขน้ึ ไดมีการเรียกใชฟงกชันที่ถูกเก็บไวใน Header File นน้ั 3. void main() เปน การเรยี กใชฟ ง กช นั หลกั ของโปรแกรมคอื ฟงกชัน main() ซึ่งจะตองมีชื่อ ฟงกชันนี้เสมอ ฟงกชัน main() เปนฟงกชันหลัก จะประกอบไปดวยวงเล็บเปด { เปน การเรม่ิ ตน ภายในมี การประกาศตวั แปร มีประโยคคาํ สั่งของภาษา C++ มีชื่อฟงกชันอื่น ๆ ที่ผูเขียนสรางขึ้นแลวเรียกใชภาย ในฟงกชัน main() แลวจบฟงกชันดวยวงเล็บปด } คาํ วา void เปน ชอ่ื ประเภทขอ มลู (data type) ที่ใหคาวาง จะทาํ ใหฟงกชันไมมีการสงคา ใด ๆ กลับไปยังชื่อฟงกชันที่ถูกเรียกใช ทั้งนี้ เน่อื งจากใน C++ เมื่อมีการเรียกใชฟงกชันใดฟงกชันหนึ่ง เมื่อฟงกชันทาํ งานเสรจ็ แลว จะตองสงคาคืนกลับมายังจุดที่เรียกใชชื่อฟงกชันเสมอ เพื่อไมใหสงคืนคาใด ๆ กลับมา จึงใชคาํ วา void เพื่อกาํ หนด main() ใหเปนฟงกชันที่ไมตองคืนคากลับมา ณ จดุ เรยี กใชห รอื เปน ฟง กช นั ประเภทไมม คี า นน่ั เอง 4. cout << \"My name is Mr.Sirichai Namburi \\n\"; cout << \"Office : Computer Department,RIPA\"; เปน สว นของประโยคคาํ สั่งหรือ Statement ในภาษา C++ ซึ่งตองเขียนใหถูกตองตามไวยากรณ ของภาษา ทกุ ประโยคตอ งจบดว ยเครอ่ื ง semicolon (;) เสมอ สาํ หรบั คําวา cout เปน object ซึ่งถูกเก็บไว ในไฟล iostream.h ดงั นน้ั จงึ ตอ งกาํ หนดชื่อไฟล iostream.h ไวใ นสว นของ preprocessor directive ดว ย ศิริชยั นามบรุ ี แนะนาํ ภาษา C++ เบอ้ื งตน
!8 header file ที่สามารถใชรวมกับ #include ใน C++ เพื่อใหสามารถเรียกใชคาํ สั่งหรือฟงกชันตาง ๆ ทผ่ี ใู ชต อ งการได ไดแ กรายชอื่ ไฟลใ นตารางตอ ไปนี้ โดยกอ นทจี่ ะเรยี กใช header file ใดนน้ั ผใู ชจ ะ ตองตรวจสอบกอนวาฟงกชันที่ตองเรียกใชถูกสรางไวใน header file ใด เชน ถามีการเรียกใชฟงกชัน getch() ในโปรแกรม จะตอ งเขยี น preprocessor directive เรยี กใช header file ที่ชื่อ conio.h เนอ่ื งจาก ฟงกชัน getch() ถูกเก็บไวในไฟล conio.h ซึ่งเปนคลังคําสั่ง (Library) ของ C++ มีรูปแบบการเรียกใช ดงั น้ี #include <conio.h> ตาราง แสดงรายชื่อ Header file ใน C++ และรายละเอียดกลุมฟงกชันที่เรียกใชไดในแตละ herder file Header File Groups of Functions in Header file alloc.h Declares memory management functions (allocation, deallocation, etc.). assert.h Defines the assert debugging macro. Bcd.h Declares the C++ class bcd and the overloaded operators for bcd and bcd math functions. Bios.h Declares various functions used in calling IBM-PC ROM BIOS routines. complex.h Declares the C++ complex math functions. Conio.h Declares various functions used in calling the DOS console I/O routines. ctype.h Contains information used by the character classification and character conversion macros. Dir.h Contains structures, macros, and functions for working with directories and path names. Direct.h Defines structures, macros, and functions for working with directories and path names. Dirent.h Declares functions and structures for POSIX directory operations. Dos.h Defines various constants and gives declarations needed for DOS and 8086-specific calls. Errno.h Defines constant mnemonics for the error codes. Fcntl.h Defines symbolic constants used in connection with the library routine open. Float.h Contains parameters for floating-point routines. fstream.h Declares the C++ stream classes that support file input and output. ศิริชัย นามบุรี แนะนําภาษา C++ เบอ้ื งตน
! 9 Header File Groups of Functions in Header file generic.h Contains macros for generic class declarations. graphics.h Declares prototypes for the graphics functions. io.h Contains structures and declarations for low-level input/output routines. iomanip.h Declares the C++ streams I/O manipulators and contains macros for creating parameterized manipulators. iostream.h Declares the basic C++ (version 2.0) streams (I/O) routines. Limits.h Contains environmental parameters, information about compile-time limitations, and ranges of integral quantities. locale.h Declares functions that provide country- and language-specific information. malloc.h Memory management functions and variables. math.h Declares prototypes for the math functions, defines the macro HUGE_VAL, and declares the exception structure used by matherr. mem.h Declares the memory-manipulation functions. (Many of these are also defined in string.h.) memory.h Memory manipulation functions. new.h Access to operator new and newhandler. process.h Contains structures and declarations for the spawn... and exec... functions. search.h Declares functions for searching and sorting. setjmp.h Defines a type used by longjmp and setjmp. share.h Defines parameters used in functions that use file-sharing. signal.h Defines constants and declarations for signal and raise. stdarg.h Defines macros used for reading the argument list in functions declared to accept a variable number of arguments. stddef.h Defines several common data types and macros. stdio.h Defines types and macros needed for the Standard I/O Package defined in Kernighan and Ritchie and extended under UNIX System V. Defines the standard I/O predefined streams stdin, stdout, stdprn, and stderr, and declares stream-level I/O routines. ศิริชยั นามบุรี แนะนําภาษา C++ เบอ้ื งตน
! 10 Header File Groups of Functions in Header file stdiostr.h Declares the C++ (version 2.0) stream classes for use with stdio FILE structures. stdlib.h Declares several commonly used routines: conversion routines, search/sort routines, and other miscellany. stream.h Declares the C++ (version 1.2) streams (I/O) routines. string.h Declares several string- and memory-manipulation routines. strstrea.h Declares the C++ stream classes for use with byte arrays in memory. sys\\locking.h Definitions for mode parameter of locking function. sys\\stat.h Defines symbolic constants used for opening and creating files. sys\\timeb.h Declares the function ftime and the structure timeb that ftime returns. sys\\types.h Declares the type time_t used with time functions. time.h Defines a structure filled in by the time-conversion routines, and a type used by other time routines; also provides prototypes for these routines. utime.h Declares the functions utime and the structure utimbuf values.h Defines important constants, including machine dependencies; provided for UNIX System V compatibility. varargs.h Defines old style marcos for processing variable argumnet lists. Superceded by stdarg.h ! หมายเหตุ ถา ตอ งการทราบวา header file ประกอบดวยฟงกชั่นใดบาง ใหใ ชค าํ สง่ั Help, Index ! จากเมนใู น IDE ของภาษา C++ เพื่อคนหารายละเอียดและตัวอยางการใชฟงกชัน ! ♦ไ!อเดน็ ตฟิ ายเออร (identifier) ใน C++ ! ไอเด็นติฟายเออร (identifier) หมายถึง ชื่อที่มีอยูในสวนตาง ๆ ของโครงสรา งโปรแกรม C++ ซึ่งไดแก ชอ่ื ของ เลเบล (label) คอนสแตนต (constant) แวเรยี เบลิ หรอื ตวั แปร (variable) ฟงกชัน (function) และชนดิ ของขอ มลู (data type) ! ประเภทของไอเดน็ ตฟิ ายเออร มี 3 ประเภท คือ keyword , standard identifier และ user-defined identifier มีรายละเอียด ดงั น้ี ! 1. Keyword เปนชื่อที่มีความหมายและวิธีการใชแนนอน ไดกาํ หนดไวในภาษา C++ แลว คอมไพเลอรจะไมยอมใหเราใชชื่อนี้ในลักษณะที่แตกตางไปจากที่กาํ หนดไว ตวั อยา งของ keyword เชน void if else int char float case auto return ศิริชัย นามบุรี แนะนาํ ภาษา C++ เบอ้ื งตน
! 11 ! 2. Standard Identifier หมายถึง ชื่อที่กําหนดขน้ึ ในคอมไพเลอร ชื่อเหลานี้มีความหมายและวิธี ใชตามเง่อื นไขท่ีคอมไพเลอรกาํ หนดไว แตเราสามารถเปลี่ยนแปลงวิธีการทาํ งานและเงื่อนไขการใชชื่อ เหลา นไ้ี ด โดยคอมไพเลอรจะยกเลิกเงื่อนไขเดิมและเปลี่ยนมาใชเงื่อนไขที่เรากาํ หนดขนึ้ ใหม standard identifier สวนใหญจะเปนชื่อฟงกชันที่มีอยูใน C++ เชน abort, abs, arc, ftime, getch, open, rename เปน ตน 3. User-defined identifier หมายถึง ชอ่ื ทเ่ี รากาํ หนดความหมายและเงอ่ื นไขในการใชข น้ึ เองโดย ผูใช แตต ัง้ กาํ หนดขนึ้ ตามกฎเกณฑของ C++ ซึ่งมีรายละเอียดของกฎการตั้งชื่อ ดงั น้ี - อกั ขระตวั แรกตอ งเปน ตวั อกั ษรหรอื underscore ( _ ) จะเปนตัวเลขไมได ตวั อกั ขระตวั ตอ ไปจะเปน ตวั อกั ษร ตวั เลข หรอื เครอ่ื งหมาย _ ก็ได เรียงกันโดยหามมีชองวางภายในชื่อ - ชื่อหามซาํ้ กับคียเวิรด (Keywords) ของภาษา C++ เชน main void if - คอมไพเลอรจะถือวาอักษรพิมพเล็กและพิมพใหญ มีความแตกตางกัน ดงั นน้ั Identifier ชื่อFIRST_PROGRAM กับ first_program จะถือวาเปนชื่อตางกันและเปนคนละชื่อกัน - ชื่อมีความยาวไมจํากัด แตจะมคี วามหมายเฉพาะอกั ขระ 32 ตวั แรกเทา นน้ั แตค วรตง้ั ชื่อใหมีความหมายสอดคลองกับวัตถุประสงคการนําชอ่ื นน้ั ไปใชภ ายในโปรแกรม เพื่อความสะดวกใน การจดจาํ ในขณะเขยี นโปรแกรม ♦!ชนดิ ของขอ มูล(Data Type) ขอมูลใน C++ แบง ชนดิ ขอ มลู ออกเปน 2 ประเภท คือ 1. Simple data type เปนชนิดขอมูลที่ใชแสดงคาของสิ่งใดสิ่งหนึ่งเพียงรายการเดียว เชน คา ความสูง นา้ํ หนกั จํานวนนกั เรยี น อณุ หภมู ิ ระดบั คะแนน เปน ตน 2. Structure เปนขอมูลชนิดใชแสดงคาของสิ่งใดสิ่งหนึ่งหลายรายการ เชน ความสูงของนัก เรยี นใน ชั้น ม. 6, อณุ หภมู ขิ องแตล ะวนั ในเดอื นตลุ าคม, รายชอ่ื นกั เรยี นใน 1 กลุม ตองกาํ หนดเปน ขอ มลู ชนดิ โครงสรา งแบบ อารเ รย (array) แบบโครงสรา ง(structure) หรอื แบบยเู นยี น(union) เปน ตน ขอมลู Simple data type รายละเอียดชนิดของมูลและชวงของขอมูลประเภท Simple data type แสดงไดด งั ตารางตอ ไปน้ี ศิริชยั นามบรุ ี แนะนาํ ภาษา C++ เบอ้ื งตน
! 12 ตาราง แสดงชอ่ื ชนดิ ของขอ มลู ชวงของคาขอมูลและขนาดหนวยความจาํ ที่ใช ชนิดขอมูล คาตํ่าสุด คาสูงสุด ใชพื้นที่หนวยความจาํ char -128 127 1 byte unsigned char 0 255 1 byte int -32,768 32,767 2 byte unsigned int 0 65,535 2 byte short int -32,768 32,767 2 byte long -2,147,483,648 2,147,483,647 4 byte unsigned long 0 4,294,967,295 4 byte float 3.4x10-38 3.4x10+38 4 byte double 1.7x10-308 1.7x10+308 8 byte long double 3.4x10-4932 3.4x10+4932 10 byte หมายเหตุ ชอ่ื ชนดิ ของขอ มลู ไดแ ก char, unsigned char , int , unsigned int, short in, long , unsigned long , float , double , long double เปน keyword ท่นี าํ ไปกาํ หนดประเภทขอมูลที่จะใชใน โปรแกรม •! ตัวอยางโปรแกรม size_mem.cpp เปน ตวั อยา งโปรแกรมแสดงขนาดของหนว ยความจําทข่ี อ มูลแตละชนิดใชพื้นที่หนวยความจาํ โดยใช คยี เ วริ ด sizeof ซึ่งใหคาขนาดหนวยความจําทข่ี อ มูลชนิดนั้นใช มหี นว ยเปน byte /*Program : size_mem.cpp Process : Display size of memory for each simple data type */ #include <iostream.h> #include <conio.h> void main() { clrscr(); //clear screen in conio.h cout<< \"Size of char = \"<<sizeof(char)<< \" bytes\"<<endl; cout<< \"Size of unsigned char = \"<<sizeof(unsigned char)<< \" bytes\"<<endl; cout<< \"Size of int = \"<<sizeof(int)<< \" bytes\"<<endl; cout<< \"Size of unsigned int = \"<<sizeof(unsigned int)<< \" bytes\"<<endl; cout<< \"Size of short int = \"<<sizeof(short int)<< \" bytes\"<<endl; cout<< \"Size of long = \"<<sizeof(long)<< \" bytes\"<<endl; cout<< \"Size of unsigned long = \"<<sizeof(unsigned long)<< \" bytes\"<<endl; cout<< \"Size of float = \"<<sizeof(float)<< \" bytes\"<<endl; cout<< \"Size of double = \"<<sizeof(double)<< \" bytes\"<<endl; cout<< \"Size of long double = \"<<sizeof(long double)<< \" bytes\"<<endl; getch(); //wait for press any key } ศิริชยั นามบุรี แนะนาํ ภาษา C++ เบอ้ื งตน
! 13 ♦ก! ารประกาศตวั แปร (Variable Declaration) และการกาํ หนดคา ใหต วั แปรใน C++ ตัวแปร (Variables) ในภาษา C++ หมายถึง ชื่อที่กําหนดขน้ึ เพอ่ื ใชเ กบ็ คา ของขอ มลู หรอื คา คงท่ี ประเภทตา ง ๆ ในขณะโปรแกรมทาํ งาน ซง่ึ ผเู ขยี นโปรแกรมตอ งตง้ั ชอ่ื ตวั แปรตามกฎเกณฑก ารตง้ั ชอ่ื ประเภท user defined identifier การใชตัวแปรในภาษา C++ จะตอ งมกี ารประกาศ (Declaration) ชอ่ื ตวั แปรและประเภทของตวั แปร (Data type) ไวกอน จึงจะสามารถนาํ ตวั แปรไปใชใ นโปรแกรมได มรี ปู แบบการประกาศตวั แปรดงั น้ี Data_type variable_name; หรอื ! Data_type variable_name1, variable_name2,varible_name3, … ; โดยท่ี Data_type คือ ชอ่ื ของประเภทขอ มลู ของตวั แปร ที่สามารถเก็บคาได เชน int, float variable_name คือ ชือ่ ของตัวแปรทีผ่ ใู ชกาํ หนดเอง ถาในประเภทนั้นมีมากกวา 1 ตวั ให ใชเ ครอ่ื งหมาย , แยก และจบประโยคดวยเครื่องหมาย ; (semi-colon) การประกาศตวั แปรเพอ่ื ใชใ นโปรแกรมของ C++ มี 2 ลกั ษณะ คือ 1. definition คือ เปนการประกาศเพื่อกาํ หนดความหมาย เปน ประโยคคาํ สั่งที่ประกอบดวย ชื่อ ประเภทของตวั แปร และตัวแปร โดยทั่วไปมักจะประกาศไวตอนตน ๆ ของฟงกชัน หรอื โปรแกรม เชน #include <iostream.h> void main() { int number; float sales, purchase; การประกาศตวั แปรในลกั ษณะ definition char grade; … } 2. การประกาศแบบกําหนดคา ณ ตาํ แหนง ทใ่ี ช หมายถึง การประกาศตวั แปร ณ ตาํ แหนง ท่ี ตอ งการใชต วั แปรในโปรแกรม ก็จะประกาศพรอมกับหนดคาใหกับตัวแปรทันที ดงั ตวั อยา งโปรแกรม ตัวอยางโปรแกรม pos_var.cpp แสดงวธิ ีการประกาศตวั แปร ณ จดุ ทต่ี อ งการใชใ นโปรแกรม /*Program : pos_var.cpp แนะนาํ ภาษา C++ เบอ้ื งตน Process : Show declared varaible at any position in program */ #include <iostream.h> #include <conio.h> void main() ศิริชัย นามบุรี
! 14 ประกาศตัวแปร total ณ ตาํ แหนง ทต่ี อ งการใช { float sale,price; clrscr(); sale=500.25; price=5.25; float total=sale*price; cout<< \"Total Sale = \"<<total; getch(); } วิธีการกําหนดคา ใหแ กต วั แปรใน C++ ทาํ ได ดังนี้ 1. การใชประโยคคําสง่ั เครอ่ื งหมายเทา กบั (=) โดยกําหนดใหชื่อตัวแปรที่จะใชเก็บคาอยูทางซาย มอื ของ เครอ่ื งหมาย = ตวั แปรหรอื คา คงทอ่ี ยทู างดา นขวาของเครอ่ื งหมาย ดงั เชน ตวั อยา งโปรแกรมตอ ไปนี้ •! ตัวอยางโปรแกรม variable.cpp แสดงการกําหนดคาคงทใ่ี หก บั ตวั แปรในโปรแกรม โดยใช เครอ่ื งหมายเทา กบั = /*Program : variable.cpp Process : Display set value of varible */ #include <iostream.h> #include <conio.h> void main() { int number; //declaration variable การประกาศตวั แปรภายในฟง กช นั main() float sales,purchase; //declaration variable // set value of variable number = 50; sales = 5000.75; การกาํ หนดคาคงที่ใหกับตัวแปร purchase = 3500.50; clrscr(); // function clear screen from <conio.h> //show value from variable cout << \"Show varlue of variable\"<<endl; cout << \"number = \" << number<<endl; cout << \"sales = \" << sales<<endl; cout << \"purchase = \" << purchase; getch(); // function getch() for wait to press anykey from <conio.h> } หมายเหตุ กรณเี ปน ตวั แปรประเภทตวั เลข คา คงทด่ี า นขวามอื หา มมเี ครอ่ื งหมายวรรคตอนใด ๆ ทั้งสิ้น ยกเวนจุดทศนิยม สว นตวั แปรประเภท char กําหนดคา คงทใ่ี นเครอ่ื งหมาย '_' เชน ch = 'A'; 2. การกําหนดคา เรม่ิ ตน ใหแ กต วั แปร เมื่อมีการประกาศใชตัวแปรในลักษณะ definition มีการ กาํ หนดคา คงท่ใี หแกตัวแปรทันที ศิริชยั นามบรุ ี แนะนําภาษา C++ เบอ้ื งตน
! 15 •! ตัวอยางโปรแกรม varia2.cpp แสดงการกําหนดคาใหแกตัวแปร number, sales, purchase ดว ยเครอ่ื งหมาย = เมอ่ื ประกาศตวั แปรในโปรแกรม ประกาศตัวแปร /*Program : varia2.cpp พรอ มกําหนดคา Process : Display set value of varible */ #include <iostream.h> #include <conio.h> void main() { int number=500; //declaration and set value variable float sales=500.50,purchase=3500.75; //declaration and set value variable clrscr(); // function clear screen from <conio.h> //show value from variable cout << \"Show varlue of variable\"<<endl; cout << \"number = \" << number<<endl; cout << \"sales = \" << sales<<endl; cout << \"purchase = \" << purchase; getch(); // function getch() for wait to press anykey from <conio.h> } 3. การกําหนดคาตวั แปรโดยการรบั คาทางแปนพิมพ โดยการใชฟงกชันในการรับขอมูล (Input) เขาไปเก็บไวในตัวแปร จะกลาวรายละเอียดตอไปในบทที่ 2 ตัวแปรประเภท Global และ Local การประกาศใชต วั แปรใน C++ สามารถทาํ ได 2 ลักษณะ คือ 1. Global variable คือ ตวั แปรทก่ี าํ หนดหรือประกาศไวนอกฟงกชันใด ๆ ทุกฟงกชัน สามารถนําตวั แปรประเภท Global ไปใชไดทุกฟงกชัน เพราะเปนลักษณะการประกาศแบบสารธรณะ 2. Local variable คือ ตวั แปรทก่ี าํ หนดหรือประกาศไวในฟงกชันใดฟงกชันหนึ่ง สามารถนํา ตัวแปรนั้นไปใชไดเฉพาะในฟงกชันนั้น ๆ เทา นน้ั ฟงกชันอื่นไมสามารถนาํ ไปใชได เพราะประกาศใน ลักษณะสวนตัวหรือเฉพาะที่ หมายเหตุ กรณที ม่ี กี ารตง้ั ชอ่ื ตวั แปรประเภท Global และ Local ซํา้ กัน จะถอื วาเปน ตวั แปรคนละ ตวั กนั เนื่องจากใชพ ื้นทใ่ี นหนว ยความจําในการเกบ็ ขอมลู ในตําแหนงที่ตางกัน แตถ ามีการเรียกใชช ื่อตวั แปร C++ จะนําตวั แปรประเภท Local มาใชกอนเสมอ •! ตัวอยางโปรแกรม glo_loc.cpp แสดงการประกาศตวั แปรประเภท Global และ Local ใน โปรแกรม ศิริชัย นามบุรี แนะนาํ ภาษา C++ เบอ้ื งตน
! 16 /*Program : glo_loc.cpp Process : define global and locat variable */ #include <iostream.h> #include <conio.h> char grade; //defined global variable ประกาศตวั แปรประเภท Global Variable void main() { int midterm,final,total; //defined local variable in function main() ประกาศตวั แปรประเภท Local clrscr(); Variable ในฟงกชัน main() midterm = 30; final=50; total=midterm+final; grade='A'; cout<< \"You get total score \"<<total<<\" And get grade = \" <<grade; getch(); } ♦!การกําหนดตวั แปรคงท่ี(Constant) ตัวแปรคงที่หรอื คอนสแตนต (Constant) หมายถึง ตัวแปรที่เก็บคาคงที่ที่ไมสามารถเปลี่ยนแปลง ได การกาํ หนดคอนสแตนต มีจุดประสงคเพื่อปองกันมิใหมีการเปลี่ยนแปลงคาของตัวแปรนั้นในขณะ ทาํ งาน สามารถกาํ หนดไดทั้งในลักษณะที่เปน Global และ Local รูปแบบการกาํ หนดคา คอนสแตนต ใช คาํ วา const นาํ หนา ประเภทขอ มลู และชอ่ื คอนสแตนต ดงั น้ี const ชนดิ ขอ มลู ชอ่ื คอนสแตนต = คาคงที่; ตวั อยา งเชน const int Day = 7; const int month = 12; const float PI = 3.1418926; const float Amount = 1.0E+2; // คือ 1.0 * 102 const float Rate = 1E-3; // คือ 1 * 10-3 const char name = 'A'; // ใหค า รหสั ASCII ของ A คือ 65 const char ch = 'B'; // ใหค า รหสั ASCII ของ B คือ 66 •! ตัวอยางโปรแกรม contst.cpp แสดงการกําหนดและการใช constant ในโปรแกรม มรี าย ละเอียด ดังนี้ ศิริชัย นามบุรี แนะนาํ ภาษา C++ เบอ้ื งตน
! 17 /*Program : const.cpp Process : Display constant in program */ #include <iostream.h> #include <conio.h> const float rate = 0.05; // Global constant void main() { const float tax=0.03; //Local constant float sales,income,total_tax; clrscr(); sales = 8500.50; income = sales*rate; total_tax=income*tax; cout<< \"Income = \"<< income <<endl; cout<< \"Total tax = \"<< total_tax <<endl; getch(); } ♦!การดําเนนิ การทางคณติ ศาสตร (Arithmetic Operations) ในการคาํ นวณทางคณิตศาสตรของภาษา C++ มีการใชเครื่องหมายสาํ หรบั การคาํ นวณ ดงั น้ี ตาราง แสดงเครอ่ื งหมายคาํ นวณทางคณิตศาสตรใน C++ ตัวดําเนินการ ความหมาย ตัวอยาง ผลลัพธ - การลบ 10-5 5 + การบวก 10+5 15 * การคูณ 10*5 50 / การหาร 10/5 2 % การหารคดิ เฉพาะเศษ 9%2 1 -- การลดคาครั้งละ 1 --x หรอื x-- x=x-1 ++ การเพิ่มคาครั้งละ 1 ++x หรอื x++ x=x+1 += การบวกสะสมในตัวแปร y+=x y=y+x -= การลบคาจากตัวแปร y-=x y=y-x *= การคูณคาจากตัวแปร y*=x y=y*x /= การหารจากตัวแปร y/=x y=y/x %= การหารคิดเศษจากตัวแปร y%=x y=y%x ตาราง แสดงลาํ ดบั การประมวลผล (Precedence) ของเครอ่ื งหมายคณติ ศาสตร เครอ่ื งหมายคณติ ศาสตร ลาํ ดบั การประมวลผล หมายเหตุ ศิริชัย นามบรุ ี แนะนาํ ภาษา C++ เบอ้ื งตน
! 18 () 1 ถาเครื่องหมายมีลําดับการ ++, -- (ใชแบบ prefix) 2 ประมวลผลระดับเดียวกันให - (เครอ่ื งหมายหนา ตวั เลข) 3 ดําเนินการจากซายไปขวา */% 4 +- 5 += -= *= /= %= 6 ขอ สงั เกต การใชโ อเปอเรเตอร (Operator) ในการเพิ่มคา(increment) ++ และลดคา(decrement) -- มีขอควรสังเกต ดงั น้ี 1. การเพ่ิมคาขึน้ ทีละ 1 ไดแกการเพิ่มคาใหแกตัวแปรครั้งละ +1 เชน count = count +1; count +=1; count++; ++count; สาํ หรบั ++ มีวิธีการใช 2 วิธี คือ แบบ prefix และ แบบ postfix มขี อแตกตางกนั ดงั ตวั อยา งตอ ไปนเ้ี ปน การใช ++ แบบ prefix price = 5; volume = 3; value = price * ++volume; // คา ของ value คือ 20 คา ของ volume คือ 4 จากประโยคคําสั่งนี้ คา ของ volume จะเพิ่มขึ้น 1 กอ นทจ่ี ะนําไปคูณกับ price แลว นํา ไปเก็บไวในตัวแปร value ตอ ไปน้ี ลองพิจารณาการใช ++ แบบ postfix price = 5; volume = 3; value = price * volume++; // คา ของ value คือ 15 คา ของ volume คือ 4 จากประโยคคําสั่งนี้ คา ของ volume คือ 3 จะถกู นําไปคูณกับ price คือ 5 กอนแลวนํา ไปเก็บไวในตัวแปร value จากนน้ั จงึ เพม่ิ คา ของ volume อกี 1 จึงมคี า เปน 4 2. การลดคาลงทีละ 1 ไดแกก ารลดคา ของตัวแปรคร้ังละ -1 เชน count = count -1; count -=1; count--; --count; สาํ หรบั -- มีวิธีการใช 2 วิธี คือ แบบ prefix และ แบบ postfix มขี อ แตกตา งการใชเ ชน เดียวกับการใช ++ ศิริชยั นามบรุ ี แนะนําภาษา C++ เบอ้ื งตน
! 19 ♦!การเปลย่ี นแปลงชนดิ ขอ มลู ในนพิ จนค ณติ ศาสตร ในนพิ จนท างคณติ ศาสตรเ มอ่ื มกี ารใชเ ครอ่ื งหมายคาํ นวณระหวา งขอ มลู หรอื ตวั แปรทม่ี ชี นดิ (Data Type) แตกตางกัน เชน ชนดิ float บวกกับ ชนดิ int ใน C++ จะปรับประเภทขอมูลของผลลัพธที่ ไดจากการคาํ นวณใหเ ปน ชนดิ ขอ มลู ทม่ี อี นั ดบั สงู กวา โดยอตั โนมตั ิ ดังแสดงอันดับความสาํ คญั ของชนดิ ขอ มลู ในตารางตอ ไปน้ี ตาราง แสดงอันดับความสาํ คัญ(Precedence) ของขอ มลู ประเภท Simple Data Type ชนดิ ตา ง ๆ ชนดิ ขอ มลู อนั ดบั ตวั อยาง long double สูงสุด int * long = long double char + int = int float int + float = float long int * double = double int float + double = double char ตา่ํ สุด long + long dobule = long double ♦เ!ครอ่ื งหมายเปรยี บเทยี บและตรรก (Comparison and Logical Operators) การเปรยี บเทยี บ หมายถึง การหาวา เมอ่ื นําคาที่อยูทางดานซายของเครื่องหมายกับคาที่อยูทางขวา ของเครอ่ื งหมายเปรยี บเทยี บ มาเปรียบเทียบกันแลวจะไดผลลัพธเปนจริงหรือเท็จ ซึ่งในแตละกรณีเมื่อ เปรียบเทียบกันแลว จะไดค า เปน จรงิ หรอื เปน เทจ็ เพยี งคา เดยี วเทา นน้ั โดย C++ จะใชคา 0 แทนเทจ็ และ 1 แทน จริง และมีลาํ ดับในการประมวลผลจากซายไปขวา ถาไมมีวงเล็บกาํ กับไว มเี ครอ่ื งหมายเปรยี บ เทียบดังนี้ ตาราง แสดงเครื่องหมายเปรียบเทียบใน C++ เครอ่ื งหมาย ความหมาย ตวั อยาง ผลลัพธ 5>1 1 (จรงิ ) > มากกวา 5<1 0 (เทจ็ ) 5==1 0 (เทจ็ ) < นอ ยกวา 5!=1 1 (จรงิ ) 5>=5 1 (จรงิ ) == เทากับ 5<=5 1 (จรงิ ) != ไมเทากับ >= มากกวาหรือเทากับ <= นอ ยกวา หรอื เทา กบั ศิริชยั นามบุรี แนะนําภาษา C++ เบอ้ื งตน
! 20 การหาคาลอจิก (Logic) หมายถึง การหาผลลัพธจาก Logic operator ซึ่งจะใหคาผลลัพธออกมา เปน จรงิ หรอื เทจ็ กรณใี ดกรณหี นง่ึ เทา นน้ั เครอ่ื งหมายทเ่ี ปน Logical operator ใน C++ แสดงไวในตาราง ดงั น้ี ตาราง แสดงเครอ่ื งหมายเปรยี บเทยี บเชงิ ตรรก (Logical operator) ใน C++ เครอ่ื งหมาย ความหมาย ตวั อยาง ผลลัพธ && AND (5==5)&&(5>3) 1 (จรงิ ) || OR (5<1)||(5>3) 1 (จรงิ ) ! NOT !(5==5) 0 (เทจ็ ) ตาราง แสดงคา เปน จรงิ และเทจ็ ในกรณตี า ง ๆ ทเ่ี ปน ไปไดท ง้ั หมดของ AND, OR , NOT โดยกําหนดให A และ B คอื ประโยคตรรกทใ่ี หค า จรงิ หรอื เทจ็ A B !A A&&B A||B จรงิ จรงิ เทจ็ จรงิ จรงิ จรงิ เทจ็ เทจ็ เทจ็ จรงิ เทจ็ จรงิ จรงิ เทจ็ จรงิ เทจ็ เทจ็ จรงิ เทจ็ เทจ็ •! ตัวอยางโปรแกรม logic_tst.cpp เปน การแสดงคา ตรรกทไ่ี ดจ ากการเปรยี บเทยี บดว ยเครอ่ื ง หมายเปรยี บเทยี บและ ตัวดําเนนิ การตรรก โดยคา 0 แทน เทจ็ และ 1 แทนจรงิ ดังนี้ /*Program : logic_tst.cpp Process : Test logical value of expression */ #include <iostream.h> #include <conio.h> void main() { clrscr(); cout<< \"Display Logic Operation :\\a\"; cout<< \"\\nLogic value of expression (3==5) :\" <<(3==5); cout<< \"\\nLogic value of expression (5==5) :\" <<(5==5); cout<< \"\\nLogic value of expression (3<=5) :\" <<(3<=5); cout<< \"\\nLogic value of expression (3>=5) :\" <<(3>=5); cout<< \"\\nLogic value of expression (3<=5)&&(5>3) :\" <<((3<=5)&&(5>3)); cout<< \"\\nLogic value of expression ((3<=5)&&(3>5)) :\" <<((3<=5)&&(3>5)); cout<< \"\\nLogic value of expression ((3<=5)||(3>5)) :\" <<((3<=5)||(3>5)); cout<< \"\\nLogic value of expression ((8<=5)||(3>=5)) :\" <<((8<=5)||(3>=5)); cout<< \"\\n\\nValue 1 is true, 0 is false ....press any key\"; getch(); } ศิริชัย นามบรุ ี แนะนาํ ภาษา C++ เบอ้ื งตน
! 21 ♦แ! บบฝกหัดทายบท 1. จงเขยี นโปรแกรมเพอ่ื คาํ นวณหาผลลัพธของนิพจนทางคณิตศาสตรตอไปนี้โดยกาํ หนดใหต วั แปร A=50 B=30 C=5 D=3 E = 10 1.1 (A+B)*(E-D) 1.6 --D+C+B-- 1.2 ++D+C*E 1.7 25*D/5+10 1.3 (25+A)/C+B 1.8 A+B--+D 1.4 A*=D 1.9 C*2+E*5 1.5 20*C+B+++D/2 1.10 (A*2)+B/C-15 2. จงบอกขนาดของหนว ยความจาํ ทต่ี วั แปรชนดิ ตา ง ๆ ตอ ไปนต้ี อ งใชใ นการจองพน้ื ทใ่ี นหนว ยความจํา char, int , float, double, long int, long double 3. จงเขยี นโปรแกรมเพอ่ื หาคาํ ตอบวา ประโยคตอ ไปนเ้ี ปน จรงิ หรอื เทจ็ ถากาํ หนดใหต วั แปร A = 20 B=30 C = 2 D = 5 E=50 3.1 (A>=B) && (A==A) 3.2 (B+C>A+D)|| (B+C<A+D)&&(D<10) 3.3 (A==20) && (B>=30) 3.4 (50==E ) || (!(D<=E) 3.5 !(D!=5) 3.6 (B+C+20)!=50 3.7 C==(D-3) 3.8 (A/C<=B) && (C+D<=A) || (D>A) 3.9 (A%C+5)==(E/5-10) 3.10 A<B&&D<E ศิริชัย นามบรุ ี แนะนาํ ภาษา C++ เบอ้ื งตน
! บทที่ 2 การแสดงผลและการรับขอ มูล ♦!ความหมายของการแสดงผล การแสดงผล หมายถึง การสง่ั ใหค อมพวิ เตอรน ําขอมูลและผลลัพธที่มีอยูในหนวยความ จาํ ไป แสดงผลออกที่อุปกรณแสดงผล (output device) ของคอมพวิ เตอร การแสดงผลที่อุปกรณแสดงผลอาจมี เพยี งอปุ กรณเ ดยี ว หรอื หลาย ๆ อปุ กรณพ รอ มกันกไ็ ด เชน แสดงผลที่จอภาพ เครอ่ื งพมิ พ( Printer) ลําโพง แผนดิสก เปน ตน ♦ก! ารแสดงผลทางจอภาพดว ย cout จากรปู แบบโครงสรา งของโปรแกรม C++ ในบทที่ 1 จะเห็นตัวอยางการใชประโยคคาํ สั่ง cout (อานวา c - out ซีเอาต ยอมาจาก character out) หมายถึง การแสดงผลในลักษณะอักษรหรือขอความ ทอ่ี ยใู นเครอ่ื งหมาย \"…… \" หรอื คา ของตวั แปร(variable)ออกทางจอภาพ cout เปนออบเจ็กต( object) อยูในไฟล iostream.h ซึ่ง cout จะเปน object ที่ทาํ หนา ทด่ี าํ เนนิ การเกี่ยวกับกระแสขอมูล(Stream) ของภาษา C++ ออกไปแสดงผลสูอุปกรณตาง ๆ << เปน operator หรอื ตวั ดาํ เนนิ การ มชี อ่ื วา put to หรอื สง ไปท่ี หรอื เรยี กวา insertion หมายถึง การแสดงขอ ความ เครอ่ื งหมาย << จะทาํ หนา ทน่ี าํ คา ทอ่ี ยทู างขวาของเครอ่ื งหมายซง่ึ อาจจะ เปนคาคงที่ ขอ ความหรอื string ทอ่ี ยใู นเครอ่ื งหมาย \"……\" หรอื คา ตวั แปร(variable) ก็ได สงใหแก Object ที่อยูทางซายของเครื่องหมาย รูปแบบการแสดงผลขอความทางจอภาพ โดยใช cout << มดี งั น้ี ! cout << \" ขอความ \" << \"ขอความ \" << ตัวแปร; ! cout << ตัวแปร<<\"ขอความ\"<<ตัวแปร<<…; •! ตัวอยางโปรแกรม cout_exp.cpp แสดงการใช cout << แสดงขอความออกทาง จอภาพ ศิริชัย นามบุรี การแสดงและการรบั ขอ มลู !
!23 /* Program : cout_exp.cpp #iPncrolucdeess<:iodsistrpelaamy c.ho>ut object in iostream.h */ {void main() ccoouutt<<<<\"\"CT+h+isiisshTiguhrbloanCg+u+agPer\"o;gram \"; } จากตวั อยา งโปรแกรมน้ี cout จะทาํ หนาที่สงกระแสขอมูลขอความ This is Turbo C++ Program C++ is high language ไปแสดงที่จอภาพ ณ ตาํ แหนง ปจ จบุ นั ท่ี cursor ชี้อยู •! โปรแกรม cout_ex2.cpp แสดงขอความตอกันโดยใช << ออกทางจอภาพ /* Program : cout_ex2.cpp Process : display cout object in iostream.h */ #include <iostream.h> void main() { cout<< \"This is Turbo C++ Program.\"<<\" \"<<\" It is very easy.\"; cout<< \"I love C++.\"<<\" \"<<\"It's high level language.\"; } จากโปรแกรม cout_ex2.cpp จะแสดงขอความตอไปนี้บนจอภาพ This is Turbo C++ Program. It is very easy. I love C++. It's high level language. ♦ต! าํ แหนง แสดงผลทจ่ี อภาพดว ย endl 1. การใช endl เปน โอเปอเรเตอรป ระเภทตวั ผสม (manipulator) ทาํ หนา ทเ่ี ลอ่ื นเคอรเ ซอร เพอื่ ขึน้ บรรทดั ใหมและการแสดงผลขอ ความท่ีตามมาจะขึน้ บรรทดั ใหมดว ย •! ตัวอยางโปรแกรม endl_exp.cpp แสดงขอความ และกําหนดใหแสดงขอความขึ้น บรรทดั ใหมด ว ย manipulator คือ endl /* Program : endl_exp.cpp Process : display cout object in iostream.h */ #include <iostream.h> #include <conio.h> void main() { clrscr(); //clear screen standard function from conio.h ศิริชยั นามบุรี การแสดงและการรบั ขอ มูล
!24 cout << \"This is Turbo C++ Program\"<<endl; cout << \"It is very easy.\"<<endl; cout <<endl<<endl; // space 2 line cout << \"I like C++ Program\"<<endl<<endl; cout << \"Press any key to continue...\"<<endl; getch(); //get character standard function from conio.h } 2. การใช setw(n) ทาํ หนาที่กําหนดความกวางของตวั เลขหรือขอความกอ นทจี่ ะแสดงผลใหม ีคา เทากับ n อกั ษร เรยี กคา n วา เปน อารก วิ เมนต (argument) เพื่อใชในการแสดงผลที่จอภาพในลักษณะชิด ขวา โดยตอ งเรยี กใช Header file ที่ชื่อ iomanip.h ในขณะ compile ดว ย ดงั ตวั อยา งตอ ไปน้ี cout << setw(10) << \"World\"; หมายถึง กาํ หนดใหค าํ วา World มีความกวางในการแสดงผล 10 ตาํ แหนง โดยนับจากดานซาย ของจอภาพ อกั ษร d จะเรม่ิ พมิ พต ําแหนง คอลมั นท ่ี 10 และเริ่มพิมพอักษร lrow มาทางซายคอลัมนที่ 9,8,7 และ 6 •! ตัวอยางโปรแกรม setw.cpp เปนการใช setw กําหนดความกวางในการแสดงผล เพอ่ื ให แสดงผล ณ ตาํ แหนงกลางจอภาพ /* Program : setw.cpp Process : display set width of display to screen */ #include <iostream.h> #include <conio.h> #include <iomanip.h> //header file of setw() void main() { clrscr(); //clear screen standard function from conio.h cout << setw(50)<<\"This is Turbo C++ Program\"<<endl; cout << setw(45)<< \"It is very easy.\"<<endl; cout <<endl<<endl; // space 2 line cout << setw(45)<< \"I like C++ Program\"<<endl<<endl; cout << setw(50)<<\"Press any key to continue...\"<<endl; getch(); //get character standard function from conio.h } ศิริชัย นามบุรี การแสดงและการรบั ขอ มลู
!25 ♦!การแสดงผลการคาํ นวณทางคณติ ศาสตร •! ตัวอยางโปรแกรม cout_mat.cpp แสดงการใช cout เพื่อแสดงผลของการคาํ นวณทาง คณิตศาสตร /* Program : cout_mat.cpp Process : Display mathmetic calculate result*/ #include <iostream.h> #include <conio.h> void main() { int number1,number2; float x,y,z; // set value of variable number1=20; number2=30; x=25.25; y=30.05; z=10.75; // display calculation result clrscr(); cout<< \"Program Display Mathmetic calculation\"<<endl; cout<< \"number1 = \" << number1 <<endl; cout<< \"number2 = \" << number2 <<endl; cout<< \"number1 + number2 = \"<<number1+number2 <<endl; cout<< \"number1 - number2 = \"<<number1-number2 <<endl; cout<< \"x+y+z = \"<< x+y+z << endl; cout<< \"x*y*z = \" << x*y*z <<endl; cout<< \"50*25*12.5 = \" << 50*25*12.5 << endl; getch(); } •! ตัวอยางโปรแกรม set_dec.cpp การใช manipulator ทช่ี อ่ื setprecision(n) รว มกบั cout<< เพื่อกําหนดความละเอียดของตาํ แหนง ทศนยิ มของจาํ นวนจริง โดยท่ี n คือจาํ นวน ตําแหนง ทศนยิ ม /*Program : set_dec.cpp process : set decimal precision of float number */ #include <iostream.h> #include <iomanip.h> #include <conio.h> ศิริชยั นามบรุ ี การแสดงและการรบั ขอ มลู
!26 void main() { float A=125.25125; float B=10.7525; float C=212.15; clrscr(); //function in conio.h for clear screen cout<<\"Display set precision of float number ....\"<<endl; cout<<\"A+B = \"<<setprecision(10)<<A+B<<endl; cout<<\"A*B*C = \"<<setprecision(15)<<A*B*C<<endl; cout<<\"A*B = \"<<setprecision(5)<<A*B<<endl; cout<<\"A+B+C = \"<<setprecision(3)<<A+B+C<<endl; cout<<\"A+B+C = \"<<setprecision(2)<<A+B+C<<endl; cout<<\"A/B = \"<<setprecision(1)<<A/B<<endl; getch(); ♦!การคํานวณโดยใชฟ ง กช นั ทางคณติ ศาสตร ! การคาํ นวณคาฟงกชันทางคณิตศาสตร เชน คายกกาํ ลัง คารากท่สี อง คาสัมบูรณ จะตอ งใช ฟงกช นั มาตรฐาน (standard function) ทางดา นคณติ ศาสตร ที่ C++ จดั เตรยี มไวใ หใ น โดยจัดเก็บคลังคาํ สั่งไวในไฟล Math.h ดงั นน้ั ในโปรแกรมทต่ี อ งการใชฟ ง กช นั ทางคณติ ศาสตรจ ะตอ ง มีการ include ไฟล Math.h เปน preprocessor directive ดว ย (วิธีการตรวจสอบวามีฟงกชันใดบางใน ไฟล Math.h ใหใชคาํ สั่ง Help , Index แลวพิมพ คาํ วา Math.h เมื่อพบคําวา Math.h แลวใหกดแปน Enter จะแสดงใหเห็นชื่อฟงกชันตาง ๆ ทางดา นคณติ ศาสตร) ! •! ตัวอยางโปรแกรม Func_Mat.cpp แสดงการหาคาทางคณิตศาสตรโดยใชฟงกชัน pow() และฟงกชัน sqrt() เพื่อหาคาเลขยกกาํ ลังและรากท่สี อง /*Program : Func_Mat.Cpp การแสดงและการรบั ขอ มูล Process : Display using mathmetic function */ #include <iostream.h> #include <math.h> #include <conio.h> #include <iomanip.h> void main() { double x = 9.0, y = 2.0; clrscr(); cout<<\"Display using mathmetic functions ...\\a\"<<endl<<endl; cout<<x<<\" power by \"<<y<<\" = \"<< pow(x, y)<<endl; cout<<\" SquareRoot \"<<x<<\" = \"<< sqrt(x)<<endl; ศิริชัย นามบุรี
!27 cout<<\"(x power y)*(sqrt(y)) = \"<<setprecision(3)<<pow(x,y)*(sqrt(y)); cout<<endl<<endl<<\"Press any key to exit...\"; getch(); } ! ! ♦!การแสดงผลดว ยการใช escape sequence escape sequence เปน รหสั อกั ขระแบบคอนสแตนต(constant) ชนิดอักษร(character) ซึ่ง ประกอบดว ยเครอ่ื งหมาย \\ (backslash) และตัวอักษร อยภู ายในเครอ่ื งหมาย ' ' เชน '\\n' '\\t' ทาํ หนาที่ จดั รปู แบบการแสดงผลรว มกบั cout เหมอื นกบั endl รายละเอยี ดดงั ตารางตอ ไปน้ี ตาราง แสดง escape sequence และความหมาย escape sequence ชื่อ ความหมาย \\a alarm bell สงเสียงบิ๊ป (beep) \\b backspace เหมอื นการกดคยี backspace \\f formfeed ขึ้นหนาใหม \\n newline ขน้ึ บรรทดั ใหม \\r return เหมอื นการกดคยี enter \\t tab เหมอื นการกดคยี tab \\\\ backslash แสดงเครอ่ื งหมาย \\ \\' single quote แสดงเครอ่ื งหมาย ' \\\" double quote แสดงเครอ่ื งหมาย \" \\? Question mark แสดงเครอ่ื งหมาย ? •! ตัวอยางโปรแกรม escape.cpp แสดงการใชเ ครอื่ งหมาย escape sequence รว มกบั cout สําหรบั การแสดงผล /*Program : escape.cpp Process : display with escape sequence */ #include <iostream.h> #include <conio.h> void main() { clrscr(); //clear screen cout<< \"Hello Program C++\" << '\\n'; //new line ศิริชยั นามบุรี การแสดงและการรบั ขอ มลู
!28 cout<< \"C++ is very easy \\a\" <<'\\n'<<'\\a'; //new line and bell cout<< \"\\t\\tC++ is very interest language \\n\"; // 2 tab and newline cout<< \"\\tC++ is OOP Language\\b \\n\"; //tab, backspace and new line getch(); //wait for press any key } ♦ก! ารรบั ขอ มลู จากคบี อรด ดว ย cin ในการเขยี นโปรแกรมเพอ่ื การประมวล มคี วามจําเปนอยางยิ่งที่โปรแกรมดวยทั่วไป จะตองมีการรับขอมูลจากผูใช (user) ผา นทางคยี บ อรด หรอื แปน พมิ พ เพื่อความยืดหยุนในการใชงาน โปรแกรม ใน C++ สามารถใชอ อปเจก็ ต cin ที่อยูในไฟล iostream.h เพอื่ รับขอ มลู จากคียบอรดและ อปุ กรณอ น่ื ๆ ได มรี ปู แบบดงั น้ี ! cin >> ชอ่ื ตวั แปร; ! cin>>ชอ่ื ตวั แปร>>ชอ่ื ตวั แปร>>ชอ่ื ตวั แปร>>…; โดยท่ี cin อา นวา ซีอิน ยอมาจาก character in ซึ่งหมายถึงการรับขอมูลในลักษณะ ของอักษร cin เปน ออปเจ็กตที่สรา งอยใู นไฟล iostream.h >> เปน โอเปเรเตอร ซึ่งมีชื่อวา เอก ซแ ทรก็ ชนั (extraction - รบั เขา มา) หรอื get from จะทาํ หนาที่รับคาที่อยูทางซายของเครื่องหมายสงใหแกตัวแปรที่อยูทางขวาของเครื่องหมาย(ถาไมระบุอุปกรณ หมายถึงรับขอมูลเขาทางคียบอรด) •! ตัวอยางโปรแกรม cin_exp.cpp แสดงการรบั คา จาํ นวนตัวเลขและตัวอักษรทางแปนพิมพ เพื่อเก็บไวในตัวแปร โดยใช cin>> /* Program : cin_exp.cpp การแสดงและการรบั ขอ มลู Process : input number and character to variable, and display value*/ #include <iostream.h> #include <conio.h> void main() { int number1,number2; //declared integer variable char ch; //declared character variable //start statement clrscr(); cout<< \" Please Enter number and character : \\n\"; cout<< \" Enter number1 : \"; cin>>number1; //enter integer from keyboard cout<< \"\\nEnter number 2 : \"; ศิริชัย นามบุรี
!29 cin>>number2; //enter integer from keyboard cout<< \"\\nEnter 1 character : \"; cin>>ch; //enter 1 character from keyboard cout<< \"\\n\\nPress any key to display...\"; getch(); //wait press any key clrscr(); // process display value from variable cout<< \"You enter number and character : \\n\\a\"; cout<< \"Value of number1 : \" <<number1; cout<< \"\\nValue of number 2 : \" <<number2; cout<< \"\\nValue of character : \" <<ch; cout<< \"\\n\\nPress any key to exit...\"; getch(); //wait press any key } •! ตัวอยางโปรแกรม area_cir.cpp แสดงการคํานวณพื้นที่วงกลมและแสดงผลลัพธ ออกมาทางจอภาพ โดยรับคารัศมีของวงกลมจากคียบอรดกาํ หนดใหม ตี วั แปรประเภท float และมี constant ในโปรแกรมดว ย /*Program : area_cir.cpp Process : calculate circle area by input radius */ #include <iostream.h> #include <conio.h> void main() { float rad; //declared real variable const float PI = 3.14159; // defined constant PI //start statement clrscr(); cout<< \"Please enter radius of circle : \"; cin>>rad; float area = PI*rad*rad; //declared variable at position that want to use cout<< \"\\n\\nRadius of circle = \"<<rad; cout<< \"\\n\\nArea of circles = \\a\\n\"<<area; getch(); } วิธีการกําหนดใหโ ปรแกรมรบั ขอ มลู หลาย ๆ ตวั แปร ตอ เนอ่ื งกนั มวี ธิ กี ารเขยี นประโยค ดงั น้ี ! cin >> number1 >> number2 >> number3; ศิริชัย นามบุรี การแสดงและการรบั ขอ มูล
!30 วธิ ปี อ นขอ มลู เมอื่ run โปรแกรม มี 2 วิธี คือ - กรอกเลข 3 จาํ นวน แตละจาํ นวนเวน วรรค แลว Enter ทจ่ี าํ นวนสุดทาย เชน 50 30 40 <Enter> หรอื - กรอกเลขแตละจํานวน แลวกดแปน Enter ตาม เชน 50 <Enter> 30 <Enter> 40 <Enter> •! ตัวอยางโปรแกรม cin_cout.cpp แสดงการกรอกขอ มูลตัวเลข 3 จาํ นวน ทางแปน พมิ พ /* Program : cin_cont.cpp Process : input 3 number and display value*/ #include <iostream.h> #include <conio.h> void main() { int number1,number2,number3; //declared 3 integer variable //start statement clrscr(); cout<< \"Please enter 3 integer number : \\n\"; cin>>number1>>number2>>number3; //enter 3 amount integer from keyboard cout<< \"\\nPress any key to display...\"; getch(); //wait press any key clrscr(); // process display value from variable cout<< \"You enter 3 number : \\n\\a\"; cout<< \"Value of number1 : \" <<number1; cout<< \"\\nValue of number 2 : \" <<number2; cout<< \"\\nValue of number 3 : \" <<number3; cout<< \"\\n\\nPress any key to exit...\"; getch(); //wait press any key } ♦ก! ารใช manipulator เพอ่ื เปลย่ี นเลขฐาน การแสดงและการรบั ขอ มูล ศิริชยั นามบรุ ี
!31 ในการเปลี่ยนการแสดงผลเลขฐานตาง ๆ ใน C++ ไดแก ฐานสบิ (Decimal) ฐานแปด (Octal) ฐานสบิ หก(Hexadecimal) เราสามารถใช แมนพิ วเลเตอร (manipulator) รว มกบั cout เพอ่ื แสดงจาํ นวน เลขฐานตา ง ๆ ได โดยใช manipulator ตอ ไปน้ี dec ทําหนา ทเ่ี ปลย่ี นเลขฐานแปดหรอื ฐานสบิ หกเปน เลขฐานสบิ oct ทาํ หนา ทเ่ี ปลย่ี นเลขฐานสบิ หรอื ฐานสบิ หกเปน เลขฐานแปด hex ทําหนา ทเ่ี ปลย่ี นเลขฐานแปดหรอื ฐานสบิ เปน เลขฐานสบิ หก ใน C++ กาํ หนดจํานวนเลขในฐานตา ง ๆ ดงั น้ี ถามี 0 (ศนู ย) นาํ หนาจาํ นวนเลข แสดงวา เปน จํานวนฐานแปด เชน 065,0125 ถามี ox (ศนู ยเ อก ซ) นาํ หนาจาํ นวนเลข แสดงวา เปน จํานวนฐานสิบหก เชน 0x125 ถาไมมี 0 หรอื 0x นาํ หนาจาํ นวนเลข แสดงวา เปน ฐานสบิ เชน 50, 95 •! ตัวอยางโปรแกรม base_num.cpp แสดงการใช manipulator เปลย่ี นเลขฐาน dec, oct, hex ตาง ๆ /*Program : base_num.cpp Process : display change base number of decimal,octal,hexadecimal*/ #include <iostream.h> #include <conio.h> void main() { clrscr(); cout<< \"Display change base number...\"<<endl<<endl; cout<< \"10 decimal to hexadecimal = \"<<hex<<10<<endl; cout<< \"5865 decimal to hexadecimal = \"<<hex<<5865<<endl; cout<< \"1250 decimal to octal = \"<<oct<<1250<<endl; cout<< \"02342 octal to decimal = \"<<dec<<02342<<endl; cout<< \"0xabc125 hexadecimal to decimal = \"<<dec<<0xabc125<<endl; cout<< \"0xf hexadecimal to decimal = \"<<dec<<0xf<<endl; getch(); } ♦!แบบฝกหัดทายบท ศิริชยั นามบุรี การแสดงและการรบั ขอ มลู
!32 1. จงเขยี นโปรแกรมแสดงขอ ความรายละเอยี ดเกย่ี วกบั ตวั ทา นเอง ดงั ตอ ไปน้ี โดยใหแ สดงขอ ความ บรเิ วณกลางจอภาพ This is C++ program. I love to study C++ language. My name is Mr…….. Code ……….. Major …………. 2. จากสตู รการคาํ นวณหาดอกเบย้ี ดงั น้ี I = Pin S = P+I โดยท่ี I คือ ดอกเบย้ี P คือ เงนิ ตน i คือ อตั ราดอกเบย้ี ตอ ป n คือ จํานวนป S คือ เงนิ รวม ใหเ ขยี นโปรแกรมเพอ่ื คาํ นวณหาคา ดอกเบย้ี ( I ) และเงนิ รวม (S) โดยใหผูใชกรอกขอมูลทาง แปนพิมพ ทจ่ี าํ เปน ตอ งใชใ นการคาํ นวณ 3. จงเขยี นโปรแกรมเพอ่ื คาํ นวณหาผลลัพธและแสดงผลลัพธนิพจนทางคณิตศาสตรตอไปนี้ โดยกําหนดให A , B เปน จํานวนจรงิ (float) โดย A = 2.25 B = 3.0 X,Y,Z เปน จํานวนเตม็ (integer) โดย X = 4 Y = 5 Z = 8 คาํ นวณหานพิ จนต อ ไปนใ้ี นโปรแกรม โดยกําหนดการแสดงผลทศนิยม 2 ตาํ แหนง A+B+X+Y+Z Z*Y/A (A+B)*X pow(A,2) pow(A,2)*pow(X,2) sqrt(X+Y+Z) sqrt(X*Y*Z)/B ศิริชยั นามบรุ ี การแสดงและการรบั ขอ มูล
! บทที่ 3 การเลือกทาํ ♦ค! วามหมายของการเลอื กทํา การเลือกทํา หมายถึง การกาํ หนดใหโ ปรแกรมทาํ งานอยา งหนง่ึ เมอ่ื เงอ่ื นไข (Condition) เปน จริงและทาํ (หรอื ไมต อ งทํางานใด ๆ ) เมอ่ื เงอ่ื นไข เปน เทจ็ งานโปรแกรมคอมพวิ เตอรม กี ารกําหนดให เลือกทาํ อยูมากมายการถามผูใช เชน Save (Y/N) _ Continue(Y/N) _ เปน ตน ♦!การเลอื กทําแบบ if การเลือกทําแบบ if เร่ิมดวยการทดสอบเงอ่ื นไขที่ไดก าํ หนดไวก อ น อาจมีมากกวา 1 เงอ่ื นไขก็ ได ผลการตรวจสอบเงอ่ื นไข ถาผล - เปน จรงิ statement ตอจาก if จะถูกทํางาน - เปน เทจ็ statement ตอจาก if จะไมถูกทํางานหรอื ไมตองทาํ งานใด ๆ รปู แบบ 1 แบบ statement เดยี ว มีรปู แบบ ดงั น้ี if (เงอ่ื นไขการเปรยี บเทยี บ) statement; รปู แบบ 2 แบบหลาย statement มีรูปแบบ ดงั น้ี if (เงอ่ื นไขการเปรยี บเทยี บ) { statement; statement; statement; … !} ศิริชยั นามบรุ ี การเลอื กทํา
! 34 •! ตัวอยางโปรแกรม test_if1.cpp แสดงการรับขอมูลจํานวนเต็ม 2 จาํ นวน และเปรยี บเทยี บ กันโดยใช if แบบประโยค(statement) เดยี ว /*Program : test_if1.cpp Process : copare 2 integer */ #include <iostream.h> #include <conio.h> void main() { int x,y; int result = 100; //start statement clrscr(); cout<< \"Please enter integer number : \\n\"; cout<< \"Finst number : \"; cin>>x; cout<< \"\\nSecond number : \"; cin>>y; //condition of if if (x>y) //condition cout<<\"\\nFirst number is greater than second number\\a\\n\"; if (x+y>result) //condition cout<<\"\\nFirst number + Seconde number is greater than \\a\\n\"<<result; getch(); } •! โปรแกรม test_if2.cpp แสดงการเปรยี บเทยี บจํานวนตัวเลข 2 จาํ นวน และใช if แบบ หลาย ประโยค(Compound statement) /*Program : test_if2.cpp Process : copare 2 integer*/ #include <iostream.h> #include <conio.h> void main() { int x,y; int result = 100; //start statement clrscr(); cout<< \"Please enter integer number : \\n\"; cout<< \"Finst number : \"; cin>>x; cout<< \"\\nSecond number : \"; cin>>y; //condition of if ศิริชัย นามบรุ ี การเลอื กทํา
! 35 if (x>y) { clrscr(); cout<<\"\\nFirst number is : \"<<x; cout<<\"\\nSecond number is : \"<<y; cout<<\"\\nFirst number is greater than second number\\a\\n\"; } if (x+y<=result) { clrscr(); cout<<\"\\nFirst number is : \"<<x; cout<<\"\\nSecond number is : \"<<y; cout<<\"\\nFirst number + Seconde number <= \\a\\n\"<<result; } getch(); } ♦!การเลอื กทําแบบ if…else การเลือกทําแบบ if …else มีหลักการทาํ งาน คอื เรม่ิ ดว ยการทดสอบเงอ่ื นไขทก่ี ําหนดไว ถาผล การตรวจสอบเงอ่ื นไข เปน ดงั น้ี - เปน จรงิ statement ที่อยูตอจาก if จะถูกทํางาน - เปน เทจ็ statement ที่อยูตอจาก else จะถูกทํางาน รปู แบบท่ี 1 if…else แบบ statement เดยี ว มรี ูปแบบ ดงั น้ี if(เงอ่ื นไขการเปรยี บเทยี บ) statement; else statement; รปู แบบท่ี 2 if…else แบบหลาย statement มีรปู แบบ ดงั น้ี if(เงอ่ื นไขการเปรยี บเทยี บ) { statement; statement; statement; } else { statement; statement; !} ศิริชัย นามบุรี การเลอื กทํา
! 36 •! ตัวอยางโปรแกรม test_if3.cpp แสดงการใช if…else แบบ statement เดยี ว /*Program : test_if3.cpp Process : copare 2 integer and use if...else one statement */ #include <iostream.h> #include <conio.h> void main() { int x,y; //start statement clrscr(); cout<< \"Please enter integer number : \\n\"; cout<< \"Finst number : \"; cin>>x; cout<< \"\\nSecond number : \"; cin>>y; if (x>y) //condition of if cout<<\"\\nFirst number is greater than second number\\a\\n\"; else cout<<\"\\nSecond number is greater than or equal first number\\a\\n\"; getch(); } •! ตัวอยางโปรแกรม test_if4.cpp แสดงการใช if…else แบบหลาย statement การเลอื กทํา /*Program : test_if3.cpp Process : copare 2 integer and use if...else */ #include <iostream.h> #include <conio.h> void main() { int x,y; //start statement clrscr(); cout<< \"Please enter integer number : \\n\"; cout<< \"Finst number : \"; cin>>x; cout<< \"\\nSecond number : \"; cin>>y; //condition of if if (x>y) ศิริชยั นามบรุ ี
! 37 { clrscr(); cout<<\"You enter 2 number :\"; cout<<\"\\nFirst number is : \"<<x; cout<<\"\\nSecond number is : \"<<y; cout<<\"\\nFirst number is greater than second number\\a\\n\"; getch(); } else { clrscr(); cout<<\"You enter 2 number :\"; cout<<\"\\nFirst number is : \"<<x; cout<<\"\\nSecond number is : \"<<y; cout<<\"\\nSecond number is greater than or equal first number\\a\\n\"; } getch(); } ♦!การเลอื กทําแบบ if ซอ นกนั (nested if) เราสามารถใช if…else if ซอนกัน เพอ่ื ตรวจสอบเงอ่ื นไขในโปรแกรมใหม ที างเลอื กหลาย ๆ ทางได มรี ปู แบบดงั น้ี if (เงอ่ื นไขท่ี 1) ! { statement; statement; } else if (เงอ่ื นไขท่ี 2) { statement; statement; !} ! else if (เงอ่ื นไขท่ี 3) ! { statement; ! statement; !} ! else ! { statement; ! •! ตัวอยางโปรแกรม grsatadtee1m.cpepnt;แสดงการคาํ นวณเกรด โดยการกรอกคะแนนรวมทาง ! คียบอรด โดยม}ีเงื่อนไขการตัดเกรดจากคะแนนรวม ดังนี้ ศิริชัย นามบรุ ี การเลอื กทํา
! 38 คะแนนรวม 0-49 ไดเ กรด F D คะแนนรวม 50-59 ไดเ กรด C B คะแนนรวม 60-69 ไดเ กรด A * คะแนนรวม 70-79 ไดเ กรด คะแนนรวม 80-100 ไดเ กรด คะแนนอน่ื ๆ (ไมถ กู ตอง) ไดเ กรด โดยแสดงการใช if…else…if แบบ statement เดยี ว ดังนี้ /*Program: grade1.cpp Process: calculate grade from total score*/ #include <iostream.h> #include <conio.h> void main() { int score; char grade; //begin statement clrscr(); cout<< \"Program calculate grade\"; cout<< \"\\n\\nPlease enter your score : \"; cin>>score; //input score if (score<0) //calculate grade use if...else if.. grade='*'; else if (score<=49) grade='F'; else if(score<=59) grade='D'; else if(score<=69) grade='C'; else if(score<=79) grade='B'; else if(score<=100) grade='A'; else grade='*'; cout<< \"You get grade : \\a\"<<grade<<'\\n'; //show get grade if (grade=='*') cout<< \"Your score = \"<<score<< \" is error range !!!\\n\"; getch(); } ศิริชัย นามบรุ ี การเลอื กทํา
! 39 •! ตัวอยางโปรแกรม grade2.cpp แสดงการคํานวณการตดั เกรดโดยใช Logical Operator ได แก || (OR) && (AND) มาใชในการกําหนดเงอ่ื นไข ซง่ึ มผี ลลพั ธก ารทํางานเหมือน โปรแกรม grade1.cpp /*Program: grade2.cpp Process: calculate grade from total score */ #include <iostream.h> #include <conio.h> void main() { int score; char grade; //begin statement clrscr(); cout<< \"Program calculate grade\"; cout<< \"\\n\\nPlease enter your score : \"; cin>>score; //input score //calculate grade use if...else if.. if (score<0 || score>100) //check enter error score grade='*'; else if (score>=0 && score<=49) grade='F'; else if(score>=50 && score<=59) grade='D'; else if(score>=60 && score<=69) grade='C'; else if(score>=70 && score<=79) grade='B'; else grade='A'; // end of if command cout<< \"You get grade : \\a\"<<grade<<'\\n'; //show get grade if (grade=='*') cout<< \"Your score = \"<<score<< \" is error range !!!\\n\"; getch(); } ศิริชัย นามบรุ ี การเลอื กทํา
! 40 ♦!การใช Conditional Operator ?: ใน C++ มีการกําหนดเงอ่ื นไขทท่ี ํางานไดเ หมอื น if…else เรยี กวา conditional operator ใช สัญลักษณ ?: แทน มีรปู แบบ คือ ตวั แปรเกบ็ ผลลพั ธ = (เงื่อนไขเปรียบเทียบ) ? คา ท่ี 1 : คา ท่ี 2; หลักการทาํ งานเมอ่ื เงอ่ื นไขใหค า เปน จริง ตัวแปรผลลัพธจะมีคาเปน คาที่ 1 แตถ า เงอ่ื นไขใหค า เปน เทจ็ ตัวแปรผลลัพธจะมีคาเปน คาที่ 2 พิจารณาประโยค if…else ตอ ไปน้ี if (a>b) c=a; else c=b; หรอื if (a>b) c= a; else c=b; จากประโยค if…else ดังกลาว สามารถใช conditional operator แทนไดด งั น้ี c=(a>b)? a : b; ♦ก! ารเลอื กทําแบบ switch … case ในกรณีที่การเลือกทาํ มีหลายเงื่อนไข แตล ะเงอ่ื นไขขน้ึ อยูกับ ตัวแปร (variable) ตวั เดยี วกนั ที่ เปน ประเภท int หรอื char สามารถใชการเลือกทาํ แบบ switch…case แทนการเลอื ก ทาํ แบบ if ซอนกัน (nested if ) ได โดยมรี ปู แบบดงั น้ี switch(ตัวแปรชนิด int หรอื char) { case คาคงที่ชนิด int หรอื char: statement; statement; break; case คาคงที่ชนิด int หรอื char: statement; statement; break; default: statement; break; !} ศิริชัย นามบรุ ี การเลอื กทํา
! 41 หลักการทาํ งานของ switch ....case คือ การตรวจสอบเงอ่ื นไขของ switch จะนําคา ของตวั แปร ที่กําหนดไวในวงเล็บหลัง switch (เปน ตวั แปรชนดิ int หรอื char เทา นน้ั ) ไปตรวจสอบกับคาคงที่ที่ กาํ หนดไวใ นแตล ะกรณหี รอื case ตา ง ๆ (ซึ่งตองเปน คาคงท่ชี นดิ int หรอื char เหมอื นกบั ตวั แปรหลงั switch) ถา ตรงกบั กรณใี ดเปน อนั ดบั แรก จะทาํ statement หลัง case นน้ั แลวก็ออกจากการทาํ งานดวยคีย เวริ ด break ไปทาํ งาน statement อน่ื ๆ ที่อยูหลัง } ตอ ไป แตถาคา ตัวแปรที่กาํ หนดไวไ มต รงกบั กรณี ใด ๆ เลย จะทาํ statement หลัง default (ถากาํ หนด default: ไว) •! ตัวอยางโปรแกรม switch.cpp แสดงการใช switch โดยกําหนดตัวแปรหลงั switch เปน ประเภท char ดงั นน้ั คา คงทท่ี ก่ี าํ หนดไวห ลัง case จะตองเปน char โดยกําหนดไวใ นเคร่ือง ' ' ดวย เพื่อใหสามารถนาํ คาคงที่ประเภทเดียวกนั เปรยี บเทยี บกนั ได /*Program : switch.cpp Process : test statement switch...case */ #include <iostream.h> #include <conio.h> void main() { int first,second; char choice; //begin statement clrscr(); cout<<\"Program Calcurate Area\\n\"; cout<<\"1. Circle\\n\"; cout<<\"2. Square\\n\"; cout<<\"3. Triangle\\n\"; cout<<\"Please select your choice <1-3>: \"; cin>>choice; //begin switch statement switch(choice) { case '1': cout<<\"\\nYou select choice \"<<choice<< \" calculate Circle Area\\n\"; cout<<\"Press any key to end program\\n\"; break; case '2': cout<<\"\\nYou select choice \"<<choice<< \" calculate Square Area\\n\"; cout<<\"Press any key to end program\\n\"; break; case '3': cout<<\"\\nYou select choice \"<<choice<< \" calculate Triangle Area\\n\"; cout<<\"Press any key to end program\\n\"; break; default: ศิริชยั นามบรุ ี การเลอื กทํา
! 42 cout<<\"\\nYou select Another choice \\a\\a\\n\"; cout<<\"Press any key to end program\\n\"; } getch(); } ♦!แบบฝก หดั ทา ยบท 1. ในการคาํ นวณภาษเงนิ ไดบุคคลธรรมดา (ภงด.91) มีการคาํ นวณภาษเี งนิ ไดใ นอตั รากา วหนา จากเงนิ ได สุทธิ ดงั อตั ราตามตารางตอ ไปน้ี เงินไดสุทธิตั้งแต จาํ นวนเงนิ ไดส งู สดุ ของ อตั ราภาษี ภาษีเงินไดใน ภาษีสะสมสูงสุด ขั้น รอ ยละ แตละขั้น ของขน้ั 1 ถึง 100,000 100,000 5 5,000 5,000 100,001-500,000 400,000 10 40,000 45,000 500,001-1,000,000 500,000 20 100,000 145,000 1,000,001-4,000,000 3,000,000 30 900,000 1,045,000 4,000,001 ขึ้นไป 37 ตวั อยา งเชน ถามีเงินไดสุทธิ 1,450,000 บาท การคาํ นวณภาษใี นอตั รากา วหนา เปน ดงั น้ี 100,000 บาทแรก คดิ รอ ยละ 5 ภาษีที่คาํ นวณได 5,000 บาท เหลอื เงินไดสุทธิอีก 1,450,000-100,000 = 1,350,000 บาท นาํ ไปคาํ นวณในอตั ราตอ ไปเตม็ ขน้ั 400,000 บาท คิดรอยละ 10 ภาษีที่คาํ นวณได 40,000 บาท เหลือเงินไดส ุทธิอกี 1,350,000 - 400,000 = 950,000 บาท นาํ ไปคาํ นวณในอตั ราตอ ไปเตม็ ขน้ั 500,000 บาท คิดรอยละ 20 ภาษีที่คาํ นวณได 100,000 บาท เหลือเงินไดสทุ ธิอีก 950,000 - 500,000 = 450,000 บาท นาํ ไปคาํ นวณในอตั ราตอ ไปไมเ ตม็ ขน้ั 450,000 บาท คดิ รอ ยละ 30 ภาษีที่คาํ นวณได 135,000 บาท รวมภาษีเงินไดที่ตองชําระทง้ั สน้ิ 5,000+40,000+100,000+135,000 = 280,000 บาท จากวิธีการคํานวณภาษเี งนิ ไดบ คุ คลธรรมดาในอตั รากา วหนา น้ี ใหเ ขยี นโปรแกรมเพอ่ื คาํ นวณ หาภาษี เมอ่ื กรอกจํานวนเงินไดสุทธิทางแปนพิมพ โดยแสดงขน้ั ตอนในการคาํ นวณอตั ราแบบกา วหนา แตล ะขน้ั ใหเ หน็ โดยละเอยี ดทางจอภาพ ศิริชยั นามบุรี การเลอื กทํา
! 43 2. รา นโชคดกี ารคา ตอ งการใหเ ขยี นโปรแกรมเพอ่ื คาํ นวณสวนลดของราคาสินคาและราคาสินคาสุทธิ ใหแกลูกคาจากยอดซื้อที่รวม VAT 10% แลว ตามเงอ่ื นไขดงั น้ี ยอดซื้อ 1- 1000 บาท ใหสวนลด 3% ยอดซื้อ 1001- 2000 บาท ใหสวนลด 5% ยอดซื้อ 2001- 5000 บาท ใหสวนลด 7% ยอดซื้อ 5001- 10000 บาท ใหสวนลด 9% ยอดซื้อ 10001 บาทขึ้นไป ใหสวนลด 10% ใหน กั ศกึ ษาเขยี นโปรแกรมเพอ่ื รบั คา จํานวนยอดซอ้ื สนิ คา กอ นรวม VAT , คํานวณราคาซอ้ื รวม VAT, คาํ นวณสวนลดที่ลูกคาจะไดรับ, คาํ นวณราคาสินคาสุทธิที่ลูกคาตองจาย ศิริชยั นามบุรี การเลอื กทํา
! บทที่ 4 การทาํ ซาํ้ ♦!ความหมายของการทาํ ซา้ํ การทาํ ซํ้าหรอื การวนรอบ (loop) หมายถึง การกาํ หนดเงอ่ื นไขเพอ่ื ใหโ ปรแกรมทาํ งานใน statement หรอื กลุมของ statement เดิมซํ้าๆ 1 ครง้ั หรอื มากกวา โดยจํานวนครง้ั ของการทาํ งานจะเปนไป ตามเงอ่ื นไขที่กาํ หนดไว มีประโยชนอยางยิ่งทาํ ใหก ารเขยี นโปรแกรมยดื หยนุ และสะดวก การเขียน โปรแกรมมีประสิทธิภาพดวยคาํ สั่งกาํ หนดใหมีการทาํ ซํ้าหรอื วนรอบ ใน C++ มี statement เพอ่ื สง่ั ใหโ ปรแกรมมกี ารทาํ งานแบบทาํ ซํ้า คือ for, while และ do… while ซึ่งจะกลาวถึงรายละเอียดตอไป ♦ล! ูป for ลูป for จะเรม่ิ ดว ยการนาํ คา เรมิ่ ตนเปรยี บเทยี บกับเงื่อนไขที่กาํ หนดไว ถาเง่ือนไข เปน จรงิ จะทาํ statement ในลูป ถา เปน เทจ็ จะเลิกทํางานในลูป กรณเี มอ่ื ตรวจสอบเงอ่ื นไขแลว เปน จรงิ เมอ่ื ทาํ งานใน ลูปแลว กจ็ ะเพม่ิ หรอื ลดคา ตวั แปรในเงอ่ื นไขอกี 1 หรือมากกวาตามที่กําหนดไวโ ดยอตั โนมตั ิ แลว ตรวจ สอบเงอ่ื นไขอกี ครง้ั ถา เงื่อนไข เปน เทจ็ จะเลิกทําซํ้าในลูป มรี ปู แบบ statement ดงั น้ี 1. ลูป for ทม่ี ี statement เดยี ว มรี ปู แบบ ดงั น้ี for (ตัวแปรและคาเริ่มตน; เงอ่ื นไขเปรยี บเทยี บ; เพิ่มหรือลดคาตัวแปร) statement; 2. ลูป for ทม่ี หี ลาย statement มีรูปแบบ ดงั น้ี for (ตัวแปรและคาเริ่มตน; เงอ่ื นไขเปรยี บเทยี บ; เพิ่มหรือลดคาตัวแปร) { statement; statement; statement; } ศิริชยั นามบรุ ี การทาํ ซา้ํ
! 45 3. ลูป for ซอนกัน หมายถึง มีการใช statement ของ for อกี ในขณะมีการสั่งทาํ ซํ้าดว ย for ไว แลว โปรแกรมจะดาํ เนนิ การทาํ ซํ้าในลูป โดยแตล ะรอบของลูปนอก จะตอ งทาํ ลูปในใหครบทุกรอบ กอน แลว จงึ เรม่ิ ทาํ ลปู นอกในรอบตอ ไป มีรูปแบบทั่วไป ดงั น้ี for (ตัวแปรและคาเริ่มตน; เงอ่ื นไขเปรยี บเทยี บ; เพิ่มหรือลดคาตัวแปร) { statement; ลปู นอก statement; for (ตัวแปรและคาเริ่มตน; เงอ่ื นไขเปรยี บเทยี บ; เพิ่มหรือลดคาตัวแปร) { statement; statement; ลูปใน statement; } statement; statement; } •! ตัวอยางโปแกรม for_exp1.cpp แสดงการใช for แบบ statement เดยี ว แสดงขอความซาํ้ หลายครั้งบนจอภาพ โดยกําหนดคาของตัวแปรตรวจสอบแบบเพิ่มคาและลดคาครั้งละ 1 หรอื มากกวา /*Program : for_exp1.cpp Process : display for loop statement */ #include <iostream.h> #include <conio.h> void main() { int i; clrscr(); for(i=1;i<=5;i++) //set initial i value and condition of for loop cout<< \"Program C++\\n\"; getch();cout<<'\\n'; // condition with decrease value i = i-1 for(i=5;i>=1;i--) cout<< \"I love C++ Language\\n\"; getch();cout<<'\\n'; for(i=16;i<=20;i++) ศิริชัย นามบรุ ี การเลอื กทํา
! 46 cout<< \"C++ Language is very easy for me\\n\"; getch(); } •! ตัวอยางโปรแกรม for_exp2.cpp แสดงการใช for แบบหลาย statement คาํ นวณผลรวมและ คาเฉลี่ยจาํ นวน 1-10 /*Program : for_exp2.cpp Process : Calculate summation and everage 1-10, display all */ #include <iostream.h> #include <conio.h> void main() { float i,summation; float average; //begin statement clrscr(); summation=0;average=0; // set initial value cout<< \"Progarm display summation and average 1-10\\n\"; for(i=1;i<=10;i++) { cout<<i<<'\\n'; summation=summation+i; //calculate summation 1-10 } average=summation/10; cout<< \"\\nSummation 1-10 = \"<<summation; cout<< \"\\nAverage 1-10 = \"<<average; getch(); •! ตัวอยางโปรแกรม for_exp3.cpp แสดงการหาผลรวมและคา เฉลย่ี จาํ นวนตั้งแต 1-n โดยทผ่ี ู ใชสามารถกรอกคา n ในการคํานวณได /*Program : for_exp3.cpp Process : Calculate summation and everage 1-n, display all */ #include <iostream.h> #include <conio.h> void main() { float i,summation,n; float average; //begin statement clrscr(); ศิริชยั นามบุรี การเลอื กทํา
! 47 summation=0;average=0; // set initial value cout<< \"Progarm display summation and average 1-n\\n\"; cout<< \"Please enter n : \";cin>>n; for(i=1;i<=n;i++) { cout<<i<<\" \"; summation=summation+i; //calculate summation 1-10 } average=summation/n; cout<< \"\\nSummation 1-10 = \"<<summation; cout<< \"\\nAverage 1-10 = \"<<average; getch(); } •! ตัวอยางโปรแกรม for_exp4.cpp แสดงการใช for แบบซอนกัน เพื่อคาํ นวณการคณู และ แสดงผลลัพธ /*Program : for_exp4.cpp Process : Calculate multiply number and display all */ #include <iostream.h> #include <conio.h> void main() { int i,j; //begin statement clrscr(); cout<< \"Display Multiply calculation :\\n\"; for(i=2;i<=4;i++) //begin external loop { clrscr(); cout<< \"Display Multiply calculation of \"<<i<<'\\n'; for (j=1;j<=12;j++) //begin internal loop { cout<<i<<\"*\"<<j<<\" = \"<<i*j; cout<<'\\n'; } //end of internal loop cout<< \"press any key to continue...\"; getch(); } //end of external loop cout<< \"\\nEnd of program....\\a\\n\";getch(); } ♦!ลูป while ศิริชัย นามบรุ ี การเลอื กทํา
! 48 ลูป while จะเรม่ิ การทํางานดวยการทดสอบเงื่อนไขที่กาํ หนดไวตนลูปกอ นเสมอ ถา เงอ่ื นไขเปน จริง จะทาํ งานซํา้ ในลูป แตถ า เงอ่ื นไขเปน เทจ็ จะเลิกทํางานในลูป (ทาํ งานในลูปขณะที่เง่อื นไขเปนจริง เทา นน้ั ) รปู แบบของ while มดี งั น้ี 1. ลูป while ที่มี statement เดยี ว มรี ปู แบบดงั น้ี while(เงอ่ื นไขเปรยี บเทยี บ) statement; 2. ลูป while ที่มีหลาย statement มรี ปู แบบดงั น้ี while(เงอ่ื นไขเปรยี บเทยี บ) { statement; statement; statement; } 3. ลูป while ซอนกัน มีรูปแบบ ดงั น้ี while(เงอ่ื นไขเปรยี บเทยี บของลปู นอก) { statement; statement; while(เงอ่ื นไขเปรยี บเทยี บของลปู ใน) { statement; statement; statement; } statement; statement; } ศิริชยั นามบรุ ี การเลอื กทํา
Search
Read the Text Version
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197