คำสั่งพื้นฐาน
🤔เขียนโค้ดสั่งคอมคำนวณหาผลลัพท์ต่างๆต้องเขียนยังไง? ดช.แมวน้ำ มีคำตอบที่นี่เลยงับ
ภาพจาก Microsoft Copilot — จอคอมรุ่นพิเศษที่มองเห็นได้จากด้านหลังด้วย 😆
เนื้อหานี้เป็นส่วนหนึ่งของคอร์ส 🐣Procedural Programming ที่สอนเรื่องการเขียนโปรแกรมขั้นพื้นฐาน ซึ่งเพื่อนๆสามารถจิ้มไปดูเนื้อหาทั้งหมดได้เบย หรือถ้ายังนึกไม่ออกว่าจะเสพเรื่องอะไรดีก็ลองจิ้มดู 🛣️แนวทางเรียนรู้ ก่องก็ล่าย 😗
🤔ถามให้คอมตอบทำไง
จากบทความ ประเภทของข้อมูล ที่ผ่านมา จะทำให้เราเริ่มเข้าใจภาษาพื้นฐานของคอมแล้ว ถัดมาเราก็จะลอง สั่งให้คอมหาคำตอบให้เราบ้าง โดยเริ่มจากคำถามเด็ก ป.1 ก่อนว่า
4 + 5 ได้เท่าไหร่? ให้เขียนคำตอบออกมานะ
ซึ่งถ้ าเป็นคนมองปุ๊ปก็จะรู้เลยว่าตอบ 45 เอ้ยยยย 9 ได้เลยในทันทีใช่มะ เพราะ เมื่อเราเห็นโจทย์ปุ๊ป สมองเราก็คิดเป็นลำดับจนได้คำตอบออกมา ... แต่การจะเขียนโค้ดให้คอมหาคำตอบข้อนี้ได้นั้น เราจะต้องบอกคอมไปทีละขั้นตอน ว่าต้องคิดไงถึงจะได้คำตอบ เช่น ป๋มจะต้องบอกวิธีคิดให้คอมไปทีละขั้นตอน ตามลำดับด้านล่าง
ลำดับขั้นตอนในการสั่งคอม
- กำหนดให้ (เลขตัวแรก) คือเลข 4
- กำหนดให้ (เลขตัวที่สอง) คือเลข 5
- นำ (เลขตัวแรก) มาบวกกับ (เลขตัวที่สอง) แล้ว เก็บคำตอบที่ได้เอาไว้
- นำ เลขที่เก็บเอาไว้ ไปพิมพ์ออกที่หน้าจอ ... จบ😅
เกร็ดความรู้เหมือนคอมมันจะฉลาด แต่เอาจริงๆมันไม่ได้ฉลาดขนาดนั้นหรอกนะ มันยังต้องพึ่งคนในการหาคำตอบอยู่
สิ่งที่คอมมันเก่งจริงๆคือมันเร็วต่างหาก
ไม่เชื่อลองเปลี่ยนโจทย์ข้อนี้ให้เป็น 5,632 x 41,173 ÷ 4 ดูจิ คอมมันตอบโดยไม่ถึง 1 วินาทีเลยนะ
😵💫สั่งคอมให้คิดเป็นลำดับทำไง
เพื่อให้เราสามารถบอกคอมไปทีละขั้นตอนได้ เราจำเป็นต้องรู้ คำสั่งพื้นฐาน เพื่อใช้สั่งคอมทำการคำนวณผลลัพท์ โดยเรื่องนี้ในภาษาเดฟเราเรียกมันว่า ตัวดำเนินการ หรือ Operator (อ่านว่า โอเปอเรเตอร์
) โดยแต่ละคำสั่งจะมีหน้าที่และการใช้งานตามด้านล่างเยย
Operator | สิ่งที่คอมจะทำ | ตัวอย่าง |
---|---|---|
นำค่า 2 ค่ามา บวก กัน | 1 + 2 | |
นำค่า 2 ค่ามา ลบ กัน | 3 - 2 | |
นำค่า 2 ค่ามา คูณ กัน | 7 * 3 | |
นำค่า 2 ค่ามา หาร กัน | 6 / 2 | |
นำค่าด้านขวา operator ไป เก็บในตัวแปรด้านซ้าย | var money = 100 |
จากตารางด้านบน เราก็จะสามารถสั่งให้คอมทำตามขั้นตอนก่อนหน้านี้ได้แย้ว ตามด้านล่าง
// 1.กำหนดให้ (เลขตัวแรก) คือเลข 4
var firstNumber = 4;
// 2.กำหนดให้ (เลขตัวที่สอง) คือเลข 5
var secondNumber = 5;
// 3.นำ (เลขตัวแรก) มาบวกกับ (เลขตัวที่สอง) แล้ว เก็บคำตอบที่ได้เอาไว้
var result = firstNumber + secondNumber;
// 4.นำ เลขที่เก็บเอาไว้ ไปพิมพ์ออกที่หน้าจอ
Console.WriteLine(result);
ผลลัพท์
9
🤨ขอตัวอย่างที่ยากกว่านี้หน่อย?
ได้เรย แมวน้ำหนัก 100 นิวตั้น โดดจากตึกสูง 30 เมตร ด้วยอัตราเร็ว╰(艹皿艹 ) โทษทีคึกไปหน่อย😅 ...งั้นลองให้คอมคำนวณเงินเเก็บหน่อยละกันโดยสมมุติว่า ป๋มเก็บเงินได้เดือนละ 120 บาท ถ้าผ่านไป X ปี ผมจะมีเงินเก็บกี่บาท?
... จากโจทย์เราก็ต้องเขียนวิธีหาคำตอบทีละขั้นตอนให้คอม ซึ่งก็จะได้ราวๆนี้
ลำดับขั้นตอนในการสั่งคอม
- กำหนดให้ (เงินเก็บต่อเดือน) มีค่าเป็น 120
- ถามผู้ใช้ว่าจะให้ผ่านไปกี่ปี แล้วเก็บค่านั้นไว้
- นำ (จำนวนปีที่ผู้ใช้ให้มาในข้อ 2) แปลงเป็นจำนวนเดือน ด้วยการคูณด้วย 12 แล้วเก็บเอาไว้
- นำ (จำนวนที่เก็บไว้ในข้อ 3) มาคูณกับ (เงินเก็บต่อเดือนในข้อ 1) แล้วเก็บเอาไว้เป็นผลลัพท์
- พิมพ์ผลลัพท์ออกทางหน้าจอ
จากขั้นตอนด้านบน จะมีเรื่องที่ป๋มไม่เคย พูดถึงนั่นคือ การถามค่าจากผู้ใช้ ซึ่งจะเป็นการให้ผู้ใช้พิมพ์ค่าเข้ามา แล้วเราจะนำค่านั้นๆไปใช้งานต่อนั่นเอง โดยในโปรเจค Console App เราสามารถถามค่าจากผู้ใช้ได้จากคำสั่ง Console.ReadLine() แล้วโปรแกรมจะหยุดรอให้ผู้ใช้พิมพ์ข้อความเข้ามาที่หน้าต่าง terminal
ซึ่งเมื่อผู้ใช้กดปุ่ม Enter ปุ๊ป ข้อความที่พิมพ์ไว้ก็จะถูกส่งมายังโปรแกรมของเราต่อในรูปของข้อความ (string) นั่นเอง ตามตัวอย่างด้านล่าง
var userInput = Console.ReadLine(); // รอผู้ใช้พิมพ์ และนำค่าไปเก็บใส่ตัวแปร userInput
Console.WriteLine(userInput); // พิมพ์ค่าที่ผู้ใช้ใส่เข้ามา
อธิบายการทำงาน
- พอทำคำสั่ง Console.ReadLine() โปรแกรมก ็จะหยุดรอให้ป๋มใส่ค่าเข้ามา
- ป๋มพิมพ์เลช 123 แล้วกด Enter เข้าไปปุ๊ป ตัวแปร userInput ก็จะมีค่าเป็น "123" ทันที
- เมื่อสั่งให้มันทำงานต่อ มันก็จะนำค่า userInput ไปแสดงผลออกทางหน้าจอ เลยเห็นเลข 123 ที่ terminal อีกครั้ง
จากฟามรูปทั้งหมดตอนนี้ เราก็พร้อมที่จะแปลงขั้นตอนด้านบนให้กลายเป็นโค้ดแย้ว ตามด้านล่างนี้เยยยย
// 1.กำหนดให้ (เงินเก็บต่อเดือน) มีค่าเป็น 120
var moneyPerMonth = 120;
// 2.ถามผู้ใช้ว่าจะให้ผ่านไปกี่ปี แล้วเก็บค่านั้นไว้
var yearText = Console.ReadLine();
// 3. นำ (จำนวนปีที่ผู้ใช้ให้มาในข้อ 2) แปลงเป็นจำนวนเดือน ด้วยการคูณด้วย 12 แล้วเก็บเอาไว้
// 3.1.เนื่องจากค่าที่ผู้ใช้ให้มาเป็นข้อความ เราเลยต้องแปลงให้มันเป็นตัวเลขก่อน
var years = Convert.ToInt32(yearText);
// 3.2.นำจำนวนปีที่ผู้ใช้ให้มาคูณด้วย 12 แล้วเก็บเอาไว้
var months = years * 12;
// 4.นำ (จำนวนที่เก็บไว้ในข้อ 3) มาคูณกับ (เงินเก็บต่อเดือนในข้อ 1) แล้วเก็บเอาไว้เป็นผลลัพท์
var result = months * moneyPerMonth;
// 5.พิมพ์ผลลัพท์ออกทางหน้าจอ
Console.WriteLine(result);
อธิบายการทำงาน
- เมื่อโปรแกรมเริ่มทำงาน ก็จ ะหยุดรอให้ผู้ใช้ป้อนค่าเข้ามา
- ป๋มป้อนเล่น 5 ลงไป แล้วกด Enter
- โปรแกรมก็ส่งผลลัพท์กลับมาเป็น 7200 (ซึ่งมาจากจาก 5 x 12 x 120 ที่เราเขียนไว้จากโค้ดทั้งหมดนั่นเอง)
การที่เราเปิดให้ผู้ใช้พิมพ์ข้อมูลเข้ามาให้เราได้นั้นอาจจะทำให้โปรแกรมเราพังก็ได้ เนื่องจากการพิมพ์นั้นเขาสามารถพิมพ์อะไรเข้ามาก็ได้ ซึ่งมันอาจจะไม่ใช่แค่ตัวเลขก็ได้ เช่นข้อความ "Hello" ไรงี้ ซึ่งเมื่อนำสิ่งที่ไม่ใช่ตัวเลขส่งให้ไปคำสั่ง Convert.ToInt32
ในบรรทัดที่ 9 ก็จะทำให้โปรแกรมพังเนื่องจาก ระบบไม่สามารถแปลงข้อความให้เป็นตัวเลขได้นั่นเองขอรับ ส่วนว ิธีการรับมือกับเรื่องนี้จะอยู่ในบทความถัดไปขอรับ 😎
😅ตกแต่งโปรแกรมทำไง
จากโค้ดตัวอย่างด้านบนจะเห็นว่า ถ้าอยู่ๆมีคนเอาโปรแกรมนี้มาให้เราลองใช้ โดยที่เขาไม่อธิบายอะไรเลย เราก็น่าจะใช้งานไม่เป็น เพราะ ผู้ใช้จะไม่เข้าใจขั้นตอนการทำงานเลย อย่างเช่น ทำไมโปรแกรมมั่นไม่ทำอะไรเลย? เพราะผู้ใช้ไม่รู้ว่าต้องกรอกข้อมูล หรือต่อให้กรอกแล้ว ก็ไม่เข้าใจว่าเลข 7200 ที่ได้มันคืออะไรนั่นเอง ... ซึ่งเรื่องนี้สามารถแก้ได้โดย อธิบายสิ่งที่กำลังทำผ่านคำสั่ง Console.WriteLine ได้ โดยป๋มแก้โค้ดนิดโหน่ยตามที่ ไฮไลท์
ไว้ด้านล่างนี้เยย
Console.WriteLine("This program will calculate monthly savings of 120 baht.");
Console.WriteLine("- - - - - - - - - - - - - - - - - - - - - - - - - - - - ");
// 1.กำหนดให้ (เงินเก็บต่อเดือน) มีค่าเป็น 120
var moneyPerMonth = 120;
// 2.ถามผู้ใช้ว่าจะให้ผ่านไปกี่ปี แล้วเก็บค่านั้นไว้
Console.WriteLine("How many years of savings do you want to calculate?");
Console.Write("Years: ");
var yearText = Console.ReadLine();
// 3.นำ (จำนวนปีที่ผู้ใช้ให้มาในข้อ 2) แปลงเป็นจำนวนเดือน ด้วยการคูณด้วย 12 แล้วเก็บเอาไว้
// 3.1.เนื่องจากค่าที่ผู้ใช้ให้มาเป็นข้อความ เราเลยต้องแปลงให้มันเป็นตัวเลขก่อน
var years = Convert.ToInt32(yearText);
// 3.2.นำจำนวนปีที่ผู้ใช้ให้มาคูณด้วย 12 แล้วเก็บเอาไว้
var months = years * 12;
// 4.นำ (จำนวนที่เก็บไว้ในข้อ 3) มาคูณกับ (เงินเก็บต่อเดือนในข้อ 1) แล้วเก็บเอาไว้เป็นผลลัพท์
var result = months * moneyPerMonth;
// 5.พิมพ์ผลลัพท์ออกทางหน้าจอ
Console.Write("The savings for ");
Console.Write(years);
Console.Write(" years is ");
Console.Write(result);
Console.WriteLine(" Baht.");
ผลลัพท์
This program will calculate monthly savings of 120 baht.
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
How many years of savings do you want to calculate?
Years: 5
The savings for 5 years is 7200 Baht.
จากตัวอย่างด้านบน ป๋มแอบใส่คำสั่งใหม่ลงไปด้วยนั่นคือ Console.Write ซึ่งเป็นการสั่งให้คอมพิมพ์ข้อความออกหน้าจอโดยไม่ขึ้นบรรทัดใหม่ ซึ่งจะต่างจากคำสั่ง Console.WriteLine ตรงที่มันมันจะขึ้นบรรทัดใหม่ให้อัตโนมัตินั่นเอง ... เพื่อความเข้าใจที่ชัดเจนขึ้นลองดูตัวอย่างด้านล่างนะ
- Console.WriteLine — ขึ้นบรรทัดใหม่ให้อัตโนมัติ
Console.WriteLine("Hi there, ");
Console.WriteLine("My name is ");
Console.WriteLine("Saladpuk");ผลลัพท์
Hi there,
My name is
Saladpuk - Console.Write — ไม่มีการขึ้นบรรทัดใหม่
Console.Write("Hi there, ");
Console.Write("My name is ");
Console.Write("Saladpuk");ผลลัพท์
Hi there, My name is Saladpuk
😢มีวิธีแต่งข้อความง่ายๆไหม
จากโค้ดตัวอย่างจะเห็นว่า เวลาที่เราจะแต่งให้การแสดงผลมันออกมาสวยๆ แบบข้อความ The savings for 5 years is 7200 Baht.
เราก็จะต้องใช้ Console.Write
หรือ Console.WriteLine
ผสมๆกันไปเรื่อยๆ ซึ่งน่าจะไม่ใช่เรื่องสนุกสำหรับเดฟแน่นวล 😭 (ตัวอย่างโค้ดด้านล่าง)
var years = 5;
var result = 7200;
// พิมพ์ผลลัพท์สวยๆออกทางหน้าจอ
Console.Write("The savings for ");
Console.Write(years);
Console.Write(" years is ");
Console.Write(result);
Console.WriteLine(" Baht.");
เพื่อความง่ายต่อชีวิตเดฟของพวกเรา เพื่อนๆสามารถแต่งข้อความสวยๆได้จากวิธีด้านล่างนี้
-
ใส่เครื่องหมาย
$
Dollar sign (อ่านว่าดอลล่าร์-ไซน์
) ไว้ด้านหน้าเครื่องหมายฟันหนู แบบนี้$""
-
พิมพ์ข้อความที่เราอยากแสดงผลล งไปตามปรกติ
- ตัวอย่าง
$"The savings for X years is Y Baht."
- ตัวอย่าง
-
จากข้อ 2 ให้เปลี่ยนค่า
X
กับY
ให้เป็นชื่อตัวแปรของเรา แล้วครอบด้วย{}
- ตัวอย่าง
$"The savings for {years} years is {result} Baht."
- ตัวอย่าง
-
ลองเอาไปแทนที่โค้ดเดิม แล้วรันดู 🥳
var years = 5;
var result = 7200;
// พิมพ์ผลลัพท์สวยๆออกทางหน้าจอ
Console.WriteLine($"The savings for {years} years is {result} Baht.");ผลลัพท์
The savings for 5 years is 7200 Baht.
เรื่องการแต่งข้อความสวยๆแบบนี้ ในภาษา C# เรียกว่า String Interpolation
ตัวโปรแกรมจะเอาตัวแปรมาใส่ไว้ในข้อความที่ถูกครอบด้วยเครื่องหมาย {ตัวแปรที่ระบุ}
ให้โดยอัตโนมัติ ซึ่งวิธีนี้เป็นการทำงานกับข้อความที่เหมาะสมมากๆ ไม่ทำให้เกิดปัญหาเรื่อง performance อีกด้วย (มันมีปัญหายังไงเดี๋ยวไปอ่านในบทของ string ต่อได้เยย 😎) และนอกจากวิธีนี้ก็ยังมีวิธีแต่งแบบอื่นๆอีกนะ เดี๋ยวค่อยๆเรียนรู้กันไปเรื่อยๆในบทถัดๆไปงับป๋ม
🥳สรุป
- ในบทฟามนี้เราก็จะได้เรียนว่า เราต้องบอกวิธีคิดทุกขั้นตอนให้คอมเอาไปใช้ใ นการหาคำตอบ โดยผ่านการใช้คำสั่งพื้นฐาน
บวก ลบ คูณ หาร และ การกำนหนดค่าให้ตัวแปร
โดยมีสิ่งที่ต้องจำเพิ่มว่า- การคูณ ในการเขียนโค้ดจะใช้เครื่องหมาย
*
(ดอกจันทร์) - การหาร ในการเขียนโค้ดจะใช้เครื่องหมาย
/
(สแลช) - การกำหนดค่าให้ตัวแปร ในการเขียนโค้ดจะเครื่องหมาย
=
(เท่ากับ)
- การคูณ ในการเขียนโค้ดจะใช้เครื่องหมาย
- สามารถให้ผู้ใช้ป้อนข้อมูลเข้ามา ได้จากคำสั่ง Console.ReadLine() ซึ่งสิ่งที่ได้กลับมาจะเป็น string เสมอ แม้ว่าผู้ใช้จะพิมพ์ตัวเลขเข้ามาก็ตาม
- การแปลง string ให้เป็น int อาจทำให้โปรแกรมพังได้ เช่น ใส่ค่าที่ไม่ใช่ตัวเลขเข้ามา
Convert.ToInt32("One")
ซึ่งในบทถัดไปจะมาดูวิธีจัดการเรื่องนี้ - สามารถพิมพ์ข้อความโดยไม่ขึ้นบรรทัดใหม่ได้ จากคำสั่ง Console.Write()
- สามารถแต่งข้อความโดยเอาตัวแปรไปแทรกได้ โดยใช้เครื่องหมาย
$
ใส่ด้านหน้าตัวฟันหนู ส่วนตัวแปรที่จะแทรกให้เอาไปพิมพ์ในข้อความได้เลย แล้วครับด้วย{}
เช่น$"Hello, {name}"