Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

เรียนรู้ Bash โดยการเขียนเกมแบบโต้ตอบ

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

เพื่อช่วยฉันฝึกฝนภาษาการเขียนโปรแกรมใหม่ ฉันชอบเขียนโปรแกรมทดสอบสองสามโปรแกรม ตัวอย่างโปรแกรมหนึ่งที่ฉันเขียนบ่อยคือโปรแกรม "เดาตัวเลข" ง่ายๆ โดยที่คอมพิวเตอร์จะเลือกตัวเลขระหว่าง 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 จะเลือกหมายเลขสุ่มที่แตกต่างกัน

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

คุณมีภาษาโปรแกรมโปรดหรือไม่? คุณจะเขียนเกม "เดาตัวเลข" ได้อย่างไร? ติดตามบทความชุดนี้เพื่อดูตัวอย่างภาษาการเขียนโปรแกรมอื่นๆ ที่คุณอาจสนใจ