การเขียนโปรแกรมเบื้องต้น
วันนี้เรียน
•การเขียนโปรแกรมเบื้องต้น
•การเขียนโปรแกรมแบบเลือกทำา
Create source code
Create source code
– การเขียน code ตามกฎเกณฑ์ของ
ภาษา C++
– เพื่อสั่งให้คอมพิวเตอร์ทำางานตามที่
โปรแกรมเมอร์ต้องการ
Compile
– เป็นกระบวนการในการตรวจสอบ
code ที่โปรแกรมเมอร์เขียนว่าถูก
ต้องตรงตามหลักการเขียนในภาษา
C++ หรือไม่
– ถ้าผิดจะแสดงข้อความระบุสาเหตุ
ความผิด
– โปรแกรมเมอร์จะต้องแก้ไข และ
compile ใหม่จนกว่าจะถูก
Link
– เป็นกระบวนการในการนำาโปรแกรมย่อยที่
จำาเป็นต้องใช้มารวมเข้ากับโปรแกรมหลัก
เพื่อให้โปรแกรมหลักทำางานได้ตามที่
โปรแกรมเมอร์ต้องการ
– ผลลัพธ์ที่ได้จากกระบวนการ Link คือ file
ชนิด .EXE
Run
– เป็นกระบวนการในการการสั่งให้
โปรแกรมทำางาน
– ความผิดพลาดสามารถเกิดขึ้นได้ในขณะที่
run เรียกว่า run-time error
โครงสร้างของภาษา C++
Header
Main
funct
ion
Preprocessor
Global Declarations
Function prototypes
statements
comm
ents
วิธีการเขียน source code สำาหรับ
โปรแกรมอย่างง่าย
1. เขียน Preprocessor statement
2. เขียน main function
เขียน Preprocessor statement
• Preprocessor statement เป็นคำาสั่งที่สั่งให้
คอมไพเลอร์ทำางานบางอย่างก่อนที่จะคอมไพล์
โปรแกรม
• คำาสั่งจะขึ้นต้นด้วยเครื่องหมาย #
• Preprocessor statement ที่สำาคัญๆ มี 2
ประเภทคือ
#include
#define
#include
• เป็น Preprocessor statement ที่สั่งให้คอม
ไพเลอร์รวมเฮดเดอร์ไฟล์ที่อยู่หลังไดเรกทีฟ
อินคลูด เข้าไว้กับซอร์ดโค้ด เพื่อให้โปรแกรม
สามารถทำางานตามที่โปรแกรมเมอร์ต้องการ
ได้
• เฮดเดอร์ไฟล์ (Header file) เป็นที่เก็บฟังก์ชั่
นมาตรฐาน สร้างไว้เพื่อช่วยโปรแกรมเมอร์
ประหยัดเวลาในการเขียนโปรแกรม
• เฮดเดอร์ไฟล์ (Header file) เช่น iostream.h
• เก็บฟังก์ชันในการรับข้อมูล และแสดงผลข้อมูล
เช่น cin , cout เป็นต้น
#include
#include<iostream.h>
preproce
ssor
Directive
Header
File
#define
• เป็น Preprocessor statement ที่กำาหนดค่า
ของตัวแปรไว้ก่อนที่จะมีการคอมไพล์ ดังนั้นใน
กระบวนการคอมไพล์จึงไม่สามารถ
เปลี่ยนแปลงค่าของตัวแปรได้
• หากมีคำาสั่งใดในโปรแกรมต้องการ
เปลี่ยนแปลงค่า โปรแกรมจะแสดงข้อความระบุ
ความผิดพลาด
• รูปแบบการเขียนคำาสั่ง (ไม่ต้องมีเครื่องหมาย ;
ปิดท้ายคำาสั่ง)
สำาหรับตัวแปร
ชนิดตัวเลข
#define
score 50
สำาหรับตัวแปรชนิด
ตัวอักษร
#define score
“over 50”
การเขียน main function
• เป็นการเขียนฟังก์ชันหลักในการทำางานของ
โปรแกรม
• ทุกๆ โปรแกรมที่เขียนขึ้นจากภาษา C++ จะ
ต้องมีฟังก์ชันนี้เสมอ มิฉะนั้นโปรแกรมจะไม่
สามารถทำางานได้
• ลักษณะการเขียนvoid
main ()
{
คำาสั่ง
ต่างๆ;
บ่งบอกว่า
ฟังก์ชันนี้ไม่
ได้ส่งค่าใดๆ
ชื่อฟังก์ชันนี้
บ่งบอกว่า
ฟังก์ชันนี้ไม่
ได้รับค่าใดๆ
5 เมตร
4 เมตร
ตัวอย่างที่ 1 การคำานวณพื้นที่สามเหลี่ยม
Preprocessor
Function
ก่อนเขียน Preprocessor ลอง
ถามตัวเองว่า.....1. โปรแกรมที่จะเขียนมีการรับข้อมูลและแสดงผล
ข้อมูลหรือไม่ ?
ตอบ มี ต้องใส่ preprocessor ว่า
#include<iostream>
2. โปรแกรมที่จะเขียนมีการใช้งานตัวแปรแบบ
string หรือไม่ ?
ตอบ มี ต้องใส่ preprocessor ว่า
#include<string>
3. โปรแกรมที่จะเขียนมีการเรียกใช้ฟังก์ชันทาง
คณิตศาสตร์หรือไม่ ?
ตอบ มี ต้องใส่ preprocessor ว่า
#include<iostre
am.h>
Preprocessor ที่ต้องใช้ในโปรแกรม
คำำนวณพื้นที่สำมเหลี่ยม
#include<iostream.h> เป็น preprocessor
ตัวเดียวเท่ำนั้น
เนื่องจำกโปรแกรมนี้มีกำรรับและแสดงข้อมูล
อย่ำงเดียว
ไม่มีกำรใช้ตัวแปรแบบ string และไม่มีกำรใช้
กำรเขียน main function
void main()
{
}
ขั้นที่ 1
เขียน
void
main()
{
}
กำรเขียน main function
void main()
{
}
ขั้นที่ 2 เขียน
คำำสั่งที่อยู่ภำยใน
ฟังก์ชัน main
float invariant = 0.5, base = 0.0,
height =0.0, result = 0.0;
จำกสัญลักษณ์แปลงเป็น code ภำษำ
C++ ได้ดังนี้
จำกสัญลักษณ์แปลงเป็น code ภำษำ
C++ ได้ดังนี้
คำำสั่งในกำรรับข้อมูลคือคำำสั่ง cin และ
เครื่องหมำย >>
ดังนั้นจึงเขียนได้ว่ำ
cin>>base>>height;
รับค่ำแรกมำเก็บไว้ในตัวแปร base
จำกสัญลักษณ์แปลงเป็น code ภำษำ
C++ ได้ดังนี้
result = invariant *
base * height;
จำกสัญลักษณ์แปลงเป็น code ภำษำ
C++ ได้ดังนี้
คำำสั่งในกำรแสดงข้อมูลคือคำำสั่ง cout และ
เครื่องหมำย <<
ดังนั้นจึงเขียนได้ว่ำ
cout<<“ ”รูปเรขำคณิตนี้มีขนำดเท่ำกับ
<<result<<“ ”ตำรำงเมตร ;
สรุปเขียน source code ได้ดังนี้
กำรเขียนโปรแกรมแบบเลือกทำำ
• สิ่งสำำคัญที่สุดที่ต้องมี คือ เงื่อนไข
• เพรำะเงื่อนไขคือสิ่งที่จะใช้ในกำรตรวจสอบว่ำ
จะต้องทำำอะไรต่อไป
– ถ้ำผลลัพธ์จำกกำรตรวจสอบเงื่อนไขเป็นจริง
ทำำอะไร
– ถ้ำผลลัพธ์จำกกำรตรวจสอบเงื่อนไขเป็นเท็จ
จะต้องทำำอะไร
ตัวอย่ำงที่ 2 กำรเขียนโปรแกรมแบบเลือกทำำ
จงเขียนโปรแกรมตรวจสอบตัวเลขที่ผู้ใช้กรอก
เข้ำมำว่ำเป็นจำำนวนนับหรือไม่ ทั้งนี้ถ้ำตัวเลขที่ผู้
ใช้กรอกเข้ำมำเป็นทศนิยมให้โปรแกรมปรับให้
เป็นเลขจำำนวนเต็มโดยอัตโนมัติ ก่อนทำำกำร
ตรวจสอบ
ขั้นวิเครำะห์ปัญหำ
1. ปัญหำคืออะไร
• ตอบ ปัญหำคือเขียนโปรแกรมตรวจสอบตัวเลขที่รับ
เข้ำมำสู่ระบบ โดยถ้ำตัวเลขที่รับเข้ำมำมีค่ำมำกกว่ำ 0
ให้แสดงข้อควำมว่ำ
“This number is a cardinal number”
แต่ถ้ำน้อยกว่ำหรือเท่ำกับ ให้แสดงข้อควำมว่ำ
“This number is not a cardinal number”
ขั้นวิเครำะห์ปัญหำ
2. รูปแบบของผลลัพธ์ที่จะแสดงคืออะไร ?
• ตอบ
ถ้ำตัวเลขที่รับเข้ำมำมีค่ำมำกกว่ำ 0 ให้แสดงข้อควำม
ว่ำ
“This number is a cardinal number”
แต่ถ้ำน้อยกว่ำหรือเท่ำกับ ให้แสดงข้อควำมว่ำ
“This number is not a cardinal number”
ขั้นวิเครำะห์ปัญหำ
3. ข้อมูลอะไรบ้ำง ที่ต้องใช้ในกำรคำำนวณ ?
• ตอบ ข้อมูลตัวเลขที่รับมำจำกผู้ใช้
ขั้นวิเครำะห์ปัญหำ
4. ตัวแปรที่นำำมำใช้เก็บข้อมูล ?
• ตอบ มี ตัวแปรเก็บข้อมูลเข้ำ 1 ตัว คือ number เป็น
ชนิด int เพรำะในโจทย์ระบุว่ำถ้ำตัวเลขที่ผู้ใช้กรอก
เข้ำมำเป็นทศนิยมให้ปรับเป็นจำำนวนเต็มก่อนแล้ว
ค่อยเอำไปตรวจสอบ ดังนั้นถ้ำเรำกำำหนดเป็น int
โปรแกรมจะปรับให้โดยอัตโนมัติไม่ต้องเขียนคำำสั่ง
ใดๆ เพิ่ม
ขั้นวิเครำะห์ปัญหำ
4. หำขั้นตอนวิธีกำรทำำงำนของโปรแกรม ?
ตอบ
• สร้ำงตัวแปรสำำหรับเก็บข้อมูลตัวเลข และกำำหนดค่ำ
เบื้องต้นให้กับตัวแปรทั้งหมด
• รับข้อมูลตัวเลข จำกผู้ใช้
• ประมวลผลโดยกำรเปรียบเทียบ คือ
3.1 ถ้ำ number มำกกว่ำ 0 ให้แสดงข้อควำม
“This number is a cardinal number”
ถ้ำไม่ใช่ทำำต่อข้อ 3.2
3.2 แสดงข้อควำม “This number is not a
เขียน Flowchart
1. สร้ำงตัวแปรสำำหรับเก็บข้อมูลตัวเลข และกำำหนดค่ำ
เบื้องต้นให้กับตัวแปรทั้งหมด
int number = 0;
เขียน Flowchart
2. รับข้อมูลตัวเลข จำกผู้ใช้
number
เขียน Flowchart
3. ประมวลผลโดยกำรเปรียบเทียบ คือ
3.1 ถ้ำ number มำกกว่ำ 0 จริง แล้วให้แสดง
ข้อควำม
“This number is a cardinal number”
ถ้ำไม่ใช่ทำำต่อข้อ 3.2
3.2 แสดงข้อควำม “This number is not a
cardinal number”
number > 0
is number is a cardinal number”“This number is not a cardinal nu
จริง เท็จ
สรุป
Flowchart ที่
ได้
start
int number = 0;
number
number > 0
is number is a cardinal number”“This number is not a cardinal nu
จริง เท็จ
stop
Preprocessor
Function
เขียนส่วนที่เป็น Preprocessor
• เนื่องจากมีการรับและแสดงผลข้อมูลอย่างเดียว ไม่มี
ตัวแปร string และไม่มีการใช้ฟังก์ชันทาง
คณิตศาสตร์ ดังนั้น Preprocessor จึงมีตัวเดียวคือ
#include<iostream.h>
การเขียนโปรแกรมส่วนของ Function
ขั้นตอนที่ 1
void main ()
{
}
การเขียนโปรแกรมส่วนของ Function
จากสัญลักษณ์สามารถเปลี่ยนเป็น code ภาษา
C++ ได้ดังนี้
int number = 0;
int number = 0;
ขั้นตอนที่ 2
การเขียนโปรแกรมส่วนของ Function
จากสัญลักษณ์สามารถเปลี่ยนเป็น code ภาษา
C++ ได้ดังนี้
cin>>number;
number
ขั้นตอนที่ 2
การเขียนโปรแกรมส่วนของ Function
จากสัญลักษณ์ด้านล่างสามารถเปลี่ยนเป็น
code ภาษา C++ ได้ดังนี้
if (number > 0)
{
cout<< “This number is a cardinal
number”<<endl;
}
else
{
cout<< “This number is not a
cardinal number”<<endl;
}ขั้นตอนที่ 2
สรุป source code สำาหรับโปรแกรมตัวอย่างนี้
คือ
การใช้ switch
• สามารถเลือกเขียนคำาสั่ง switch แทนการ
เขียนคำาสั่ง if ได้ ในกรณีที่
– มีการเลือกทำาหลายเงื่อนไข
– แต่ละเงื่อนไข ใช้ตัวแปรเดียวกันในการ
ตัดสินใจ
ตัวอย่างการใช้ switch
• จงเขียนโปรแกรมจัดการตัวเลข 2 จำานวน
โดยที่ผู้ใช้สามารถเลือกวิธีการดำาเนินการทาง
คณิตศาสตร์กับตัวเลขทั้งสอง ได้ดังนี้
ถ้าเลือก 1 ให้หาผลรวมของตัวเลขทั้งสองนั้น
ถ้าเลือก 2 ให้หาผลลบของตัวเลขทั้งสองนั้น
ถ้าเลือก 3 ให้หาผลคูณของตัวเลขทั้งสองนั้น
ขั้นวิเคราะห์ปัญหา
1. ปัญหาคืออะไร
• ตอบ ปัญหาคือเขียนโปรแกรมจัดการตัวเลข 2
จำานวน โดยที่ผู้ใช้สามารถเลือกวิธีการดำาเนินการทาง
คณิตศาสตร์กับตัวเลขทั้งสอง ได้ดังนี้
ถ้าเลือก 1 ให้หาผลรวมของตัวเลขทั้งสองนั้น
ถ้าเลือก 2 ให้หาผลลบของตัวเลขทั้งสองนั้น
ถ้าเลือก 3 ให้หาผลคูณของตัวเลขทั้งสองนั้น
ขั้นวิเคราะห์ปัญหา
2. รูปแบบของผลลัพธ์ที่จะแสดงคืออะไร ?
• ตอบ
ถ้าเลือก 1 รูปแบบการแสดงผล “You choose case 1
num1 + num2 = result”
ถ้าเลือก 2 รูปแบบการแสดงผล “You choose case 2
num1 - num2 = result”
ถ้าเลือก 3 รูปแบบการแสดงผล “You choose case 3
num1 * num2 = result”
ถ้าเลือกเลขที่เลือกไม่ใช่ 1, 2, 3 ให้ขึ้นข้อความ “sorry the
system can’t process”
หมายเหตุ
ขั้นวิเคราะห์ปัญหา
3. ข้อมูลอะไรบ้าง ที่ต้องใช้ในการคำานวณ ?
• ตอบ สูตรที่ต้องใช้มีดังนี้
กรณีหมายเลข case เป็น 1 ผลลัพธ์ = เลขจำานวนที่
1 + เลขจำานวนที่ 2
กรณีหมายเลข case เป็น 2 ผลลัพธ์ = เลขจำานวนที่
1 - เลขจำานวนที่ 2
กรณีหมายเลข case เป็น 3 ผลลัพธ์ = เลขจำานวนที่
1 * เลขจำานวนที่ 2
ดังนั้นข้อมูลที่ต้องใช้ในการคำานวณคือ
•เลขจำานวนที่ 1
ขั้นวิเคราะห์ปัญหา
4. ตัวแปรที่นำามาใช้เก็บข้อมูล ?
• ตอบ
– ตัวแปรเก็บข้อมูลเข้า 3 ตัว
•เลขจำานวนที่ 1 ตั้งชื่อว่า num1 เป็นชนิด float
•เลขจำานวนที่ 2 ตั้งชื่อว่า num2 เป็นชนิด float
•หมายเลข case ตั้งชื่อ case_num เป็นชนิด
int
– ตัวแปรเก็บผลลัพธ์ 1 ตัว
•ผลลัพธ์ ตั้งชื่อว่า result เป็นชนิด float
ขั้นวิเคราะห์ปัญหา
4. หาขั้นตอนวิธีการทำางานของโปรแกรม ?
ตอบ
1. สร้างตัวแปรสำาหรับเก็บข้อมูลเลขจำานวนที่ 1,
เลขจำานวนที่ 2,
หมายเลข case, ผลลัพธ์ และกำาหนดค่าเบื้องต้นให้
กับตัวแปรทั้งหมด
2. รับข้อมูลเลขจำานวนที่ 1, เลขจำานวนที่ 2, หมายเลข
case จากผู้ใช้
3. ประมวลผลโดยการเปรียบเทียบ ตรวจสอบหมายเลข
case คือ
ขั้นวิเคราะห์ปัญหา
4. หาขั้นตอนวิธีการทำางานของโปรแกรม ?
(ต่อ)
3.2 ถ้าหมายเลข case เท่ากับ 2
(1) หาผลลบโดย result = num1 - num2;
(2) แสดงข้อความ “You choose case 2
num1 - num2 = “+result;
3.3 ถ้าหมายเลข case เท่ากับ 3
(1) หาผลคูณโดย result = num1 * num2;
(2) แสดงข้อความ “You choose case 3
ขั้นวิเคราะห์ปัญหา
4. หาขั้นตอนวิธีการทำางานของโปรแกรม ?
(ต่อ)
3.4 ถ้าหมายเลข case ไม่ได้อยู่ใน 1-3
แสดงข้อความ “sorry the system can’t
process”
เขียน Flowchart
1. สร้างตัวแปรสำาหรับเก็บข้อมูลเลขจำานวนที่ 1,
เลขจำานวนที่ 2,
หมายเลข case, ผลลัพธ์ และกำาหนดค่าเบื้องต้นให้
กับตัวแปรทั้งหมดfloat num1=0.0, num2=0.0, result=0.0;
int case_num= 0;
เขียน Flowchart
2. รับข้อมูลเลขจำำนวนที่ 1, เลขจำำนวนที่ 2, หมำยเลข
case จำกผู้ใช้
case_num, num1, num2
เขียน Flowchart
3. ประมวลผลโดยกำรเปรียบเทียบ ตรวจสอบหมำยเลข
case
switch case_num
เขียน Flowchart
ถ้ำหมำยเลข case เท่ำกับ 1
(1) หำผลรวมโดย result = num1 + num2;
(2) แสดงข้อควำม “You choose case 1 num1 +
num2 = “+result;
case 1:
result = num1 + num2;
“You choose case 1 num1 + num2 = “+result;
เขียน Flowchart
ถ้ำหมำยเลข case เท่ำกับ 2
(1) หำผลรวมโดย result = num1 - num2;
(2) แสดงข้อควำม “You choose case 2 num1 -
num2 = “+result;
case 2:
result = num1 - num2;
“You choose case 2 num1 - num2 = “+result;
เขียน Flowchart
ถ้ำหมำยเลข case เท่ำกับ 3
(1) หำผลรวมโดย result = num1 * num2;
(2) แสดงข้อควำม “You choose case 3 num1 *
num2 = “+result;
case 3:
result = num1 + num2;
“You choose case 3 num1 * num2 = “+result;
เขียน Flowchart
ถ้ำหมำยเลข case ไม่ได้อยู่ใน 1-3
แสดงข้อควำม “sorry the system can’t process”
default :
“sorry the system can’t process”;
start
float num1=0.0, num2=0.0, result= 0.0;
int case_num= 0;
case_num, num1, num2
switch case_num
result = num1 + num2;
“You choose case 1
num1 + num2 = “+result;
stop
“sorry the system
can’t process”;
result = num1 - num2;
“You choose case 2
num1 - num2 = “+result;
result = num1 * num2;
“You choose case 3
num1 * num2 = “+result;
case
1:
case
2:
case
3:
defa
ult:
เขียนส่วนที่เป็น Preprocessor
• เนื่องจำกมีกำรรับและแสดงผลข้อมูลอย่ำงเดียว ไม่มี
ตัวแปร string และไม่มีกำรใช้ฟังก์ชันทำง
คณิตศำสตร์ ดังนั้น Preprocessor จึงมีตัวเดียวคือ
#include<iostream.h>
กำรเขียนโปรแกรมส่วนของ Function
ขั้นตอนที่ 1
void main ()
{
}
start
floatnum1=0.0,num2=0.0,result=0.0;
intcase_num=0;
case_num,num1,num2
switchcase_num
result=num1+num2;
“Youchoosecase1
num1+num2=“+result;
stop
“sorrythesystem
can’tprocess”;
result=num1-num2;
“Youchoosecase2
num1-num2=“+result;
result=num1*num2;
“Youchoosecase3
num1*num2=“+result;
case1: case2: case3: default:
เขียน Flowchart
แปลงเป็น code ภำษำ C++ ได้ดังนี้
float num1=0.0, num2=0.0, result=0.0;
int case_num= 0;
float num1=0.0, num2=0.0, result=0.0
int case_num= 0;
เขียน Flowchart
case_num, num1, num2
แปลงเป็น code ภำษำ C++ ได้ดังนี้
cin>>case_num>>num1>>num
2;
เขียน Flowchart
switch case_num
แปลงเป็น code ภำษำ C++
ได้ดังนี้
switch (case_num)
{
ค่อยใส่เครื่องหมำย
ปีกกำปิด ทีหลัง หลังจำก
เขียนคำำสั่งภำยในเสร็จ
แล้ว
เขียน Flowchart
result=num1+num2;
“Youchoosecase1
num1+num2=“+result;
result=num1
“Youchoose
num1-num2
case1: case2
แปลงเป็น code ภำษำ C++ ได้ดังนี้
case 1:
result = num1+num2;
cout<<“You choose case 1 num1+num2 =
“<<result<<endl;
break;
เขียน Flowchart switchcase_num
result=num1+num2;
“Youchoosecase1
num1+num2=“+result;
stop
result=num1-num2;
“Youchoosecase2
num1-num2=“+result; n
case1: case2:
แปลงเป็น code ภำษำ C++ ได้ดังนี้
case 2:
result = num1- num2;
cout<<“You choose case 2 num1-num2 =
“<<result<<endl;
break;
เขียน Flowchart
switchcase_num
result=num1+num2;
“Youchoosecase1
num1+num2=“+result;
stop
result=num1-num2;
“Youchoosecase2
num1-num2=“+result;
result=num1*num2;
“Youchoosecase3
num1*num2=“+result;
case1: case2: case3: d
แปลงเป็น code ภำษำ C++ ได้ดังนี้
case 3:
result = num1* num2;
cout<<“You choose case 3 num1*num2 =
“<<result<<endl;
break;
เขียน Flowchart
switchcase_num
stop
“sorrythesystem
can’tprocess”;
result=num1-num2;
“Youchoosecase2
num1-num2=“+result;
result=num1*num2;
“Youchoosecase3
num1*num2=“+result;
case2: case3: default:
แปลงเป็น code ภำษำ C++ ได้ดังนี้
default:
cout<<“sorry the system can’t
process”<<endl;
break; ปิด switch case เนื่องจำกเปิด
สรุปผลกำรเขียนโปรแกรม

Chapter 04 Compare