Skip to content

Commit ea04d55

Browse files
narzegitbook-bot
authored andcommittedFeb 15, 2021
GitBook: [main] 28 pages and 2 assets modified
1 parent 61a8159 commit ea04d55

8 files changed

+72
-21
lines changed
 
File renamed without changes.

‎SUMMARY.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@
2828
* [ตัวเลข และชุดอักขระ](courses/ruby/numbers-and-string.md)
2929
* [เมธอด](courses/ruby/methods.md)
3030
* [ตัวแปร](courses/ruby/variables.md)
31-
* [ตัวแปร \(เฉลยแบบฝึกหัด\)](courses/ruby/undefined.md)
31+
* [ตัวแปร \(เฉลยแบบฝึกหัด\)](courses/ruby/variables-practice-solutions.md)
32+
* [ประเภทข้อมูลต่างๆ](courses/ruby/data-types.md)
3233

3334
## ลิงก์
3435

‎courses/ruby/data-types.md

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# ประเภทข้อมูลต่างๆ
2+
3+
ก่อนที่จะไปต่อกันเรื่องการใช้งาน จะขออธิบายกันเรื่องประเภทต่างๆ ของข้อมูลในภาษา Ruby ก่อน ทั้งนี้จะรวมถึงประเภทที่ได้กล่าวถึงไปแล้วก่อนหน้านี้ เช่นตัวเลขและสตริง เพื่อเป็นการทบทวนความรู้ไปด้วย
4+
5+
{% hint style="info" %}
6+
ประเภทข้อมูลทุกอย่างสามารถเก็บไว้ใน[ตัวแปร](variables.md) เพื่อนำมาใช้ซ้ำ หรือเปลี่ยนค่าในภายหลังได้
7+
{% endhint %}
8+
9+
### ตัวเลข
10+
11+
ตัวเลขทั้งแบบจำนวนเต็ม \(**Integer** หรือ **Fixed**\) และตัวเลขแบบทศนิยม \(**Float** หรือ **Double** หรือ **Decimal**\) ใช้ในการคำนวณทางคณิตศาสตร์ต่างๆ
12+
13+
### สตริง
14+
15+
สตริง หรือชุดขักขระ ไว้เก็บตัวอักษร ครอบด้วย `" "` หรือ `' '`
16+
17+
### ค่าความจริง / เท็จ \(Boolean : บูเลียน\)
18+
19+
Boolean เป็นค่าความจริงหรือเท็จตามแบบตรรกศาสตร์ ซึ่งแทนด้วย
20+
21+
* `true` \(จริง\)
22+
* `false` \(เท็จ
23+
24+
มักใช้ในการเขียนเงื่อนไขเช่น `if` / `else` ซึ่งจะสอนในบทถัดไป
25+
26+
### อาร์เรย์ \(Array\)
27+
28+
ใช้เก็บข้อมูลแบบกลุ่ม เช่นรายซื่อของคนหลายๆ คน หรือเก็บค่าสีต่างๆ เป็นต้น
29+
30+
### แฮช \(Hash\)
31+
32+
ใช้เก็บข้อมูลเป็นแบบ Key-Value เช่น `{name: "Ruby", version: 3.0}` คือข้อมูลที่ `name` ชี้ไป `"Ruby"` , `version` ชี้ไป `3.0`
33+
34+
### nil
35+
36+
`nil` เปรียบเสมือน "ว่างเปล่า" หรือ "ไม่มีข้อมูล" \(ภาษาอื่นๆ มักใช้คำว่า `null`\)
37+
38+
39+
40+
ในบทหน้าจะเริ่มลงรายละเอียดจากข้อมูลประเภทบูเลียน และวิธีการใช้งานกับการเขียนเงื่อนไข `if-else`
41+

‎courses/ruby/methods.md

+8-7
Original file line numberDiff line numberDiff line change
@@ -4,48 +4,49 @@
44

55
ในบทนี้เราจะมาเรียนรู้กันถึงเมธอด และการใช้เมธอดของสตริงกัน
66

7-
### เมธอด \(Method\)
7+
## เมธอด \(Method\)
88

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

1111
> บางครั้งอาจเรียกว่า "ฟังก์ชั่น" \(Function\) ในการเรียนขั้นพื้นฐานนี้ จะถือว่าเป็นสิ่งเดียวกันก็ได้ครับ
1212
1313
การเรียกใช้เมธอดนั้น จะอยู่ในรูปแบบของตัวจุด `.` แล้วตามด้วยชื่อของเมธอดนั้น \(ในบทที่แล้วเราจะเห็น `.to_f`, `.to_i` ซึ่งก็เป็นเมธอดเช่นกัน\) ซึ่งในการเขียนภาษา Ruby เราจะมีเมธอดต่างๆ ให้เราเลือกใช้มากมาย
1414

15-
### ตัวอย่างเมธอดของสตริง
15+
## ตัวอย่างเมธอดของสตริง
1616

1717
เมธอดของสตริง หมายถึงชุดคำสั่งที่สามารถแปลงค่าของสตริง ให้เป็นอย่างอื่นได้
1818

19-
#### แปลงตัวพิมพ์เล็กเป็นตัวพิมพ์ใหญ่ ด้วย upcase
19+
### แปลงตัวพิมพ์เล็กเป็นตัวพิมพ์ใหญ่ ด้วย upcase
2020

2121
ใช้เมธอด `.upcase` เพื่อแปลงสตริงเป็นตัวพิมพ์ใหญ่ทั้งหมด
2222

2323
{% embed url="https://repl.it/@narze/string-and-methods-upcase?lite=true" caption="upcase แปลงสตริงเป็นตัวพิมพ์ใหญ่" %}
2424

25-
#### แปลงตัวพิมพ์ใหญ่เป็นตัวพิมพ์เล็ก ด้วย downcase
25+
### แปลงตัวพิมพ์ใหญ่เป็นตัวพิมพ์เล็ก ด้วย downcase
2626

2727
ในทางกลับกัน ถ้าอยากได้ตัวพิมพ์เล็กทั้งหมด ก็เปลี่ยนเป็น `.downcase` แทน
2828

2929
{% embed url="https://repl.it/@narze/string-and-methods-downcase?lite=true" caption="downcase แปลงสตริงเป็นตัวพิมพ์เล็ก" %}
3030

31-
#### กลับหัวกลับหางสตริง ด้วย reverse
31+
### กลับหัวกลับหางสตริง ด้วย reverse
3232

3333
ใช้ `.reverse` เพื่อกับด้านสตริง \(ตัวแรกจะเป็นตัวสุดท้าย ไล่กลับมาเรื่อยๆ\)
3434

3535
{% embed url="https://repl.it/@narze/string-and-methods-reverse?lite=true" caption="reverse กลับด้านสตริง" %}
3636

37-
### วงเล็บหายไปไหน? 🧐
37+
## วงเล็บหายไปไหน? 🧐
3838

3939
หากเคยใช้งานภาษาเขียนโปรแกรมอื่นๆ มา อาจสงสัยว่า ทำไมการเรียกใช้เมธอดถึงไม่มีวงเล็บ `()` ด้านหลังชื่อเมธอดล่ะ คำตอบก็คือ เพื่อความสวยงามนั่นเอง
4040

4141
จริงๆ แล้วจะใส่ก็ได้นะ แต่เขาไม่นิยมใช้กัน ถ้าไม่จำเป็น
4242

4343
{% embed url="https://repl.it/@narze/string-and-methods-parentheses?lite=true" caption="ใส่วงเล็บหลังเมธอด หรือไม่ใส่ก็ได้ ค่าเท่ากัน" %}
4444

45-
### การต่อเมธอด \(Method Chaining\)
45+
## การต่อเมธอด \(Method Chaining\)
4646

4747
เราสามารถที่จะนำเมธอดมาต่อกันได้ เช่นถ้าเราต้องการแปลงให้เป็นตัวพิมพ์ใหญ่ และกลับด้านสตริงไปพร้อมๆ กัน ก็ให้พิมพ์เมธอดต่อท้ายกันได้เลย
4848

4949
{% embed url="https://repl.it/@narze/string-and-methods-chaining?lite=true" caption="การนำเมธอดมาต่อกัน \(.reverse.reverse คือกลับด้านสองครั้ง จึงได้ค่ากลับมาเหมือนเดิม\)" %}
5050

5151
เมธอดของสตริงนั้น[ยังมีอีกมากมาย](https://docs.ruby-lang.org/en/3.0.0/String.html) และของข้อมูลประเภทอื่นๆ ก็ยังมีอีกมาก แต่ในบทต่อไปเราจะแนะนำการสร้างและใช้งานตัวแปร พร้อมกับรู้จักข้อมูลพื้นฐานประเภทอื่นๆ กันให้ครบก่อน
52+

‎courses/ruby/prepare-to-learn.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
ในบทเรียนใหม่ๆ \(ตั้งแต่บท [เมธอด](methods.md) โค้ดตัวอย่างจะใช้ Repl แบบ Embed ที่ผู้เรียนสามารถทดลองแก้ไขและรันแบบสดๆ บนเว็บนี้ได้เลย โดยการรันสามารถกดปุ่ม ▶️ และดูผลได้จาก Console
66

7-
{% embed url="https://repl.it/@narze/repl-example?lite=true" %}
7+
{% embed url="https://repl.it/@narze/repl-example?lite=true" caption="" %}
88

99
แต่ถ้าหากอยากเขียนบนเว็บในรูปแบบอื่นๆ ดูต่อที่ด้านล่างได้เลย 👀
1010

@@ -51,3 +51,4 @@ irb
5151
```text
5252
ruby hello.rb
5353
```
54+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# ตัวแปร \(เฉลยแบบฝึกหัด\)
2+
3+
{% embed url="https://repl.it/@narze/variables-practice-solution?lite=true" caption="" %}
4+
5+
จากแบบฝึกหัด เราจะต้องสร้างตัวแปรเพื่อเก็บตัวเลข โดยการสร้าง `a, b, c และ d` ขึ้นมา โดย `d` จะเป็นการนำค่า `a` มาคูณกับ `b` และลบด้วย `c` อีกทีหนึ่ง จึงจะได้จำนวนแอปเปิลที่ยังไม่เสีย
6+

‎courses/ruby/variables.md

+12-11
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66

77
ถ้าจะอธิบายเป็นภาษาชาวบ้าน ตัวแปรก็เป็นแค่กล่องเก็บของนั่นเอง 📦
88

9-
### การสร้างตัวแปร
9+
## การสร้างตัวแปร
1010

1111
การสร้างตัวแปร \(บ้างอาจเรียก การ "ประกาศ" ตัวแปร\) ทำได้โดยการตั้งชื่อของตัวแปร ตามด้วยเครื่องหมายเท่ากับ `=` แล้วตามด้วยค่าของข้อมูลทางด้านขวา
1212

13-
{% embed url="https://repl.it/@narze/variables-declare?lite=true" %}
13+
{% embed url="https://repl.it/@narze/variables-declare?lite=true" caption="" %}
1414

1515
จากตัวอย่างด้านบน เป็นการประกาศตัวแปร 3 ตัว ได้แก่ :
1616

@@ -28,11 +28,11 @@
2828

2929
เมื่อเราประกาศตัวแปรเสร็จแล้ว ลองใช้คำสั่ง `puts` กับตัวแปรเหล่านี้ดู
3030

31-
{% embed url="https://repl.it/@narze/variables-puts?lite=true" %}
31+
{% embed url="https://repl.it/@narze/variables-puts?lite=true" caption="" %}
3232

3333
นอกจากนี้ เรายังนำตัวแปรมาใช้ซำ้ได้ เช่นการใช้ตัวแปรมาบวกเลขกัน หรือเรียก[เมธอด](methods.md#method)กับตัวแปรสตริง เป็นต้น
3434

35-
{% embed url="https://repl.it/@narze/variables-methods?lite=true" %}
35+
{% embed url="https://repl.it/@narze/variables-methods?lite=true" caption="" %}
3636

3737
จากตัวอย่างด้านบน เป็นการใช้งานตัวแปร ได้แก่ :
3838

@@ -47,7 +47,7 @@
4747

4848
\`Traceback \(most recent call last\): \`
4949

50-
``1: from main.rb:8:in `<main>'`
50+
```1: from main.rb:8:in``'\`
5151

5252
`main.rb:8:in`+': no implicit conversion of Integer into String \(TypeError\) exit status 1
5353

@@ -58,7 +58,7 @@
5858

5959
ซึ่งถ้าจะแก้ไขปัญหาของโค้ดส่วนนี้ จะต้องทำการแปลงค่า `x` ให้เป็นสตริงก่อน ด้วยเมธอดการแปลงค่าเป็นสตริง `.to_s` ซึ่งเมื่อเราแปลงแล้ว การบวกสตริงสองตัวเข้าด้วยกัน จะนับเป็นการเอาคำมาต่อท้ายนั่นเอง
6060

61-
{% embed url="https://repl.it/@narze/variables-methods-fix?lite=true" %}
61+
{% embed url="https://repl.it/@narze/variables-methods-fix?lite=true" caption="" %}
6262

6363
{% hint style="info" %}
6464
การแปลงประเภทข้อมูลในภาษา Ruby จะเป็นเมธอดที่นิยมตั้งชื่อเป็นรูปแบบของ `.to_*` เช่น
@@ -68,30 +68,31 @@
6868
* แปลงเป็นตัวเลขแบบทศนิยม \(To Float\) ใช้ `.to_f`
6969
{% endhint %}
7070

71-
### การเขียนค่าซำ้ในตัวแปร หรือประกาศตัวแปรใหม่
71+
## การเขียนค่าซำ้ในตัวแปร หรือประกาศตัวแปรใหม่
7272

7373
จากตัวอย่างก่อนหน้านี้ จะเห็นว่าเมื่อประกาศตัวแปรไปแล้ว ค่าจะเป็นเท่าเดิมเสมอแม้ว่าจะมีการใช้ซำ้ในหลายๆ บรรทัดก็ตาม
7474

7575
แต่ถ้าเราทำการประกาศตัวแปรโดยใช้ชื่อเดิม จะถือว่าเป็นการล้างค่าตัวแปรเดิมไปเลย ตามตัวอย่างโค้ดด้านล่างนี้
7676

77-
{% embed url="https://repl.it/@narze/variables-methods-redeclare?lite=true" %}
77+
{% embed url="https://repl.it/@narze/variables-methods-redeclare?lite=true" caption="" %}
7878

7979
เมื่อถึงบรรทัด `puts x` จะได้ค่าออกมาเป็น `3` เพราะเราทำการประกาศซำ้หลายครั้ง ทำให้ค่าเดิมถูกล้างไป และครั้งสุดท้ายที่ประกาศคือ `x = 3`
8080

8181
นอกจากนี้เรายังสามารถใช้ค่าจากตัวแปรเดิมในทางด้านขวา เพื่อกำหนดค่าใหม่ได้อีกด้วย
8282

83-
{% embed url="https://repl.it/@narze/variables-methods-redeclare-1?lite=true" %}
83+
{% embed url="https://repl.it/@narze/variables-methods-redeclare-1?lite=true" caption="" %}
8484

8585
เมื่อถึงบรรทัด `puts x` จะได้ค่าออกมาเป็น `6` ถ้าเราแจกแจงแต่ละบรรทัด `x` จะถูกเปลี่ยนค่าดังนี้
8686

8787
* `x = 1` ทำให้ `x` มีค่าเป็น `1`
8888
* `x = x + 2`เป็นการประกาศ `x` ใหม่ แต่จากบรรทัดที่แล้ว `x` มีค่า `1` ทำให้ในบรรทัดนี้ `x` มีค่าเป็น `1 + 2` เท่ากับ `3`
8989
* `x = x + 3` เป็นการประกาศ `x` ใหม่อีกครั้ง แต่จากบรรทัดที่แล้ว `x` มีค่า `3` ทำให้ในบรรทัดนี้ `x` มีค่าเป็น `3 + 3` เท่ากับ `6`
9090

91-
### แบบฝึกหัด การใช้ตัวแปร
91+
## แบบฝึกหัด การใช้ตัวแปร
9292

9393
โจทย์ : มีตะกร้าผลไม้ทั้งหมด `5` ใบ ใบหนึ่งมีแอปเปิล `4` ลูก แต่มีแอปเปิลเสียไป `3` ลูกจากทั้งหมด จงหาว่าเหลือแอปเปิลที่ยังไม่เสียกี่ลูก ให้โปรแกรมตอบว่า `เหลือแอปเปิล 17 ลูก` โค้ดที่ให้จะยังมี Error อยู่ จงแก้โค้ดให้ทำงานได้และตอบคำถามได้ถูกต้อง โดยการสร้างตัวแปร `a, b, c และ d`
9494

95-
{% embed url="https://repl.it/@narze/variables-practice?lite=true" %}
95+
{% embed url="https://repl.it/@narze/variables-practice?lite=true" caption="" %}
9696

9797
ดูเฉลยได้ในบทถัดไป
98+

‎courses/typescript-101/create-simple-web-with-typescript.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ fetch("https://randomuser.me/api")
4242

4343
ใน Editor ให้กดที่ปุ่ม Console เพื่อดูค่าที่ Log ไว้
4444

45-
![](../../.gitbook/assets/image%20%2818%29.png)
45+
![](../../.gitbook/assets/image%20%2818%29%20%281%29.png)
4646

4747
จะเห็นว่า ข้อมูลของ `console.log(res)` เป็น Object ที่มีรูปร่างแบบนี้
4848

0 commit comments

Comments
 (0)
Please sign in to comment.