1  ความรู้เบื้องต้นในการเขียนโปรแกรมคอมพิวเตอร์ การวิเคราะห์และออกแบบโปรแกรม

วัตถุประสงค์

  1. เพื่อให้รู้และเข้าใจหลักการโปรแกรมและกระบวนการเขียนโปรแกรม

  2. เพื่อให้รู้ถึงลักษณะ คุณสมบัติ และโครงสร้างของภาษาจาวา

  3. เพื่อให้รู้ถึงจริยธรรมของการเขียนโปรแกรมและนักเขียนโปรแกรม

  4. เพื่อให้รู้และเข้าใจกระบวนการพัฒนาโปรแกรมเบื้องต้น

  5. เพื่อให้สามารถวิเคราะห์ปัญหาและออกแบบโปรแกรมได้

  6. เพื่อให้สามารถเขียนขั้นตอนวิธีและรหัสเทียมเพื่อออกแบบโปรแกรมได้

  7. เพื่อให้สามารถเขียนผังงานเพื่อออกแบบโปรแกรมได้

ปัจจุบันซอฟต์แวร์ถูกนำมาใช้ในงานหลากหลายด้าน เช่น งานด้านการออกแบบ งานทางวิศวกรรม งานทางธุรกิจ งานด้านความบันเทิง การทหาร การเกษตร การศึกษา การแพทย์ เป็นต้น ทำให้กิจกรรมการดำเนินงานในแต่ละด้านมีรูปแบบที่เปลี่ยนแปลงไปและมีประสิทธิภาพมากยิ่งขึ้น ตัวอย่างเช่นในงานด้านธุรกิจมีการใช้ซอฟต์แวร์และเทคโนโลยีสารสนเทศต่าง ๆ ในการดำเนินงาน การติดต่อสื่อสาร และการทำธุรกรรม ทำให้องค์กรธุรกิจสามารถปรับเปลี่ยนรูปแบบการดำเนินธุรกิจให้มีประสิทธิภาพมากขึ้น นอกจากนี้แล้วยังทำให้องค์กรธุรกิจสามารถสร้างผลิตภัณฑ์และบริการในรูปแบบใหม่เพื่อสร้างความพึงพอใจให้กับลูกค้า เช่น การซื้อขายสินค้าออนไลน์ การกดเงินสดผ่านตู้เอทีเอ็มแบบไม่ใช้บัตร เป็นต้น

ทั้งนี้การที่จะทำให้ซอฟต์แวร์สามารถดำเนินการแก้ไขปัญหาที่ต้องการได้นั้นนักเขียนโปรแกรมจำเป็นจะต้องเรียนรู้หลักการโปรแกรมและกระบวนการเขียนโปรแกรมซึ่งในรายวิชานี้เป็นการเรียนรู้ถึงหลักการเบื้องต้นในการเขียนโปรแกรมแบบมีโครงสร้างด้วยภาษาจาวา เพื่อให้สามารถวิเคราะห์ปัญหา ออกแบบ และพัฒนาโปรแกรมอย่างง่ายได้ โดยกระบวนการเรียนรู้ในการเขียนโปรแกรมนั้นนอกจากเรียนรู้จากการอ่านและการฟังแล้ว สิ่งสำคัญอย่างยิ่งคือการลงมือฝึกปฏิบัติจริง ดังนั้นการเรียนเขียนโปรแกรมจึงคล้ายกับการฝึกเล่นดนตรีและการเล่นกีฬาซึ่งต้องอาศัยการฝึกฝนจึงจะทำให้เกิดความรู้และความชำนาญ นอกจากนี้แล้วในการแก้ไขปัญหาด้วยการเขียนโปรแกรมนั้นจำเป็นต้องทราบข้อกำหนดของภาษาโปรแกรมที่เลือกใช้และนักเขียนโปรแกรมจะต้องมีทักษะการคิดเชิงคำนวณ (computational thinking) ในการแปลงปัญหาต่าง ๆ ให้อยู่ในรูปแบบขั้นตอนที่สามารถนำไปเขียนโปรแกรมเพื่อให้คอมพิวเตอร์ประมวลผลตามคำสั่งได้

1.1 ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์

คอมพิวเตอร์เป็นอุปกรณ์อิเล็กทรอนิกส์ที่ประกอบไปด้วยฮาร์ดแวร์และซอฟต์แวร์ทำหน้าที่ในการจัดเก็บและประมวลผลข้อมูล ฮาร์ดแวร์คือส่วนประกอบทางกายภาพที่จับต้องได้ของคอมพิวเตอร์ประกอบไปด้วยองค์ประกอบหลัก 5 ส่วนทำงานเชื่อมต่อกัน ได้แก่ (1) หน่วยประมวลผลกลางหรือซีพียู (CPU), (2) หน่วยความจำ (memory), (3) อุปกรณ์หน่วยเก็บ (storage devices) เช่น ฮาร์ดดิสก์, ซีดี, เทป เป็นต้น (4) อุปกรณ์รับเข้าและส่งออก (input and output devices) เช่น จอภาพ, แป้นพิมพ์, เครื่องพิมพ์ เป็นต้น และ (5) อุปกรณ์ในการติดต่อสื่อสาร เช่น โมเด็ม, แผงวงจรต่อประสานเครือข่าย (network interface cards (NICs))

หน่วยประมวลผลกลางหรือซีพียูเป็นอุปกรณ์ที่ทำหน้าที่เป็นเหมือนสมองของคอมพิวเตอร์ในการรับคำสั่งจากหน่วยความจำหลักมาประมวลผล การทำงานในระบบคอมพิวเตอร์เป็นแบบดิจิทัลซึ่งมีการจัดเก็บข้อมูลในรูปแบบฐานสองซึ่งมีสถานะเป็น 0 กับ 1 ดังนั้นการจัดเก็บข้อมูลต่าง ๆ ลงไปในหน่วยความจำของเครื่องคอมพิวเตอร์ข้อมูลเหล่านั้นไม่ว่าจะเป็นตัวเลข ตัวอักษร หรือข้อความจะต้องมีการเข้ารหัสเพื่อแปลงให้อยู่ในรูปแบบฐานสองก่อนซึ่งกระบวนการนี้จะทำโดยระบบคอมพิวเตอร์ ในการประมวลผลโปรแกรมและข้อมูลที่เกี่ยวข้องจะต้องถูกนำจากหน่วยเก็บไปยังหน่วยความจำหลักหรือแรมของเครื่องคอมพิวเตอร์เพื่อให้ซีพียูสามารถนำไปประมวลผลต่อไปได้

1.2 โปรแกรมและการเขียนโปรแกรม

การเรียนรู้เรื่องการเขียนโปรแกรมควรศึกษาเกี่ยวกับแนวคิดของโปรแกรมคอมพิวเตอร์ ภาษาการโปรแกรม ตัวแปลโปรแกรม และการแปลรหัสต้นฉบับในเบื้องต้นด้วย

1.2.1 โปรแกรมคอมพิวเตอร์

โปรแกรม (program) หรือซอฟต์แวร์ คือ กระบวนงาน (procedure) ที่ใช้ในการแก้ปัญหาซึ่งประกอบไปด้วยชุดคำสั่งที่เขียนขึ้นมาอย่างเป็นลำดับขั้นตอนเพื่อสั่งให้คอมพิวเตอร์ทำงานตามคำสั่งเหล่านั้น ดังนั้นเราสามารถสั่งให้คอมพิวเตอร์ทำงานตามที่ต้องการได้โดยอาศัยโปรแกรมเนื่องจากคอมพิวเตอร์ไม่เข้าใจภาษามนุษย์ได้โดยตรงจึงจำเป็นต้องใช้ภาษาคอมพิวเตอร์เพื่อสื่อสารและสั่งงาน หากปราศจากโปรแกรมแล้วคอมพิวเตอร์จะเป็นเพียงเครื่องจักรที่ไม่สามารถทำงานหรือแก้ปัญหาต่าง ๆ แทนมนุษย์ได้ ดังนั้นนอกจากฮาร์ดแวร์แล้วซอฟต์แวร์จึงเป็นส่วนสำคัญอีกส่วนหนึ่งที่ทำให้คอมพิวเตอร์สามารถทำงานได้อย่างมีประสิทธิภาพ ผู้ใช้ (user) จะใช้สั่งงานคอมพิวเตอร์ผ่านโปรแกรมประยุกต์ (application program) โดยมีระบบปฏิบัติการ (operating system) เป็นโปรแกรมที่ทำหน้าที่ประสานงานกับฮาร์ดแวร์อีกทีหนึ่ง

โปรแกรมเขียนขึ้นโดยใช้ภาษาการโปรแกรม (programming languages) บุคคลที่ทำหน้าที่ในการเขียนโปรแกรมคอมพิวเตอร์ เรียกว่า นักเขียนโปรแกรมหรือโปรแกรมเมอร์ (programmer) ซึ่งเป็นผู้ที่มีความเชี่ยวชาญในการใช้ภาษาการโปรแกรมคอมพิวเตอร์ (computer programming language)

1.2.2 ภาษาการโปรแกรมคอมพิวเตอร์

ภาษาที่คอมพิวเตอร์เข้าใจได้โดยตรงคือภาษาเครื่อง (machine language) ซึ่งเป็นคำสั่งที่อยู่ในรูปแบบฐานสอง ตัวอย่างเช่น 1100011011110010 โดยจะมีความแตกต่างกันตามคอมพิวเตอร์แต่ละประเภทขึ้นอยู่กับการผลิต ภาษาเครื่องจึงเป็นภาษาที่มนุษย์ใช้งานและทำความเข้าใจได้ยากจึงมีการพัฒนาภาษาการโปรแกรมให้ง่ายและใกล้เคียงภาษามนุษย์มากขึ้นตามลำดับโดยสามารถแบ่งเป็นยุคต่าง ๆ ได้ 5 ยุค โดยภาษาเครื่องเป็นภาษาในยุคที่ 1

ต่อมาในยุคที่ 2 ได้มีการพัฒนาภาษาแอสเซมบลี (assembly language) ซึ่งเป็นภาษาการโปรแกรมระดับต่ำ (low-level programming language) ขึ้น โดยนำเอาคำสั้น ๆ หรือสัญลักษณ์ช่วยจำ (mnemonic) มาใช้แทนคำสั่งภาษาเครื่อง ตัวอย่างเช่น

ADD Num, 35 เป็นการบวกค่า 35 กับตัวแปร Num

MOV AX, BX เป็นการย้ายข้อมูลจากรีจีสเตอร์ BX ไปยังรีจีสเตอร์ AX

แอสเซมเบลอร์ (assembler) เป็นโปรแกรมที่ทำการแปลงรหัสต้นฉบับ (source code) ภาษาแอสเซมบลีไปเป็นภาษาเครื่อง แต่อย่างไรก็ตามภาษาแอสเซมบลียังเป็นภาษาที่ขึ้นอยู่กับเครื่องคอมพิวเตอร์ที่แตกต่างกันในแต่ละรูปแบบ

ภาพที่ 1-1 การเปลี่ยนรหัสต้นฉบับภาษาแอสเซมบลีไปเป็นภาษาเครื่องโดยโปรแกรมแอสเซมเบลอร์

ภาษาระดับสูง (high-level language) ในยุคที่ 3 – 5 มีการพัฒนาให้มีความใกล้เคียงกับภาษาของมนุษย์เพื่อให้ง่ายต่อการทำความเข้าใจและการเขียนคำสั่ง ภาษาในยุคที่ 3 เป็นภาษาแบบ procedure ซึ่งต้องมีการกำหนดขั้นตอนกระบวนการงานอย่างชัดเจน การแปลจากภาษาการโปรแกรมระดับสูงไปเป็นภาษาเครื่องโดยใช้โปรแกรมแปลโปรแกรมหรือเรียกว่าตัวแปลโปรแกรมหรือคอมไพเลอร์ (compiler) หรือใช้โปรแกรมแปลคำสั่งหรืออินเทอร์พรีเตอร์ (interpreter) ภาษาในยุคที่ 4 เป็นภาษาระดับสูงมากซึ่งเพิ่มความสะดวกสบายในการพัฒนา ทำให้นักเขียนโปรแกรมพัฒนาโปรแกรมได้อย่างรวดเร็วเมื่อเทียบกับภาษายุคที่ 3 เพราะภาษายุคที่ 4 เป็นแบบ non-procedure กล่าวคือการเขียนโปรแกรมเพียงบอกว่าให้คอมพิวเตอร์ทำอะไร และมีการเพิ่มความสามารถในการติดต่อฐานข้อมูล, กราฟิก และเครื่องมือช่วยสร้างรหัสคำสั่ง (code generator) ภาษาในยุคที่ 5 มีการพัฒนาให้ใกล้เคียงกับภาษามนุษย์มากที่สุด เรียกได้ว่า ภาษาธรรมชาติ (natural language) ใช้สำหรับพัฒนาซอฟต์แวร์สำหรับระบบผู้เชี่ยวชาญ (expert system) และปัญญาประดิษฐ์ (artificial intelligence) เช่น ภาษา Prolog เป็นต้น ตัวอย่างอื่น ๆ ของภาษาระดับสูง เช่น COBOL, FORTRAN, BASIC, Pascal, Ada, C, Visual Basic, Delphi, C++, C, C#, Java เป็นต้น

นอกจากนี้แล้วยังมีภาษาโปรแกรมที่ใช้ปัญหาเป็นฐาน (problem-oriented languages) ซึ่งใช้กับการแก้ปัญหาอย่างใดอย่างหนึ่ง ตัวอย่างเช่นภาษาที่ใช้การสอบถาม เช่น SQL ซึ่งใช้คำสั่งอย่างง่ายในการค้นคืนข้อมูลสารสนเทศจากฐานข้อมูล

1.2.3 ตัวแปลโปรแกรมและการแปลรหัสต้นฉบับ

โปรแกรมในภาษาระดับสูงเรียกว่าโปรแกรมต้นทาง (source program) หรือรหัสต้นฉบับ (source code) เพื่อให้คอมพิวเตอร์เข้าใจคำสั่งในภาษาระดับสูงได้จำเป็นต้องมีโปรแกรมในการแปลรหัสต้นฉบับไปเป็นภาษาเครื่องซึ่งโปรแกรมแปลภาษานี้มี 2 ประเภท คือ

  1. โปรแกรมแปลโปรแกรม หรือเรียกว่า ตัวแปลโปรแกรมหรือคอมไพเลอร์ (compiler)

  2. โปรแกรมแปลคำสั่งหรืออินเทอร์พรีเตอร์ (interpreter)

คอมไพเลอร์จะทำการแปลรหัสต้นฉบับในภาษาระดับสูงทั้งหมดไปเป็นภาษาเครื่องที่เรียกว่า รหัสจุดหมาย (object code) พร้อมกันในคราวเดียวและจัดเก็บรหัสจุดหมายไว้ จากนั้นโปรแกรมเชื่อมโยง (linker) จะทำการเชื่อมโยงไฟล์โปรแกรมภาษาเครื่องหรือรหัสจุดหมายเข้ากับรหัสคำสั่งในคลังโปรแกรม (library) เพื่อให้ได้ไฟล์ที่กระทำการได้ (executable file) ดังภาพที่ 1-2 ทำให้คอมพิวเตอร์สามารถนำไฟล์โปรแกรมนี้ไปประมวลผลตามคำสั่งและแสดงผลลัพธ์ออกมาได้

ภาพที่ 1-2 ขั้นตอนการแปลรหัสต้นโดยคอมไพเลอร์จนกระทั่งได้ไฟล์ที่นำไปกระทำการได้

อินเทอร์พรีเตอร์ทำการแปลคำสั่งในภาษาระดับสูงทีละคำสั่ง ทำให้คำสั่งแต่ละคำสั่งสามารถกระทำการหรือนำไปประมวลผลและแสดงผลลัพธ์ได้ทันทีหลังจากที่แปลคำสั่งนั้นแล้วหากไม่พบข้อผิดพลาด จากนั้นก็จะแปลคำสั่งต่อไปเป็นภาษาเครื่องแล้วประมวลผลและแสดงผลลัพธ์ทำซ้ำไปเช่นนี้จนครบทุกคำสั่ง แต่ อินเทอร์พรีเตอร์จะหยุดทำงานถ้าพบข้อผิดพลาดในระหว่างการแปลคำสั่ง ต่างจากคอมไพเลอร์ที่จะแปลโปรแกรมทั้งหมดให้เสร็จก่อนแล้วค่อยประมวลผลทีเดียวในภายหลัง การแปลคำสั่งด้วยอินเทอร์พรีเตอร์จะไม่มีการเก็บรหัสจุดหมายไว้ ดังนั้นเมื่อต้องการให้คอมพิวเตอร์ประมวลผลตามคำสั่งซ้ำอีกครั้งจะต้องทำการแปลคำสั่งใหม่ทุกครั้ง การแปลคำสั่งภาษาระดับสูงไปเป็นภาษาเครื่องโดยอินเทอร์พรีเตอร์จะกระทำเฉพาะก่อนการประมวลผลเท่านั้นแต่แนวทางนี้จะทำให้ง่ายในการพัฒนาโปรแกรมมากกว่า กว่า

1.3 ภาษาจาวา

ภาษาจาวา (Java) เป็นภาษาที่หลักสูตรเลือกใช้ในการเรียนการสอนการเขียนโปรแกรมคอมพิวเตอร์เบื้องต้นเพราะภาษาจาวาสามารถนำไปต่อยอดในการศึกษาในประเด็นอื่น ๆ ในหลักสูตรได้ เช่น หลักการเขียนโปรแกรมเชิงวัตถุ (object-oriented concept), โครงสร้างข้อมูลและอัลกอริทึม, การเขียนโปรแกรมบนอุปกรณ์เคลื่อนที่ (mobile programing) เป็นต้น

1.3.1 ลักษณะและคุณสมบัติของภาษาจาวา

ภาษาจาวาเป็นภาษาระดับสูงและภาษาโปรแกรมเชิงวัตถุ แต่อย่างไรก็ตามในรายวิชานี้จะมุ่งเน้นการเขียนโปรแกรมเบื้องต้นแบบมีโครงสร้างและมีการเขียนโปรแกรมแบบเป็นขั้นตอน ภาษาจาวาสามารถนำไปใช้ในการพัฒนาโปรแกรมประยุกต์ที่ใช้งานทั่วไปและโปรแกรมประยุกต์ที่ใช้งานบนอินเทอร์เน็ตสำหรับแม่ข่าย คอมพิวเตอร์แบบตั้งโต๊ะ และอุปกรณ์เคลื่อนที่ต่าง ๆ ได้ ภาษาจาวาสามารถนำมาเขียนโปรแกรมบนอุปกรณ์ต่างชนิดหรือต่างแพลตฟอร์มกันได้ เราสามารถเขียนโปรแกรมด้วยภาษาจาวาเพียงครั้งเดียวและแปลโปรแกรมรหัสต้นฉบับไปเป็นโปรแกรมภาษาเครื่องหรือรหัสจุดหมายแบบพิเศษที่เรียกว่า ไบท์โคด (bytecode) ซึ่งสามารถดำเนินงานที่เครื่องคอมพิวเตอร์หรืออุปกรณ์ประมวลผลใดก็ได้โดยอาศัยซอฟต์แวร์คือจาวาเวอร์ชวลแมชีน (Java Virtual Machine (JVM)) ทำหน้าที่แปลไบท์โคดไปเป็นโปรแกรมภาษาเครื่องที่ใช้งานได้กับคอมพิวเตอร์หรืออุปกรณ์ประมวลผลประเภทนั้น ๆ ทำให้รองรับการทำงานของโปรแกรมในอุปกรณ์ที่ต่างแพตฟอร์มหรือการทำงานข้ามแพตฟอร์มกันได้ นอกจากนี้แล้วภาษาจาวามีชุดเครื่องมือในการพัฒนาโปรแกรมที่รู้จักกันในชื่อ Java Development KIT หรือ JDK ซึ่งรวมตัวแปลภาษาและเครื่องมือต่าง ๆ สำหรับนักเขียนโปรแกรม ตัวอย่างเช่นคลังโปรแกรมซึ่งเก็บโปรแกรมย่อยต่าง ๆ ที่นักเขียนโปรแกรมสามารถนำเอาโปรแกรมย่อยเหล่านี้ไปใช้ในการพัฒนาโปรแกรมได้โดยไม่ต้องเขียนขึ้นเองทั้งหมดช่วยให้ประหยัดเวลาได้เป็นอย่างมาก อีกทั้ง JDK ยังมีการพัฒนารุ่นใหม่ซึ่งมีประสิทธิภาพเพิ่มมากขึ้นออกมาอย่างต่อเนื่อง

ตัวอย่างของโปรแกรมภาษาจาวาอย่างง่ายที่แสดงข้อความว่า Hello, world! ออกทางจอภาพเป็นดังนี้

ตัวอย่างที่ 1.1 โปรแกรม HelloWorld.java
public class HelloWorld {
        public static void main (String args[]) {
            System.out.println(“Hello, world!);
        }
    }
ผลลัพธ์ของโปรแกรม คือ

Hello, world!

1.3.2 ซอฟต์แวร์ช่วยพัฒนาโปรแกรมภาษาจาวา (Java IDE)

ซอฟต์แวร์ช่วยพัฒนาโปรแกรมหรือโปรแกรมประเภทสิ่งแวดล้อมสำหรับการพัฒนาแบบเบ็ดเสร็จ (integrated development environment (IDE)) คือ ซอฟต์แวร์ที่เป็นโปรแกรมประยุกต์ซึ่งอำนวยความสะดวกให้แก่นักเขียนโปรแกรมในการพัฒนาซอฟต์แวร์ โดยทั่วไปซอฟต์แวร์นี้จะประกอบไปด้วยเครื่องมือดังต่อไปนี้

  1. เครื่องมือในการเขียนและแก้ไขคำสั่งโปรแกรม (source code editor)

  2. ตัวแปลภาษาหรือคอมไพเลอร์ (compiler) หรือโปรแกรมแปลคำสั่ง (interpreter) หรือทั้งสองอย่าง

  3. เครื่องมือสร้างระบบอัตโนมัติ (build automation tools) ร่วมถึงส่วนต่อประสานกราฟิกกับผู้ใช้ (graphical user interface (GUI)) ซึ่งเป็นเครื่องมือที่ช่วยให้นักเขียนโปรแกรมใช้งานหรือเขียนโปรแกรมได้ง่ายและรวดเร็วขึ้น

  4. โปรแกรมตรวจแก้จุดบกพร่อง (debugger)

ตัวอย่าง IDE ในการเขียนโปรแกรมภาษาจาวาที่ได้รับความนิยม เช่น JBuilder, NetBeans, Eclipse, JCreator LE, BlueJ เป็นต้น

1.3.3 กระบวนการเขียนโปรแกรมและพัฒนาโปรแกรมภาษาจาวา

กระบวนการการพัฒนาโปรแกรมมีขั้นตอนหลักคือ

  1. การสร้างรหัสต้นฉบับหรือการเขียนโปรแกรม

  2. การแปลโปรแกรมหรือคอมไพล์เป็นภาษาเครื่อง และ

  3. การสั่งให้คอมพิวเตอร์กระทำการ (execute) หรือดำเนินงาน (run) ตามคำสั่งภาษาเครื่องที่แปลไว้แล้ว

ในขั้นตอนแรกนักเขียนโปรแกรมสามารถใช้เครื่องมือในเขียนและแก้ไขรหัสต้นฉบับหรือรหัสต้นทางที่มีให้ใน IDE หรือจะใช้โปรแกรมอื่น ๆ ในการเขียนและแก้ไขข้อความ เช่น NotePad, WordPad ก็ได้ แล้วจึงทำการบันทึกรหัสต้นฉบับ (ไฟล์นามสกุล .java) ไว้ในหน่วยเก็บข้อมูล จากนั้นจึงนำรหัสต้นฉบับไปทำการแปลโปรแกรม หากรหัสต้นฉบับมีข้อผิดพลาดจะต้องกลับไปแก้โปรแกรมใหม่ให้ถูกต้องก่อนแล้วทำการแปลโปรแกรมใหม่ หากโปรแกรมถูกต้องแล้วคอมไพเลอร์จะแปลโปรแกรมภาษาจาวาไปเป็นไบต์โคด (ไฟล์นามสกุล .class) แล้วจัดเก็บไว้ในหน่วยเก็บข้อมูล หลังจากนั้นเมื่อต้องการให้คอมพิวเตอร์ดำเนินงานตามคำสั่งจึงค่อยนำเอาไบต์โคดที่เก็บไว้มาดำเนินงานซึ่งจะทำให้ได้ผลลัพธ์ของโปรแกรมออกมาแต่หากเกิดข้อผิดพลาดระหว่างการดำเนินงานหรือผลลัพธ์ไม่ถูกต้องตามความต้องการนักเขียนโปรแกรมจะต้องกลับไปทำการเขียนและแก้ไขรหัสต้นฉบับใหม่และทำตามกระบวนการต่อไปซ้ำอีกครั้ง ดังภาพที่ 1-3

ภาพที่ 1-3 กระบวนการเขียนโปรแกรมและพัฒนาโปรแกรมภาษาจาวา

1.4 โครงสร้างและองค์ประกอบของโปรแกรมภาษาจาวา

โปรแกรมจาวาหนึ่งไฟล์สามารถประกอบได้ด้วยคลาส (class) อย่างน้อยหนึ่งคลาสโดยสามารถมีคลาสได้หลายคลาสแต่สำหรับในรายวิชานี้เป็นการเขียนโปรแกรมเบื้องต้นที่มีขนาดเล็กแบบมีโครงสร้างในหนึ่งโปรแกรมจึงมีเพียงคลาสเดียว ภายในคลาสประกอบด้วยเมท็อด (methods) ได้หลายเมท็อด โดยในโปรแกรมจะมีเมท็อดพิเศษที่ชื่อว่าเมท็อด main ซึ่งโปรแกรมจะเริ่มต้นทำงานด้วยคำสั่งที่อยู่ในเมท็อด main และภายในเมท็อดจะมีคำสั่ง (statements) ในการทำงานต่าง ๆ อยู่ ดังภาพที่ 1-4

ภาพที่ 1-4 โครงสร้างของโปรแกรมภาษาจาวา

โปรแกรมภาษาจาวามีองค์ประกอบหลัก 8 ส่วน คือ หมายเหตุ (comments), คำสงวน (reserved words) หรือคำหลัก (keywords), ตัวดัดแปร (Modifiers), ข้อความสั่ง (statements), บล็อก (blocks), คลาส (classes), เมท็อด (methods) และเมท็อด main (main method) โดยมีรายละเอียดดังนี้

  1. หมายเหตุ คือ ข้อความที่ใช้เป็นเขียนอธิบายโปรแกรมเพื่อให้ผู้อ่านรหัสต้นฉบับเข้าใจโปรแกรมได้ดีขึ้น โปรแกรมแปลภาษาจะไม่ทำการแปลหมายเหตุและมีการนำไปประมวลผล การเขียนโปรแกรมที่ดีควรเขียนหมายเหตุโดยแทรกลงไปในจุดที่ต้องการอธิบายมี 2 วิธี คือ
  • วิธีที่หนึ่งใส่เครื่องหมาย // หน้าข้อความที่เป็นหมายเหตุ วิธีการนี้ข้อความที่อยู่หลังเครื่องหมาย // จะถือเป็นหมายเหตุซึ่งจะใช้กับการเขียนหมายเหตุเพียง 1 บรรทัด ดังโปรแกรมตัวอย่างที่ 1.2 บรรทัดที่ 1 และ 10

  • วิธีที่สองสามารถใส่หมายเหตุได้หลายบรรทัด เหมาะสำหรับการเขียนหมายเหตุที่มีข้อความยาว การเขียนหมายเหตุวิธีนี้ใช้สัญลักษณ์สองส่วนโดยเริ่มหมายเหตุด้วย /* และตัวปิดหมายเหตุด้วย */ ดังโปรแกรมตัวอย่างที่ 1.2 บรรทัดที่ 2 – 4

  1. คำสงวน คือ คำที่มีความหมายเฉพาะต่อคอมไพเลอร์และไม่สามารถใช้คำนี้ในการดำเนินการเพื่อวัตถุประสงค์อื่นในการเขียนโปรแกรมได้ ตัวอย่างเช่น คำว่า class คอมไพเลอร์จะเข้าใจว่าคำที่อยู่หลังคำนี้คือชื่อของคลาส คำสงวนของภาษาจาวามีดังต่อไปนี้
abstract default goto package this
assert do if private throw
boolean double implements protected throws
break else import public transient
byte enum instanceof return TRUE
case extends int short try
catch FALSE interface static void
char final long strictfp volatile
class finally native super while
const float new switch
continue for null synchronized
  1. ตัวดัดแปร คือ คำสงวนที่มีใช้กำหนดคุณสมบัติการเข้าถึงและใช้งานข้อมูล เมท็อด และคลาส จากตัวอย่างที่ 1.2 public และ static เป็นตัวดัดแปร ตัวดัดแปรอื่น ๆ ได้แก่ private, final, abstract, และ protected
ตัวอย่างที่ 1.2 โปรแกรม DisplayMyName.java
    //Program for display my name and my age.
    /*Author: Chongkolnee Rungruang
            Date:1/5/2018
    */ 
    public class DisplayMyName {
        public static void main(String[] args) {
            System.out.println("My name is Chongkolnee.:");
            System.out.println("I am 20 years old.");
        }
    }  //end program 
ผลลัพธ์ของโปรแกรม คือ

My name is Chongkolnee. I am 20 years old.

  1. ข้อความสั่งหรือคำสั่ง คือ ข้อความที่แสดงถึงการดำเนินงานในโปรแกรม จากตัวอย่างที่ 1.2 System.out.println(“My name is Chongkolnee.”); เป็นตัวอย่างหนึ่งของคำสั่งที่แสดงข้อความว่า My name is Chongkolnee ทางจอภาพ คำสั่งทุกคำสั่งในจาวาจะต้องปิดท้ายด้วยเครื่องหมายอัฒภาค (semicolon) ;

  2. บล็อก คือ การจัดกลุ่มขององค์ประกอบต่าง ๆ ในโปรแกรม ซึ่งในภาษาจาวาแต่ละบล็อกจะเริ่มต้นด้วยเครื่องหมายปีกกา { และจบด้วยเครื่องหมายปีกกาปิด } จากตัวอย่างที่ 1.2 เครื่องหมาย { บรรทัดที่ 5 และ } บรรทัดที่ 10 แสดงถึงบล็อกของคลาส ส่วนเครื่องหมาย { บรรทัดที่ 6 และ } บรรทัดที่ 9 แสดงถึงบล็อกของเมท็อด main นอกจากนี้แล้วการเขียนโปรแกรมที่ดีควรใช้การย่อหน้าเพื่อจัดรหัสคำสั่งให้เป็นระเบียบ อ่านทำความเข้าใจและตรวจสอบความผิดพลาดของโปรแกรมได้ง่าย เพราะจะช่วยให้ทราบได้ว่าคำสั่งบรรทัดใดอยู่ภายใต้บล็อกใด

  3. คลาส คือ โครงสร้างหลักที่สำคัญของภาษาจาวาที่ใช้เป็นแม่แบบของอ็อบเจกต์หรือวัตถุ (object) แต่อย่างไรก็ตามในรายวิชานี้เน้นการเขียนโปรแกรมอย่างง่ายที่ไม่ซับซ้อนแบบมีโครงสร้าง จึงไม่ขออธิบายในรายละเอียดของคลาสในแง่ของการเขียนโปรแกรมเชิงวัตถุ ดังนั้นโปรแกรมที่เขียนขึ้นในวิชานี้จะใช้เพียงคลาสเดียวเท่านั้น

  4. เมท็อด คือ กลุ่มของคำสั่งที่ใช้ในการทำงานอย่างใดอย่างหนึ่งซึ่งสามารถเรียกใช้เมท็อดได้โดยไม่จำเป็นต้องเข้าใจการทำงานทั้งหมดของเมท็อด จากตัวอย่างที่ 1.2 System.out.println ในบรรทัดที่ 7 เป็นเมท็อดในการพิมพ์ค่าที่ต้องการออกทางจอภาพแล้วขึ้นบรรทัดใหม่ ในกรณีนี้เกิดการเรียกใช้เมท็อด println โดยส่งค่าเป็นข้อความ My name is Chongkolnee. เพื่อให้ใช้ในการแสดงผล จากตัวอย่างที่ 1.2 นี้จะเห็นได้ว่าเราสามารถเรียกใช้เมท็อดซ้ำได้หลายครั้งโดยส่งค่าที่แตกต่างกันดังเช่นในบรรทัดที่ 8 เกิดการเรียกใช้เมท็อด println อีกครั้งโดยส่งค่าข้อความเป็น I am 20 years old.

  5. เมท็อด main เป็นเมท็อดชนิดพิเศษที่ใช้ควบคุมการลำดับขึ้นการทำงานของโปรแกรมโดยเริ่มต้นการทำงานที่เมท็อด main โดยเมท็อด main จะมีลักษณะดังนี้

Note
public static void main(String[ ] args) {
            // Statements;
}

1.4.1 จริยธรรมของการเขียนโปรแกรมและนักเขียนโปรแกรม

จริยธรรมเป็นสิ่งที่ใช้เพื่อควบคุมพฤติกรรมหรือการกระทำของบุคคล ซึ่งนักเขียนโปรแกรมพึงมีและต้องตระหนักในการพัฒนาโปรแกรม แต่อย่างไรก็ตามการสร้างให้เกิดจริยธรรมในตัวบุคคลต้องอาศัยการบ่มเพาะและใช้เวลา ในหัวข้อนี้จึงกล่าวถึงตัวอย่างหนึ่งของจริยธรรมของการเขียนโปรแกรมที่มีผู้กำหนดขึ้น โดยอ้างอิงจาก The Association for Computing Machinery (ACM) ในส่วนของหลักการทางจริยธรรมทั่วไปมีดังต่อไปนี้

  1. ต้องมีส่วนยกระดับสังคมและสนับสนุนความเป็นอยู่ที่ดีของมนุษย์โดยยอมรับว่าทุกคนเป็นผู้มีส่วนได้เสียในการดำเนินงานทางคอมพิวเตอร์

  2. หลีกเลี่ยงการทำให้เกิดอันตราย

  3. ต้องมีความซื่อสัตย์และน่าเชื่อถือ

  4. ต้องมีความเป็นธรรมและไม่เลือกปฏิบัติ

  5. เคารพต่องานที่จำเป็นต้องใช้ความคิดใหม่, สิ่งประดิษฐ์, ผลงานสร้างสรรค์ และสิ่งประดิษฐ์ทางคอมพิวเตอร์

  6. เคารพต่อความเป็นส่วนตัว (privacy)

  7. เคารพต่อการรักษาความลับ (confidentiality)

รายละเอียดคำอธิบายเพิ่มเติมสามารถดูได้จาก http://www.acm.org/about/code-of-ethics

1.5 กระบวนการพัฒนาโปรแกรมคอมพิวเตอร์

กระบวนการพัฒนาโปรแกรมประกอบไปด้วยหลายขั้นตอนเพื่อให้ได้โปรแกรมคอมพิวเตอร์ที่มีความถูกต้องและตรงตามความต้องการสามารถนำไปใช้งานได้จริง ในการพัฒนาโปรแกรมขนาดใหญ่ที่มีความซับซ้อนขั้นตอนก่อนการเริ่มต้นเขียนโปรแกรมมีความสำคัญมาก เพราะหากยังไม่เข้าใจปัญหาอย่างแท้จริงแล้วย่อมไม่สามารถเขียนโปรแกรมเพื่อแก้ปัญหานั้นได้อย่างถูกต้อง ในการเรียนวิชานี้แม้จะเป็นการพัฒนาโปรแกรมอย่างง่ายแต่อย่างไรก็ตามนักเขียนโปรแกรมควรคิดวิเคราะห์และออกแบบก่อนการลงมือเขียนโปรแกรม กระบวนการโดยทั่วไปในการพัฒนาโปรแกรมประกอบไปด้วย 5 ขั้นตอน คือ

  1. การวิเคราะห์ปัญหา เป็นการทำความเข้าใจปัญหา

  2. การออกแบบโปรแกรม เป็นขั้นตอนการวางแผนและอธิบายแนวคิดในแก้ไขปัญหาด้วยโปรแกรม

  3. การเขียนโปรแกรม เป็นขั้นตอนที่นำภาษาโปรแกรมคอมพิวเตอร์มาทำการเขียนโปรแกรมตามที่ได้ออกแบบไว้

  4. การทดสอบโปรแกรม เป็นขั้นตอนในการตรวจสอบให้มั่นใจว่าโปรแกรมมีความถูกต้อง รวมถึงการจัดทำเอกสารคู่มือการใช้งานโปรแกรม

  5. การดูแลรักษาโปรแกรม เป็นขั้นตอนในการการดูแลรักษาโปรแกรมหลังจากมีการใช้งานไประยะหนึ่งแล้ว โดยอาจมีการปรับปรุงโปรแกรมให้เป็นไปตามความต้องการใหม่ที่เกิดขึ้น

ปัญหาของการเขียนโปรแกรมที่พบคือนักเขียนโปรแกรมไม่สามารถที่จะวิเคราะห์ปัญหาให้กระจ่างได้ และไม่สามารถคิดกระบวนการทำงานของโปรแกรมออกมาได้ ดังนั้นจึงจำเป็นต้องให้ความสำคัญกับการวิเคราะห์และออกแบบโปรแกรมด้วย

1.6 การวิเคราะห์ปัญหา

แนวทางหนึ่งของการวิเคราะห์ปัญหาเพื่อนำไปสู่ความเข้าใจปัญหาอย่างลึกซึ้งจนสามารถนำไปแก้ปัญหาด้วยโปรแกรมได้คือการแยกแยะการแก้ปัญหาออกเป็น 3 ส่วน ได้แก่

  1. ข้อมูลนำเข้า (input) เพื่อพิจารณาว่าต้องนำข้อมูลหรือสิ่งใดบ้างเข้าสู่กระบวนการประมวลผล ซึ่งสิ่งเข้านี้จะเป็นสิ่งที่ต้องนำเข้าสู่โปรแกรมเพื่อใช้ในการดำเนินงานในการสร้างผลลัพธ์

  2. กระบวนการ (process) เพื่อพิจารณาว่ากระบวนการทำงานเพื่อแก้ปัญหามีขั้นตอนอะไรบ้าง กระบวนการที่ได้นี้จะนำไปใช้ในการออกแบบขั้นตอนวิธีของโปรแกรมที่ละเอียดมากยิ่งขึ้นในขั้นตอนต่อไปและนำไปสู่การเขียนโปรแกรมเพื่อใช้ในการแก้ปัญหา

  3. ข้อมูลนำออก (output) เพื่อพิจารณาว่าข้อมูลหรือสิ่งออกใดบ้างที่เป็นผลลัพธ์ที่ต้องการของปัญหาที่กำหนด ซึ่งข้อมูลนำออกนี้จะกลายเป็นผลลัพธ์ของโปรแกรมที่จะพัฒนาขึ้นมาในภายหลังด้วย

ทั้ง 3 ส่วนนี้มีความสัมพันธ์กันดังภาพที่ 1-5

ภาพที่ 1-5 ความสัมพันธ์ของกระบวนการทำงานทางคอมพิวเตอร์

ในการวิเคราะห์ปัญหาควรเริ่มจากการวิเคราะห์หาข้อมูลนำเข้าและข้อมูลนำออกหรือผลลัพธ์ก่อนเพื่อกำหนดวัตถุประสงค์ของโปรแกรม แล้วจึงวิเคราะห์กระบวนการทำงานของโปรแกรม

ตัวอย่างที่ 1.3 ต้องการคำนวณหาคะแนนรวมที่นักศึกษาได้รับ โดยคะแนนรวมคำนวณมากจากคะแนนสอบกลางภาค และคะแนนสอบปลายภาค

จากโจทย์สามารถวิเคราะห์หาข้อมูลนำเข้า กระบวนการ และข้อมูลนำออกได้ดังนี้

ตัวอย่างที่ 1.4 ต้องการคำนวณเงินเดือนใหม่ให้กับพนักงานของบริษัทแห่งหนึ่ง ซึ่งอัตราการขึ้นเงินเดือนมีเงื่อนไขตามอายุงาน ดังนี้

  • พนักงานที่มีอายุงานไม่ถึง 1 ปี ไม่มีการเพิ่มเงินเดือน

  • พนักงานที่มีอายุงานตั้งแต่ 1 ปี แต่ไม่ถึง 3 ปี เพิ่มเงินเดือน 3%

  • พนักงานที่มีอายุงานตั้งแต่ 3 ปี แต่ไม่ถึง 5 ปี เพิ่มเงินเดือน 5%

  • พนักงานที่มีอายุงานตั้งแต่ 5 ปีขึ้นไป เพิ่มเงินเดือน 7%

จากโจทย์สามารถวิเคราะห์หาข้อมูลนำเข้า กระบวนการ และข้อมูลนำออกได้ดังนี้

ตัวอย่างที่ 1.5 มหาวิทยาลัยแห่งหนึ่งเรียกเก็บค่าธรรมเนียมการศึกษาในภาคฤดูร้อน ในอัตราดังนี้

  1. ลงทะเบียนตั้งแต่ 1 – 3 หน่วยกิต ภาคการศึกษาละ 3,000 บาท

  2. ลงทะเบียนตั้งแต่ 4 – 6 หน่วยกิต ภาคการศึกษาละ 4,500 บาท

  3. ลงทะเบียนตั้งแต่ 7 – 9 หน่วยกิต ภาคการศึกษาละ 6,000 บาท

ให้นำจำนวนหน่วยกิตมาหาว่านักศึกษาต้องจ่ายค่าธรรมเนียมการศึกษาในภาคฤดูร้อนเท่าใด แล้วแสดงผลลัพธ์ออกทางจอภาพ นอกจากนี้แล้วมหาวิทยาลัยไม่อนุญาตให้นักศึกษาลงทะเบียนเกิน 9 หน่วยกิต โดยเด็ดขาด ดังนั้นหากจำนวนหน่วยกิตเกินให้กลับไปรับค่าจำนวนหน่วยกิตใหม่อีกครั้ง

จากโจทย์สามารถวิเคราะห์หาข้อมูลนำเข้า กระบวนการ และข้อมูลนำออกได้ดังนี้

1.7 การออกแบบโปรแกรมและการเขียนขั้นตอนวิธี

การอธิบายแนวคิดและกระบวนการทำงานของโปรแกรมในการออกแบบโปรแกรมสามารถใช้วิธีการเขียนขั้นตอนวิธีหรืออัลกอริทึม (algorithm) ซึ่งประกอบไปด้วย 3 รูปแบบ คือ การบรรยายด้วยข้อความ การใช้รหัสเทียม (pseudo code) และการวาดผังงาน (flow chart) โดยมีรายละเอียดดังนี้

การบรรยายด้วยข้อความเหมาะจะใช้ในกรณีที่ขั้นตอนวิธีไม่ซับซ้อนมากนัก รูปแบบการบรรยายไม่มีข้อกำหนดที่ตายตัว

ตัวอย่างที่ 1.6 การบรรยายด้วยข้อความขั้นตอนการหาคะแนนรวมจากโจทย์ในตัวอย่างที่ 1.3 การคำนวณหาคะแนนรวมที่นักศึกษาได้รับ โดยคะแนนรวมคำนวณมากจากคะแนนสอบกลางภาค และคะแนนสอบปลายภาค การเขียนอธิบายขั้นตอนด้วยข้อความเป็นดังนี้

เริ่มต้นด้วยการรับค่าคะแนนสอบกลางภาค และรับค่าคะแนนสอบปลายภาค จากนั้นคำนวณหาคะแนนรวมโดยนำคะแนนสอบกลางภาคมาบวกกับคะแนนสอบปลายภาค แล้วแสดงผลรวมของคะแนนออกทางจอภาพ

การบรรยายด้วยรหัสเทียมมีรูปแบบการเขียนที่ใกล้เคียงกับภาษาโปรแกรมทำให้สามารถนำไปเปลี่ยนเป็นโปรแกรมได้ง่าย เป็นการเขียนโดยใช้ภาษาแบบมีโครงสร้างเพื่อให้สามารถแสดงโครงสร้างการทำงานแบบตามลำดับ แบบเลือกทำ และการวนซ้ำได้ โดยไม่ต้องคำนึงถึงไวยากรณ์ของภาษาโปรแกรมเพราะเป็นการเขียนขึ้นเพื่อให้นักเขียนโปรแกรมหรือผู้ที่อ่านเข้าใจ สามารถนำไปเขียนเป็นโปรแกรมภาษาอะไรก็ได้

ตัวอย่างที่ 1.7 การบรรยายขั้นตอนจากโจทย์ข้อที่ 1.5 มหาวิทยาลัยแห่งหนึ่งเรียกเก็บค่าธรรมเนียมการศึกษาในภาคฤดูร้อน ในอัตราดังนี้

  1. ลงทะเบียนตั้งแต่ 1 – 3 หน่วยกิต ภาคการศึกษาละ 3,000 บาท

  2. ลงทะเบียนตั้งแต่ 4 – 6 หน่วยกิต ภาคการศึกษาละ 4,500 บาท

  3. ลงทะเบียนตั้งแต่ 7 – 9 หน่วยกิต ภาคการศึกษาละ 6,000 บาท

ให้นำจำนวนหน่วยกิตมาหาว่านักศึกษาต้องจ่ายค่าธรรมเนียมการศึกษาในภาคฤดูร้อนเท่าใด แล้วแสดงผลลัพธ์ออกทางจอภาพ นอกจากนี้แล้วมหาวิทยาลัยไม่อนุญาตให้นักศึกษาลงทะเบียนเกิน 9 หน่วยกิต โดยเด็ดขาด ดังนั้นหากจำนวนหน่วยกิตเกินให้กลับไปรับค่าจำนวนหน่วยกิตใหม่อีกครั้ง การเขียนอธิบายขั้นตอนโดยใช้รหัสเทียมเป็นดังนี้

read credit
while (credit < 1 or credit > 9)
        read credit
    endWhile
if (credit <= 3) then
        registration_fee = 3000
else if (credit <= 6) then
registration_fee = 4500
else
        registration_fee = 6000
endIf

การอธิบายด้วยผังงานเป็นการนำเอาสัญลักษณ์และเส้นเชื่อมมาสร้างเป็นแผนภาพ เพื่อแสดงถึงลำดับขั้นตอนการทำงาน โดยสามารถแสดงลำดับการทำงานได้ทั้งการทำงานแบบตามลำดับ แบบเลือกทำ และการวนซ้ำ ดังจะเห็นได้จากภาพที่ 1-6

โครงสร้างการทำงานแบบเป็นลำดับแสดงได้โดยใช้เส้นเชื่อมโดยดูตามทิศทางของหัวลูกศรว่ากระบวนการใดต้องก่อนกระบวนใดต้องทำหลังและเมื่อทำกระบวนการนี้เสร็จแล้วจะต้องไปทำกระบวนการใดต่อ จากตัวอย่างจะเห็นได้ว่าการรับค่าหน่วยกิต (credit) จะต้องทำเป็นลำดับแรก และลำดับสุดท้ายของการทำงานคือการพิมพ์ค่าธรรมเนียมการศึกษา (registration fee) ซึ่งเป็นผลลัพธ์ของการทำงานออกทางจอภาพ

การทำงานแบบเลือกทำเกิดขึ้นในส่วนของการตัดสินใจว่าถ้าจำนวนหน่วยกิตมีค่าน้อยกว่าหรือเท่ากับ 3 (credit <=3) จะคิดค่าธรรมเนียมการศึกษา 3,000 บาท ถ้าไม่ใช่จะทำการตัดสินใจต่อว่าถ้าจำนวนหน่วยกิตมีค่าน้อยกว่าหรือเท่ากับ 6 (credit <=6) จะคิดค่าธรรมเนียมการศึกษา 4,500 บาท และถ้าไม่ใช่แสดงว่าจะต้องคิดค่าธรรมเนียมการศึกษา 6,000 บาท

การวนซ้ำเกิดขึ้นในกรณีที่จำนวนหน่วยกิตที่รับค่ามามีค่าน้อยกว่า 1 หรือมากกว่า 9 ตามกระบวนการทำงานของผังงานในภาพที่ 1.6 จะให้ทำการรับค่าจำนวนหน่วยกิตซ้ำจนกว่าเงื่อนไข credit<1 หรือ credit>9 จะเป็นเท็จ จะเห็นได้ว่าการวนซ้ำอาศัยการทำงานแบบเลือกเพื่อพิจารณาว่าจะต้องวนซ้ำอีกหรือไม่

รายละเอียดของสัญลักษณ์และข้อกำหนดการเขียนผังงานจะอธิบายเพิ่มเติมในหัวข้อ 1.9

ภาพที่ 1-6 ผังงานของกระบวนการพิจารณาค่าธรรมเนียมการศึกษาจากโจทย์ตัวอย่างที่ 1.5

นอกจากการเขียนขั้นตอนวิธีแล้วจะต้องทำการออกแบบส่วนต่อประสานกับผู้ใช้ (user interface) เพื่อโต้ตอบกับผู้ใช้ทั้งในส่วนของการนำเข้าข้อมูลและการแสดงผลลัพธ์ของโปรแกรม รูปแบบวิธีการและช่องทางในการโต้ตอบกับผู้ใช้มีได้หลายวิธี เช่น การใช้ส่วนต่อประสานกราฟิกกับผู้ใช้ (graphical user interface) เพื่อรับข้อมูลและแสดงผล การแสดงผลลัพธ์ด้วยการพิมพ์เป็นกระดาษออกทางเครื่องพิมพ์ การแสดงผลลัพธ์เป็นข้อความสั้น (SMS) เป็นต้น แต่ในรายวิชานี้จะเน้นการเขียนโปรแกรมอย่างง่ายที่ใช้การรับข้อมูลทางแป้นพิมพ์และการแสดงผลในรูปแบบข้อความ (text mode) ออกทางจอภาพเท่านั้น

ตัวอย่างที่ 1.8 การออกแบบหน้าจอของโปรแกรมหาผลรวมคะแนนสอบจากโจทย์ในตัวอย่างที่ 1.3 การคำนวณหาคะแนนรวมที่นักศึกษาได้รับ โดยคะแนนรวมคำนวณมากจากคะแนนสอบกลางภาค และคะแนนสอบปลายภาค เป็นดังนี้

Enter midterm exam score:

Enter final exam score:

Total score =

ตัวอย่างที่ 1.9 การออกแบบหน้าจอของโปรแกรมการคำนวณเงินเดือนจากโจทย์ในตัวอย่างที่ 1.4 การคำนวณเงินเดือนใหม่ให้กับพนักงานของบริษัทแห่งหนึ่ง ซึ่งอัตราการขึ้นเงินเดือนมีเงื่อนไขตามอายุงาน ดังนี้

  • พนักงานที่มีอายุงานไม่ถึง 1 ปี ไม่มีการเพิ่มเงินเดือน

  • พนักงานที่มีอายุงานตั้งแต่ 1 ปี แต่ไม่ถึง 3 ปี เพิ่มเงินเดือน 3%

  • พนักงานที่มีอายุงานตั้งแต่ 3 ปี แต่ไม่ถึง 5 ปี เพิ่มเงินเดือน 5%

  • พนักงานที่มีอายุงานตั้งแต่ 5 ปีขึ้นไป เพิ่มเงินเดือน 7%

*********************************************
         Salary Calculation Program
*********************************************
Enter year(s) of work: 
Enter current salary:
*********************************************

New salary = 

ตัวอย่างที่ 1.10 การออกแบบหน้าจอของโปรแกรมคิดค่าธรรมเนียมการศึกษาจากโจทย์ในตัวอย่างที่ 1.5 มหาวิทยาลัยแห่งหนึ่งเรียกเก็บค่าธรรมเนียมการศึกษาในภาคฤดูร้อน ในอัตราดังนี้

  1. ลงทะเบียนตั้งแต่ 1 – 3 หน่วยกิต ภาคการศึกษาละ 3,000 บาท

  2. ลงทะเบียนตั้งแต่ 4 – 6 หน่วยกิต ภาคการศึกษาละ 4,500 บาท

  3. ลงทะเบียนตั้งแต่ 7 – 9 หน่วยกิต ภาคการศึกษาละ 6,000 บาท

ให้นำจำนวนหน่วยกิตมาหาว่านักศึกษาต้องจ่ายค่าธรรมเนียมการศึกษาในภาคฤดูร้อนเท่าใด แล้วแสดงผลลัพธ์ออกทางจอภาพ นอกจากนี้แล้วมหาวิทยาลัยไม่อนุญาตให้นักศึกษาลงทะเบียนเกิน 9 หน่วยกิต โดยเด็ดขาด ดังนั้นหากจำนวนหน่วยกิตเกินให้กลับไปรับค่าจำนวนหน่วยกิตใหม่อีกครั้ง

****Registration Fee Program****

Enter number of credit: 

Registration fee =

ในการเขียนขั้นตอนวิธีจะเห็นได้ว่าต้องมีการใช้ตัวแปรซึ่งทำหน้าที่เป็นตัวเก็บข้อมูลเพื่อให้สามารถเรียกใช้งานข้อมูลในระหว่างกระบวนการทำงานได้ ดังนั้นในการออกแบบขั้นตอนวิธีจึงควรมีการกำหนดว่ามีตัวแปรอะไรบ้างที่ต้องใช้ โดยกำหนดชื่อและคำอธิบายว่าตัวแปรนั้นใช้ในการเก็บข้อมูลอะไร ทำให้สามารถนำเอาชื่อตัวแปรเหล่านี้ไปใช้อ้างถึงในการเขียนอธิบายขั้นตอนวิธีได้โดยไม่ต้องชี้แจงว่าตัวแปรนั้นใช้เก็บข้อมูลอะไรอีกครั้ง และง่ายต่อการนำขั้นตอนวิธีที่ออกแบบไว้ไปเขียนโปรแกรมเนื่องจากได้กำหนดไว้แล้วว่าในการเขียนโปรแกรมจะต้องมีการสร้างตัวแปรใดบ้างเพื่อใช้เก็บข้อมูล

ในการเขียนโปรแกรมตัวแปรคือที่เก็บข้อมูลโดยมีชื่อของตัวแปรเป็นสัญลักษณ์ที่แทนตำแหน่งที่เก็บข้อมูลในหน่วยความจำ ดังนั้นในการระบุถึงตำแหน่งที่เก็บข้อมูลแต่ละตำแหน่งได้อย่างถูกต้องนั้นตัวแปรแต่ละตัวจะต้องมีชื่อที่ไม่ซ้ำกัน เราสามารถกำหนดค่าให้กับตัวแปรและค่าที่เก็บอยู่ในตัวแปรสามารถถูกแก้ไขได้โดยการใส่ค่าใหม่ไปเก็บไว้แทนค่าเดิม

ตัวอย่างที่ 1.11 การกำหนดตัวแปรและการเขียนขั้นตอนวิธีการหาผลรวมคะแนนสอบจากตัวอย่างที่ 1.3 การคำนวณหาคะแนนรวมที่นักศึกษาได้รับ โดยคะแนนรวมคำนวณมากจากคะแนนสอบกลางภาค และคะแนนสอบปลายภาค

การกำหนดตัวแปร

การกำหนดตัวแปร

midtermScore    แทน     คะแนนสอบกลางภาค

finalScore       แทน     คะแนนสอบปลายภาค

totalScore       แทน    คะแนนรวม

ขั้นตอนวิธี
  1. รับค่า midtermScore

  2. รับค่า finalScore

  3. totalScore = midtermScore + finalScore

  4. พิมพ์ค่า totalScore

  5. จบการทำงาน

ในกรณีที่มีการสร้างตัวแปรขึ้นมาแล้วแต่ไม่ได้มีการใส่หรือกำหนดค่าให้กับตัวแปร เมื่อเรียกตัวแปรเพื่อนำค่าในตัวแปรมาใช้งานจะเกิดข้อผิดพลาดขึ้นได้ ดังนั้นเพื่อให้แน่ใจว่าเมื่อเรียกใช้ตัวแปรจะมีค่าข้อมูลเก็บอยู่จึงควรกำหนดค่าเริ่มต้นให้กับตัวแปรด้วยดังเช่นตัวอย่างที่ 1.12 มีการกำหนดค่าเริ่มต้นให้กับตัวแปร newSalary มีค่าเท่ากับ 0

ตัวอย่างที่ 1.12 การกำหนดตัวแปรและการเขียนขั้นตอนวิธีการคำนวณเงินเดือนจากตัวอย่างที่ 1.4 การคำนวณเงินเดือนใหม่ให้กับพนักงานของบริษัทแห่งหนึ่ง ซึ่งอัตราการขึ้นเงินเดือนมีเงื่อนไขตามอายุงาน ดังนี้

  • พนักงานที่มีอายุงานไม่ถึง 1 ปี ไม่มีการเพิ่มเงินเดือน

  • พนักงานที่มีอายุงานตั้งแต่ 1 ปี แต่ไม่ถึง 3 ปี เพิ่มเงินเดือน 3%

  • พนักงานที่มีอายุงานตั้งแต่ 3 ปี แต่ไม่ถึง 5 ปี เพิ่มเงินเดือน 5%

  • พนักงานที่มีอายุงานตั้งแต่ 5 ปีขึ้นไป เพิ่มเงินเดือน 7%

การกำหนดตัวแปร

year แทน อายุงาน currentSalary แทน เงินเดือนปัจจุบัน newSalary แทน เงินเดือนใหม่

ขั้นตอนวิธี
  1. รับค่า year และ currentSalary

  2. กำหนดให้ newSalary = 0

  3. ถ้า year < 1 แล้ว

    newSalary = currentSalary ไปทำข้อ 7

  4. ถ้า year < 3 แล้ว

    newSalary = currentSalary * 1.03 ไปทำข้อ 7

  5. ถ้า year < 5 แล้ว
    newSalary = currentSalary * 1.05 ไปทำข้อ 7

  6. newSalary = currentSalary * 1.07

  7. พิมพ์ค่า newSalary

  8. จบการทำงาน

ในการเขียนขั้นตอนควรเพิ่มการตรวจสอบความถูกต้องของข้อมูลนำเข้าด้วย ดังเช่นตัวอย่างที่ 1.13 มีการตรวจสอบก่อนว่าจำนวนหน่วยกิตหรือค่า credit ที่รับมาจะต้องอยู่ในช่วง 1 – 9 หน่วยกิต แล้วจึงนำไปคิดค่าธรรมเนียมการศึกษา

ตัวอย่างที่ 1.13 การกำหนดตัวแปรและการเขียนขั้นตอนวิธีการคิดค่าธรรมเนียมการศึกษาจากตัวอย่างที่ 1.5 มหาวิทยาลัยแห่งหนึ่งเรียกเก็บค่าธรรมเนียมการศึกษาในภาคฤดูร้อน ในอัตราดังนี้

  1. ลงทะเบียนตั้งแต่ 1 – 3 หน่วยกิต ภาคการศึกษาละ 3,000 บาท

  2. ลงทะเบียนตั้งแต่ 4 – 6 หน่วยกิต ภาคการศึกษาละ 4,500 บาท

  3. ลงทะเบียนตั้งแต่ 7 – 9 หน่วยกิต ภาคการศึกษาละ 6,000 บาท

ให้นำจำนวนหน่วยกิตมาหาว่านักศึกษาต้องจ่ายค่าธรรมเนียมการศึกษาในภาคฤดูร้อนเท่าใด แล้วแสดงผลลัพธ์ออกทางจอภาพ นอกจากนี้แล้วมหาวิทยาลัยไม่อนุญาตให้นักศึกษาลงทะเบียนเกิน 9 หน่วยกิต โดยเด็ดขาด ดังนั้นหากจำนวนหน่วยกิตเกินให้กลับไปรับค่าจำนวนหน่วยกิตใหม่อีกครั้ง

การกำหนดตัวแปร

credit แทน จำนวนหน่วยกิตที่ลงทะเบียน registration_fee แทน ค่าธรรมเนียมการศึกษา

ขั้นตอนวิธี
  1. รับค่า credit

  2. ตรวจสอบเงื่อนไข ถ้า credit < 1 หรือ credit > 9

    2.1 ถ้าใช่ ไปทำข้อ 3

    2.2 ถ้าไม่ใช่ กลับไปทำข้อ 1

  3. ตรวจสอบเงื่อนไข ถ้า credit <= 3

    3.1 ถ้าใช่ registration_fee = 3000 แล้วไปทำข้อ 4

    3.2 ถ้าไม่ใช่ ตรวจสอบเงื่อนไข ถ้า credit <= 3

       3.2.1 ถ้าใช่     registration_fee = 4500   แล้วไปทำข้อ 4
    
       3.2.2 ถ้าไม่ใช่  ตรวจสอบเงื่อนไข credit <= 6
    
            3.2.2.1 ถ้าใช่     registration_fee = 4500   แล้วไปทำข้อ 4
    
            3.2.2.2 ถ้าไม่ใช่  registration_fee = 6000   
  4. พิมพ์ค่า newSalary

  5. จบการทำงาน

1.8 การเขียนผังงานและกระบวนทำงานแบบต่าง ๆ

ผังงานเป็นเครื่องมือหนึ่งที่สามารถใช้เพื่ออธิบายขั้นตอนวิธีได้โดยการวาดแผนภาพแทนการอธิบายด้วยข้อความดังคำกล่าวที่ว่า “ภาพหนึ่งภาพมีค่าเท่ากับคำพันคำ” สัญลักษณ์ที่ใช้วาดผังงานมีความหมายตามข้อกำหนดมาตรฐานของ ANSI (American National Standards Institute) ผังงานแบ่งเป็น 2 ประเภท คือ ผังงานระบบ (system flowchart) และผังงานโปรแกรม (program flow chart)

ผังงานระบบเป็นผังงานที่ใช้อธิบายขั้นตอนวิธีของระบบงานซึ่งไม่จำเป็นต้องเป็นระบบงานทางคอมพิวเตอร์ก็ได้ ตัวอย่างผังงานระบบเป็นดังภาพที่ 1-7

ภาพที่ 1-7 ผังงานระบบทบทวนการตรวจข้อสอบใหม่1

ผังงานโปรแกรมเป็นผังงานที่ใช้ในการนำเสนอขั้นตอนวิธีหรือกระแสงาน (workflow) หรือกระบวนการของระบบงานทางคอมพิวเตอร์หรือโปรแกรม ผังงานโปรแกรมได้รับการนำมาใช้

ในการออกแบบและการจัดทำเอกสารของกระบวนการอย่างง่ายหรือโปรแกรม ดังตัวอย่างในภาพที่ 1-6 แสดงการทำงานของโปรแกรมคิดค่าธรรมเนียมการศึกษาตั้งแต่เริ่มต้นในส่วนของการรับข้อมูล การคำนวณหรือการประมวลผล จนถึงการแสดงผลลัพธ์ในขั้นตอนสุดท้าย

1.8.1 สัญลักษณ์และหลักการเขียนผังงาน

สัญลักษณ์พื้นฐานของผังงานตามมาตรฐานของ ANSI มีดังนี้

แสดงลำดับการทำงานของกระบวนการ
แสดงจุดเริ่มต้นและจุดสิ้นสุดของผังงาน  โดยใช้คำที่สื่อความหมาย เช่น เริ่มต้นและสิ้นสุด,  เริ่มและจบ,  start และ stop, begin และ end เป็นต้น
แสดงการประมวลผล การคำนวณ และการดำเนินการกำหนดค่าข้อมูล
แสดงถึงการเลือกหรือการตัดสินใจ ปกติแล้วจะมีเส้นทางให้เลือก 2 ทาง  โดยเงื่อนไขหรือคำถามหรือการดำเนินการตัดสินใจส่วนใหญ่จะให้ผลลัพธ์เป็น 2 อย่าง เช่น ใช่หรือไม่ใช่, จริงหรือเท็จ, yes หรือ no, true หรือ false
แสดงถึงกระบวนการนำเข้าหรือส่งออกข้อมูล
แสดงถึงข้อมูลหรือคำอธิบายเพิ่มเติมเพื่อให้เข้าใจผังงานในแต่ละส่วนมากขึ้น
แสดงถึงโปรแกรมย่อยหรือกระบวนการภายในมีการกระบวนการย่อยลงไปได้อีกหลายขั้นตอนแต่รวมเรียกไว้กระบวนการเหล่านี้ในชื่อเดียว
แสดงจุดเชื่อมต่อของผังงานภายในหน้าเดียวกัน
แสดงจุดเชื่อมต่อเมื่อต้องการเชื่อมไปยังอีกหน้าหนึ่ง
แสดงการแสดงผลลัพธ์ออกทางจอภาพ

นอกจากสัญลักษณ์เหล่านี้แล้วยังมีสัญลักษณ์อื่น เช่น

เป็นสัญลักษณ์แสดงถึงจานแม่เหล็ก (magnetic disk)
เป็นสัญลักษณ์การนำเข้าข้อมูลด้วยมือ (manual input)

เนื่องจากในรายวิชานี้เป็นการเขียนโปรแกรมอย่างง่ายจึงจะใช้เพียงสัญลักษณ์พื้นฐานและสัญลักษณ์ที่สำคัญบางสัญลักษณ์ในการออกแบบและอธิบายขั้นตอน

ข้อกำหนดและหลักการเขียนผังงาน มีดังนี้

  1. ใช้สัญลักษณ์ให้ตรงตามที่มาตรฐานกำหนด

  2. ทิศทางของผังงานควรเริ่มจากบนลงล่างหรือซ้ายไปขวา

  3. ทุกแผนภาพต้องมีเส้นลูกศรอย่างน้อย 2 เส้น เส้นลูกศรชี้เข้าเพื่อแสดงว่าก่อนหน้าที่จะทำกระบวนการนี้มีการทำกระบวนการใดมาก่อน และเส้นลูกศรชี้ออกเพื่อแสดงว่าเมื่อทำกระบวนการนี้เสร็จแล้วจะต้องทำกระบวนการใดเป็นลำดับต่อไป ยกเว้นจุดเริ่มต้นและจุดสิ้นสุด

  4. ไม่ควรมีจุดตัดในผังงาน

  5. จุดเริ่มต้นและจุดสิ้นสุดควรมีเพียงจุดเดียว

1.8.2 การทำงานแบบตามลำดับ

การทำงานเป็นแบบเรียงลำดับตั้งแต่ต้นจนจบในรูปแบบอย่างง่าย ไม่มีการทำงานแบบเลือกหรือการตัดสินใจ และไม่มีการทำงานแบบวนซ้ำ จึงทำให้มีทิศทางการไหลของกระบวนการในทิศทางเดียวจากบนลงล่าง ดังผังงานในภาพที่ 1-8

ภาพที่ 1-8 ผังงานของโปรแกรมคำนวณคะแนนรวม

การแก้ปัญหาด้วยโปรแกรมคอมพิวเตอร์จะต้องมีการแสดงลำดับขั้นตอนการทำงานได้อย่างชัดเจน มิฉะนั้นแล้วจะไม่สามารถให้คอมพิวเตอร์แก้ปัญหาแทนคนได้

1.8.3 การทำงานแบบเลือกทำ

ในแต่ละวันเราต้องทำการตัดสินใจในเรื่องต่าง ๆ เช่น ถ้าฝนตกเราจะกางร่มไปออกไปข้างนอกด้วย แต่ถ้าฝนไม่ตกเราจะไม่เอาร่มไปด้วย การสอบถ้าทำคะแนนได้ตั้งแต่ 50 ขึ้นไปถือว่าผ่าน ถ้าน้อยกว่านั้นถือว่าตก เป็นต้น การทำงานแบบเลือกทำนี้เองที่ทำให้คอมพิวเตอร์มีความฉลาดและสามารถตัดสินใจในการทำงานแทนคนได้ เพราะการทำงานของคอมพิวเตอร์อาศัยกระบวนการตัดสินใจที่นักเขียนโปรแกรมกำหนดไว้ สำหรับการทำงานแบบเลือกทำจะเป็นลักษณะของการตั้งคำถามหรือการสร้างเงื่อนไขให้เลือก ตัวอย่างผังงานที่มีการทำงานแบบเลือกเป็นดังภาพที่ 1-9

ภาพที่ 1-9 ผังงานแสดงโปรแกรมการขึ้นเงินเดือน

1.8.4 การทำงานแบบวนซ้ำ

การทำงานแบบวนซ้ำคือการทำงานที่มีการทำกระบวนการบางอย่างซ้ำหลายครั้ง  คอมพิวเตอร์เป็นเครื่องมือที่มีประสิทธิภาพในการทำงานซ้ำ ๆ โดยไม่ผิดพลาด ไม่เหนื่อยล้า และทำได้อย่างรวดเร็ว   ปัจจุบันงานบางอย่างที่มีการทำงานแบบวนซ้ำจึงมีการนำเอาคอมพิวเตอร์ใช้แทนคน   การออกแบบการทำงานแบบวนซ้ำใช้การตัดสินใจหรือการเลือกเพื่อพิจารณาว่าจะต้องวนซ้ำอีกหรือไม่   ตัวอย่างผังงานที่มีการทำงานแบบวนซ้ำเป็นดังภาพที่ 1-9 

ภาพที่ 1-10 ผังงานในการพิมพ์และหาผลรวมของตัวเลขจำนวนเต็มในช่วงที่กำหนด

ผังงานในภาพที่ 1-10 เป็นผังงานของกระบวนการพิมพ์ตัวเลขจำนวนเต็ม และหาค่าผลรวม (sum) ของตัวเลขในช่วงที่กำหนด โดยการรับค่าตัวเลขจำนวนเต็มที่น้อยที่สุด (smallestNum) และการรับค่าตัวเลขจำนวนเต็มที่มีค่ามากที่สุด (largestNum) กำหนดค่าเริ่มต้นให้กับตัวแปร sum ที่ใช้เก็บผลรวมของตัวเลขมีค่าเป็น 0 และกำหนดค่าให้ตัวแปร count มีค่าเริ่มต้นเท่ากับตัวเลขที่น้อยที่สุด จากนั้นจะทำการตรวจสอบเงื่อนไขการทำซ้ำว่าค่า count น้อยกว่าหรือเท่ากับตัวเลขที่มากที่สุดหรือไม่ (count <= largest) เพื่อตัดสินใจว่าจะต้องวนซ้ำอีกหรือไม่ ในการวนซ้ำแต่ละรอบจะทำการพิมพ์ค่า count ออกทางจอภาพ แล้วนำค่า count ไปบวกสะสมไว้ในตัวแปร sum หลังจากนั้นจะเพิ่มค่า count อีกทีละ 1 เมื่อดำเนินการเสร็จในแต่ละรอบจะกลับไปตรวจสอบเงื่อนไข count <= largest ทุกครั้งเพื่อดูว่าต้องทำซ้ำอีกหรือไม่ ถ้าเงื่อนไขเป็นจริงจะทำซ้ำอีกครั้ง เมื่อเงื่อนไขเป็นเท็จจะยุติการทำซ้ำ และเมื่อยุติการทำซ้ำแล้วจะทำการพิมพ์ค่าในตัวแปร sum ออกทางจอภาพ

ก่อนการทำความเข้าใจขั้นตอนทางผังงานในภาพที่ 1-10 ควรเข้าใจก่อนว่าเครื่องหมาย = ไม่ใช่การเท่ากันทางคณิตศาสตร์ แต่เป็นการกำหนดค่าให้กับตัวแปรทางด้านซ้ายของเครื่องหมายเท่ากับ โดยนำผลของการคำนวณทางขวาหรือค่าทางขวาไปใส่ในตัวแปรทางซ้าย ดังนั้น ถ้า x = 1 และให้ x = x + 5 แสดงว่าเราต้องทำการคำนวณค่าทางขวาก่อนคือตอนนี้ตัวแปร x มีค่าเท่ากับ 1 เมื่อนำไปบวกกับ 5 ผลการคำนวณที่ได้คือ 6 จากนั้นจะนำ 6 ไปเก็บในตัวแปร x ตัวเดิม (เปลี่ยนค่า x เป็นค่าใหม่คือ 6) ทำให้เมื่อสิ้นสุดการทำงานตัวแปร x จะมีค่าเท่ากับ 6

ตัวอย่างที่ 1.14 เมื่อป้อนข้อมูลนำเข้าในขั้นตอนวิธีตามผังงานในภาพที่ 1-10 เป็น 1 และ 5 ตามลำดับ

ผลลัพธ์ที่แสดงทางจอภาพเมื่อทำงานตามผังงานภาพที่ 1-10 เมื่อป้อนเลข 1 กับ 5

การทำงานแต่ละขั้นตอนตามผังงานภาพที่ 1-10 อธิบายได้ ดังนี้
  1. พิมพ์ข้อความ Enter smallest number: ออกทางจอภาพ

  2. รับค่า smallestNum ผู้ใช้ป้อนเลข 1 ดังนั้น smallestNum = 1

  3. พิมพ์ข้อความ Enter largest number: ออกทางจอภาพ

  4. รับค่า largestNum ผู้ใช้ป้อนเลข 5 ดังนั้น largestNum = 5

  5. กำหนดค่าเริ่มต้นให้ sum = 0

  6. กำหนดค่าเริ่มต้นให้ count = smallestNum ดังนั้น count = 1

  7. ตรวจสอบเงื่อนไข count <= largest เงื่อนไขเป็นจริง เนื่องจาก 1 <= 5 ทำการวนซ้ำรอบที่ 1

    7.1 พิมพ์ 1 ออกทางจอภาพ

    7.2 sum = 0 + 1 = 1

    7.3 count = 1 + 1 = 2

  8. ตรวจสอบเงื่อนไข count <= largest เงื่อนไขเป็นจริง เนื่องจาก 2 <= 5 ทำการวนซ้ำรอบที่ 2

    8.1 พิมพ์ 2 ออกทางจอภาพ

    8.2 sum = 1 + 2 = 3

    8.3 count = 2 + 1 = 3

  9. ตรวจสอบเงื่อนไข count <= largest เงื่อนไขเป็นจริง เนื่องจาก 3 <= 5 ทำการวนซ้ำรอบที่ 3

    9.1 พิมพ์ 3 ออกทางจอภาพ

    9.2 sum = 3 + 3 = 6

    9.3 count = 3 + 1 = 4

  10. ตรวจสอบเงื่อนไข count <= largest เงื่อนไขเป็นจริง เนื่องจาก 4 <= 5 ทำการวนซ้ำรอบที่ 4

    10.1 พิมพ์ 4 ออกทางจอภาพ

    10.2 sum = 6 + 4 = 10

    10.3 count = 4 + 1 = 5

  11. ตรวจสอบเงื่อนไข count <= largest เงื่อนไขเป็นจริง เนื่องจาก 5 <= 5 ทำการวนซ้ำรอบที่ 5

    11.1 พิมพ์ 5 ออกทางจอภาพ

    11.2 sum = 10 + 5 = 15

    11.3 count = 5 + 1 = 6

  12. ตรวจสอบเงื่อนไข count <= largest เงื่อนไขเป็นเท็จ เนื่องจาก 6 <= 5 ยุติการทำซ้ำ

  13. พิมพ์ Sum is 15 ออกทางจอภาพ เนื่องจากตัวแปร sum มีค่าเท่ากับ 15

แบบฝึกหัด

  1. ให้อธิบายความหมายของภาษาโปรแกรมคอมพิวเตอร์ อธิบายความแตกต่างของภาษาโปรแกรมในแต่ละยุค และยกตัวอย่างภาษาโปรแกรมระดับสูงมาอย่างน้อย 3 ภาษา

  2. ให้อธิบายกระบวนการทำงานของคอมไพเลอร์และอินเทอร์พรีเตอร์พร้อมทั้งเปรียบเทียบความแตกต่าง

  3. ให้ใช้ซอฟต์แวร์ IDE ใดก็ได้ในการเขียนโปรแกรมภาษาจาวาเพื่อแสดงชื่อและนามสกุลของนักศึกษา แล้วทำการคอมไพล์ และสั่งให้คอมพิวเตอร์ดำเนินงานเพื่อแสดงผลลัพธ์ออกทางจอภาพ

  4. ให้บอกและอธิบายองค์ประกอบของภาษาจาวาแต่ละส่วนจากโปรแกรมที่เขียนในข้อ 3

  5. ให้ค้นคว้าจากแหล่งข้อมูลอื่น ๆ ว่ามีผู้กล่าวถึงจริยธรรมของนักเขียนโปรแกรมไว้อย่างไรบ้าง เหมือนหรือแตกต่างกับที่กำหนดโดย ACM

  6. ให้ค้นคว้าหาข่าวหรือบทความที่แสดงถึงตัวอย่างของนักเขียนโปรแกรมที่ขาดจริยธรรม

  7. ให้บอกความสำคัญของจริยธรรมสำหรับนักเขียนโปรแกรม และแสดงความคิดเห็นว่าหากนักเขียนโปรแกรมไม่มีจริยธรรมจะเกิดผลเสียอย่างไร

  8. ให้วิเคราะห์และออกแบบโปรแกรมต่อไปนี้ ด้วยการวิเคราะห์ข้อมูลนำเข้า กระบวนการ และข้อมูลนำออก ออกแบบหน้าจอ กำหนดตัวแปร และเขียนขั้นตอนวิธี พร้อมทั้งเขียนผังงาน

โปรแกรมเงินสำรองเลี้ยงชีพ (provident fund) ของบริษัทจาวาจาวา จำกัด โปรแกรมมีการรับข้อมูลเงินเดือน (salary) ของพนักงาน และรับค่าคอมมิชชั่น (commission) จากการขาย แล้วนำมาคำนวณหาเงินสำรองเลี้ยงชีพที่พนักงานต้องถูกหัก พนักงานขายจะมีรายรับ (income) จากเงินเดือนบวกกับค่าคอมมิชชั่น และจำนวนเงินสำรองเลี้ยงชีพที่พนักงานต้องถูกหัก พิจารณาจากจำนวนรายรับทั้งหมด ตามเงื่อนไขต่อไปนี้

*   รายรับทั้งหมดไม่เกิน 10,000 บาท  ยกเว้นไม่ต้องหักเงินสำรองเลี้ยงชีพ

*   รายรับทั้งหมดมากกว่า 10,000 บาท แต่ไม่เกิน 20,000 บาท หักเงินสำรองเลี้ยงชีพ 2% ของรายได้ทั้งหมด

*   รายรับทั้งหมดมากกว่า 20,000 บาทขึ้นไป หักเงินสำรองเลี้ยงชีพ 5% ของรายได้ทั้งหมด

การทำงานของโปรแกรมนี้จะมีการคำนวณหาเงินสำรองเลี้ยงชีพที่ต้องหัก และแสดงผลลัพธ์ของจำนวนเงินสำรองเลี้ยงชีพออกทางจอภาพ

  1. ให้วิเคราะห์และออกแบบโปรแกรมเพื่อพิจารณากำหนดสถานะภาพของนักศึกษาชั้นปีที่ 1 ภาคเรียนที่ 1 ตามระเบียบมหาวิทยาลัยสงขลานครินทร์ ว่าด้วยการศึกษาระดับปริญญาตรี ฉบับล่าสุด ด้วยการวิเคราะห์ข้อมูลนำเข้า กระบวนการ และข้อมูลนำออก ออกแบบหน้าจอ กำหนดตัวแปร และเขียนขั้นตอนวิธี พร้อมทั้งเขียนผังงาน

  2. ให้แสดงผลลัพธ์ที่พิมพ์ออกทางจอภาพเมื่อทำงานตามผังงานในภาพที่ 1-10 เมื่อ

    ก) ป้อนเลข 5 กับ 10

    ข) ป้อนเลข 1 กับ 10

    ค) ป้อนเลข 10 กับ 2


  1. ที่มา https://eds.trang.psu.ac.th/ptw/news/uploaded_files/news_id_7722.pdf↩︎