Tuesday, August 7, 2012

Flow Chart

จากความเดิม Entry ที่แล้ว ผมได้นำเสนอสิ่งที่ต้องเขียนการวางแผนการทำงานก่อนที่เราเรียกว่า อัลกอริทึ่ม ต่อไปเราจะมาเขียนสิ่งที่เรียกว่า "Flow Chart" หรือเรียกโคตรไทย ๆ เลยว่า "รูปสัญลักษณ์แสดงกระบวนการกระทำ" (ดูแล้วชื่อไทยยาวไปนิดนะ)

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

เรามาทำความเข้าใจกับสัญลักษณ์กันก่อนดีกว่า

Terminal - สัญลักษณ์จุดเริ่มต้น และสิ้นสุด


Read - สัญลักษณ์อ่านค่าตั้งค่าต่าง ๆ

Display - แสดงผลออกทางหน้าจอ

Decision - สัญลักษณ์ตัดสินใจ

Process - สัญลักษณ์การทำงาน

Arrow - สัญลักษณ์เส้นทิศทางการไหลของกระบวนการ

Manual Input - สัญลักษณ์การนำเข้าข้อมูลด้วยตัวผู้ใช้

Connector (inner) - สัญลักษณ์แสดงจุดเชื่อมต่อภายใน

Connector (outer) - สัญลักษณ์แสดงจุดเชื่อมต่อภายนอก

                                                                                                                      

จากสัญลักษณ์เบื้องต้นที่กล่าวมานั้น เราก็จะเอามาเขียนกันเป็น Flow Chart ที่แสดงการทำงานจาก Entry ที่แล้วนั่นก็คือวิธีการเดินทางไปโรงเรียนนั่นเอง

1. เดินออกจากบ้าน
2. รอรถเพื่อไปโรงเรียน
2.1 ถ้ามีเงินเยอะ ขึ้นรถมอเตอร์ไซค์รับจ้าง
2.2 ถ้ามีเงินน้อย
2.2.1 ถ้ารถสาย 95 ผ่านมา ถ้าขึ้นรถไปแล้วถึงโรงเรียน ขึ้น
2.3.1 ถ้ารถสาย 26 ผ่านมา ถ้าขึ้นรถไปแล้วไม่ถึงโรงเรียน ไม่ขึ้น
3. รอถึงที่ ถ้าหากถึงที่แล้ว ก็ลงจากรถ
4. เข้าโรงเรียน

เราก็จะเอามาเขียน Flow Chart คร่าว ๆ ได้ดังนี้


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

ขอจบ Entry Flow Chart ไว้ก่อนครับ สวัสดีครับ

Saturday, August 4, 2012

Logic & Algorithm

Logic & Algorithm


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


Logic & Algorithm (ลอจิก & อัลกอริทึ่ม)

Algorithm
มันคืออะไร??? ทำไมต้องรู้ คำตอบก็คือ มันคือกระบวนการทางความคิด และความคิดที่ให้เหตุให้ผล
อย่างเช่น
1 + 1 = 2 เราจะแยกได้ว่า ผลลัพท์ของการบวกนั้นก็คือ 2 และกระบวนการคิดคือ บวก(เพิ่มจำนวน) โดยมี เลข 1 เป็นตัวตั้ง และ 1 อีกตัวเป็นตัวที่เพิ่มขึ้น ผลลัพท์จึงได้ 2 มา
อ่ะ แล้วถ้าเราลองเปลี่ยนมาเป็น 5 + 3 ก็จะ เท่ากับ 8 นั่นเอง

สิ่งที่เป็นกระบวนการคิดนั่นก็คือ วิธีการเพิ่มค่า หรือการบวกนั่นเอง!
อีกตัวอย่างที่อยู่ภายในชีวิตประจำวัน อีกตัวอย่าง เช่น การเดินทางไปโรงเรียน

อย่างแรกที่เราจะต้องคิดกระบวนการหรือกรรมวิธี ที่จะได้ผลลัพท์ มีสิ่งที่เราต้องเข้าใจกันก่อนดังนี้

1. ผลลัพท์ที่ต้องการ
2. สิ่งแวดล้อมที่เรามี
3. สิ่งที่เราต้องการเพื่อแก้ไขปัญหา
4. กระบวนการในการทำ
5. เหตุผลในการตัดสินใจ

พอเรามี 5 สิ่งที่เราเข้าใจกันแล้วเรามาลองจำแนกก่อนที่จะคิดกระบวนการคิดกันดีกว่า

1. ผลลัพท์ที่เราต้องการ [ไปถึงโรงเรียน]
2. สิ่งแวดล้อมที่เรามี [เส้นทาง]
3. สิ่งที่เราต้องการเพื่อแก้ไขปัญหา [รถ,เงิน,การตัดสินใจ,ปัจจัยอื่น ๆ สำหรับเดินทาง]
4. กระบวนการในการทำ [วิธีการเดินทาง เลี้ยวซ้าย ขวา หน้า หลัง ฯลฯ]
5. เหตุผลการตัดสินใจ [เลือกวิธีการ เลือกเส้นทาง]

เราได้ 5 สิ่งครบแล้ว เอาหล่ะ เราจะมาคิดกระบวนการคิดเพื่อที่ว่าเราจะไปโรงเรียนกันอย่างไร

1. เดินออกจากบ้าน
2. รอรถเพื่อไปโรงเรียน
2.1 ถ้ามีเงินเยอะ ขึ้นรถมอเตอร์ไซค์รับจ้าง
2.2 ถ้ามีเงินน้อย
2.2.1 ถ้ารถสาย 95 ผ่านมา ถ้าขึ้นรถไปแล้วถึงโรงเรียน ขึ้น
2.3.1 ถ้ารถสาย 26 ผ่านมา ถ้าขึ้นรถไปแล้วไม่ถึงโรงเรียน ไม่ขึ้น
3. รอถึงที่ ถ้าหากถึงที่แล้ว ก็ลงจากรถ
4. เข้าโรงเรียน

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

Entry ต่อไป จะพูดถึงเรื่องการเขียนแผนผังรูป เพื่อให้มองง่าย ๆ ชัดเจน เพื่อนำไปประกอบกับการเขียนโปรแกรมครับ

Wednesday, August 1, 2012

ชนิดของตัวแปร

** คำเตือน บทความนี้สำหรับผู้เริ่มต้น **

เรื่องระบบตัวแปรภายในคอมพิวเตอร์ที่ใช้เขียนโปรแกรมกันบ่อย ๆ นั้น มีอยู่ 3 ประเภทใหญ่ ๆ นั้นก็คือ
1. ตัวแปรระบบตัวเลข
2. ตัวแปรระบบตัวอักษร หรือสายอักขระ
3. ตัวแปรระบบตรรกะ

1. อย่างแรกที่จะกล่าวถึงนั้นก็คือ ระบบตัวเลข นั้นก็แยกย่อยได้อีก 2 ประเภท คือ จำนวนเต็ม และจำนวนจริง

1.1 จำนวนเต็ม
  • Bit
  • Byte
  • Short Integer
  • Integer
  • Long Integer
Bit มีค่าตั้งแต่ 0 ถึง 1
Byte มีค่าอยู่ที่ ตั้งแต่ -128 ถึง 127
Short Integer (Short) มีค่าอยู่ ตั้งแต่ -32768 ถึง 32767
Integer มีค่าอยู่ตั้งแต่ -2147483648 ถึง 2147483647
Long Integer (Long) มีค่าอยู่ตั้งแต่ -9223372036854775808 ถึง 9223372036854775807

นอกจากนี้ยังมีกลุ่มอีกกลุ่มนึงที่ไม่ติดค่าข้างลบที่เรียกกันว่า "unsigned" จะทำให้สามารถจัดเก็บค่าตัวเลขที่ตัวเลขสามารถทำได้เพิ่มขึ้น ของกลุ่มในบางภาษา ทั้งนี้ขึ้นอยู่กับ บางภาษาอาจจะไม่มี Bit หรือ กลุ่มที่ไม่มีเครื่องหมายก็ได้ ต้องศึกษาในคู่มือของตัวภาษานั้นเองด้วยอีกที

1.2 จำนวนจริง
  • Float
  • Double
Float เป็นกลุ่มจำนวนจริงที่ มีค่าตั้งแต่ 1.4E-45 ถึง 3.4028235E38
Double เป็นจำนวนจริงที่ มีค่าตั้งแต่ 4.9E-324 ถึง 1.7976931348623157E308

โดยค่า E ที่เห็นนั้นคือ ค่าที่เป็น คูณ 10 และต่อมายกกำลัง เช่น ค่าต่ำสุดของ Float 1.4E-45 หมายความว่า มีค่า 1.4 x 10^(-45) (คูณ 10 ยกกำลัง ลบ 45)
แต่โดยปกติกันทั่ว ๆ ไปจะใช้เพียงแค่ทศนิยม 2 ตำแหน่ง หลังจากการเสร็จการคำนวณ โดยการจัดการแสดงผลด้วยสายอักขระ หรือ String (จะพูดหลังบทหลัง ๆ นี้ไป)

** ค่าที่นำมาหยิบยกมานี้อ้างอิงจากภาษา Java **

2. ต่อมาที่เราจะพูดถึงกันนี้จะเป็นตัวแปรในกลุ่มของตัวอักษร
  • Char
  • String

Char เป็นตัวอักษรอักขระ 1 ตัว อย่างเช่น a หรือ b หรือว่าจะเป็น ก ข ค อะไรก็ได้ 1 ตัวอักษร โดยที่ตอนประกาศไว้จะต้องอยู่ในเครื่องหมาย ' ' (single quote) หรือที่เรียกภาษาไทยว่า "ฝนทอง"
String เป็นกลุ่มตัวอักษรอักขระที่เป็นสายยาวกันโดยมีค่า Char รวมตัวกันจนเป็นประโยค โดยประกาศไว้จะต้องอยู่ภายใน เครื่องหมาย " " (double quote) หรือที่เรียกว่า "ฟันหนู"


3. กลุ่มสุดท้ายที่เราจะพูดถึงนั้นก็คือ กลุ่มของ ตรรกะ โดยกลุ่มของตรรกะนี้จะไว้แยกข้อเท็จจริงถูกผิดไว้จะมีแค่ 2 ตัวแปรเท่านั้นคือ
  • True
  • False
True แทนค่า จริง
False แทนค่า เท็จ


โดยการประกาศค่านั้นเราจะต้องใช้ boolean ในการประกาศค่า (อ้างอิงจาก java)


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

First Programming Level : Newbie

สวัสดีครับ อันนี้เป็นบลอกอันแรกที่ลองหัดเขียนขึ้นมา เผื่อว่ามันจะดีอะไรมานำเสนอให้แก่หน้าใหม่ไฟแรง ที่อยากจะเข้าสู่วงการคอมพิวเตอร์ทางด้าน ซอร์ฟแวร์

วันนี้ขอนำเสนอเครื่องมืออำนวยความสะดวกในการเรียนที่ค่อนข้างใช้งานได้ง่าย นั่นก็คือ

 jGRASP นั่นเอง โดยสามารถเข้าไปดาวน์โหลดได้ที่ http://spider.eng.auburn.edu/user-cgi/grasp/grasp.pl?;dl=download_jgrasp.html
โดยลงทะเบียน และดาวน์โหลดมาใช้ มีการรองรับทั้ง windows linux และ mac os


ดูหน้าตาแล้วใช้งานง่ายใช่ไหมหล่ะครับ รวมทั้งยังรองรับ C,C++,VHDL,Objective C, Java และยังจะมี Ada95 อีกด้วยแหน่ะ
ก็หวังเอาไว้ว่า โปรแกรมนี้จะสามารถผลิตโปรแกรมเมอร์หน้าใหม่ ๆ ในการเรียนรู้ การเขียนโปรแกรมนะครับ