การเรียนรู้ภาษาโปรแกรมใหม่เป็นเรื่องสนุก เมื่อใดก็ตามที่ฉันพยายามเรียนรู้สิ่งใหม่ ฉันจะมุ่งเน้นไปที่การกำหนดตัวแปร การเขียนข้อความ และการประเมินนิพจน์ เมื่อฉันมีความเข้าใจทั่วไปเกี่ยวกับแนวคิดเหล่านั้นแล้ว ฉันมักจะสามารถหาส่วนที่เหลือได้ด้วยตัวเอง ภาษาโปรแกรมส่วนใหญ่มีความคล้ายคลึงกัน ดังนั้นเมื่อคุณรู้ภาษาโปรแกรมหนึ่งแล้ว การเรียนรู้ภาษาถัดไปจึงเป็นเรื่องของการหารายละเอียดที่เป็นเอกลักษณ์และตระหนักถึงความแตกต่างในนั้น
เพื่อช่วยฉันฝึกฝนภาษาการเขียนโปรแกรมใหม่ ฉันชอบเขียนโปรแกรมทดสอบสองสามโปรแกรม ตัวอย่างโปรแกรมหนึ่งที่ฉันเขียนบ่อยคือโปรแกรม "เดาตัวเลข" ง่ายๆ โดยที่คอมพิวเตอร์จะเลือกตัวเลขระหว่าง 1 ถึง 100 และขอให้ฉันเดาตัวเลข โปรแกรมจะวนซ้ำจนกว่าฉันจะเดาถูก
โปรแกรม "เดาจำนวน" ใช้แนวคิดหลายอย่างในภาษาโปรแกรม:วิธีกำหนดค่าให้กับตัวแปร วิธีเขียนคำสั่ง และวิธีดำเนินการประเมินตามเงื่อนไขและวนซ้ำ เป็นการทดลองเชิงปฏิบัติที่ยอดเยี่ยมสำหรับการเรียนรู้ภาษาการเขียนโปรแกรมใหม่
เดาตัวเลขใน Bash
Bash เป็นเชลล์มาตรฐานสำหรับระบบ Linux ส่วนใหญ่ นอกเหนือจากการให้อินเทอร์เฟซผู้ใช้บรรทัดคำสั่งที่สมบูรณ์แล้ว Bash ยังสนับสนุนภาษาการเขียนโปรแกรมที่สมบูรณ์ในรูปแบบของ สคริปต์ .
หากคุณไม่คุ้นเคยกับ Bash ฉันขอแนะนำสิ่งต่อไปนี้:
- ทุบตีคืออะไร
- เริ่มต้นกับการเขียนโปรแกรม Bash
- เริ่มต้นใช้งานสคริปต์ Bash สำหรับผู้ดูแลระบบ
- วิธีเขียนฟังก์ชันใน Bash
- อ่านเพิ่มเติมเกี่ยวกับ Bash
คุณสามารถสำรวจ Bash ได้โดยการเขียนเวอร์ชันของเกม "เดาตัวเลข" นี่คือการใช้งานของฉัน:
#!/bin/bash
number=$(( $RANDOM % 100 + 1 ))
echo "Guess a number between 1 and 100"
guess=0
while [ "0$guess" -ne $number ] ; do
read guess
[ "0$guess" -lt $number ] && echo "Too low"
[ "0$guess" -gt $number ] && echo "Too high"
done
echo "That's right!"
exit 0
การแยกย่อยสคริปต์
บรรทัดแรกในสคริปต์ #!/bin/bash
บอกให้ Linux รันสคริปต์นี้โดยใช้ Bash shell ทุกสคริปต์เริ่มต้นด้วย #!
ตัวละครคู่ ซึ่งระบุว่านี่คือเชลล์สคริปต์ สิ่งที่ตามมาทันที #!
คือเปลือกที่จะเรียกใช้ ในกรณีนี้ /bin/bash
คือเปลือกทุบตี
ในการกำหนดค่าให้กับตัวแปร ให้ระบุชื่อตัวแปรตามด้วย =
เข้าสู่ระบบ. ตัวอย่างเช่น คำสั่ง guess=0
กำหนดค่าศูนย์ให้กับ guess
ตัวแปร
คุณยังสามารถให้ผู้ใช้ป้อนค่าโดยใช้ read
คำแถลง. หากคุณเขียน read guess
, Bash รอให้ผู้ใช้ป้อนข้อความจากนั้นเก็บค่านั้นไว้ใน guess
ตัวแปร
หากต้องการอ้างอิงค่าของตัวแปร ให้ใช้ $
ก่อนชื่อตัวแปร ดังนั้น เมื่อเก็บค่าไว้ใน guess
ตัวแปร คุณสามารถดึงข้อมูลโดยใช้ $guess
.
คุณสามารถใช้ชื่อใดก็ได้ที่คุณต้องการสำหรับตัวแปร แต่ Bash ขอสงวนชื่อตัวแปรพิเศษสองสามชื่อไว้สำหรับตัวมันเอง ตัวแปรพิเศษหนึ่งตัวคือ RANDOM
ซึ่งสร้างตัวเลขสุ่มจำนวนมากทุกครั้งที่คุณอ้างอิง
หากคุณต้องการดำเนินการพร้อมกับเก็บค่า คุณต้องใส่คำสั่งในวงเล็บพิเศษ สิ่งนี้บอกให้ Bash รันคำสั่งนั้นก่อนและ =
เก็บค่าผลลัพธ์ไว้ในตัวแปร ในการประเมินนิพจน์ทางคณิตศาสตร์ ให้ใช้ $(( ))
รอบข้อความของคุณ วงเล็บคู่ระบุ นิพจน์ทางคณิตศาสตร์ . ในตัวอย่างของฉัน number=$(( $RANDOM % 100 + 1 ))
ประเมินนิพจน์ $RANDOM % 100 + 1
แล้วเก็บค่าไว้ใน number
ตัวแปร
ตัวดำเนินการเลขคณิตมาตรฐาน เช่น +
(บวก), -
(ลบ), *
(คูณ), /
(หาร) และ %
(โมดูโล่) สมัคร
นั่นหมายถึงคำสั่ง number=$(( $RANDOM % 100 + 1 ))
สร้างตัวเลขสุ่มระหว่างหนึ่งถึง 100 ตัวดำเนินการโมดูโล (%
) ส่งกลับ ส่วนที่เหลือ หลังจากหารสองตัวเลขแล้ว ในกรณีนี้ Bash จะหารตัวเลขสุ่มด้วย 100 โดยปล่อยให้ส่วนที่เหลืออยู่ในช่วงศูนย์ถึง 99 การเพิ่มหนึ่งลงในค่านั้น คุณจะได้ตัวเลขสุ่มระหว่างหนึ่งถึง 100
Bash รองรับ นิพจน์เงื่อนไข และ การควบคุมการไหล เหมือนลูป ในเกม "เดาตัวเลข" Bash จะวนซ้ำตราบใดที่ค่าอยู่ใน guess
ไม่เท่ากับ number
. หากการเดาน้อยกว่าตัวเลขสุ่ม Bash จะพิมพ์ว่า "ต่ำเกินไป" และหากการเดามากกว่าตัวเลข Bash จะพิมพ์ว่า "สูงเกินไป"
มันทำงานอย่างไร
เมื่อคุณเขียนสคริปต์ Bash แล้ว คุณสามารถเรียกใช้เพื่อเล่นเกม "เดาตัวเลข" ได้ เดาต่อไปจนกว่าคุณจะพบตัวเลขที่ถูกต้อง:
Guess a number between 1 and 100
50
Too high
30
Too high
20
Too high
10
Too low
15
Too high
13
Too low
14
That's right!
ทุกครั้งที่คุณเรียกใช้สคริปต์ Bash จะเลือกหมายเลขสุ่มที่แตกต่างกัน
เกม "เดาตัวเลข" นี้เป็นโปรแกรมเบื้องต้นที่ยอดเยี่ยมเมื่อเรียนรู้ภาษาการเขียนโปรแกรมใหม่ เพราะมันฝึกแนวคิดการเขียนโปรแกรมทั่วไปหลายอย่างด้วยวิธีที่ค่อนข้างตรงไปตรงมา การนำเกมง่ายๆ นี้ไปใช้ในภาษาการเขียนโปรแกรมต่างๆ จะช่วยให้คุณสาธิตแนวคิดหลักและเปรียบเทียบรายละเอียดในแต่ละภาษาได้
คุณมีภาษาโปรแกรมโปรดหรือไม่? คุณจะเขียนเกม "เดาตัวเลข" ได้อย่างไร? ติดตามบทความชุดนี้เพื่อดูตัวอย่างภาษาการเขียนโปรแกรมอื่นๆ ที่คุณอาจสนใจ