วันเสาร์ที่ 29 กรกฎาคม พ.ศ. 2560

ภาษาซีเบื้องต้น ตอนที่ 4 : นิพจน์และการดำเนินการ

นิพจน์และตัวดำเนินการ
นิพจน์ (Expression)
นิพจน์ในที่นี้หมายถึง นิพจน์ทางคณิตศาสตร์ ซึ่งสามารถพบเห็นได้จากสูตรการคำนวณตัวเลขต่างๆ ดังนั้นนิพจน์จึงประกอบด้วย ตัวแปร ค่าคงที่ และตัวดำเนินการทางคณิตศาสตร์ มาประกอบรวมกัน
ตัวอย่างเช่น            ans = 100-50
                              Score = midterm + final + quiz
                              Income = salary + (ot*RATE) + bonus –tax
สูตรคำนวณที่มีความซับซ้อน ต้องระมัดระวังในการจัดอันดับนิพจน์ ตัวดำเนินการต่างๆที่นำมาคำนวณนั้น แต่ละตัวจะมีความสำคัญที่แตกต่างกัน เช่น เมื่อพบเครื่องหมาย + และ * การประมวลผลจะกระทำที่ตัวดำเนินการ * ก่อน เพราะ * จะมีลำดับความสำคัญสูงกว่า + นั้นเอง ตัวอย่างเช่น     result = 5+2*4 คำตอบคือ 13 มิใช่ 28 แต่อย่างใด

ตัวดำเนินการ (Operators)
ตัวดำเนินการพื้นฐานที่สำคัญ มีดังนี้
1. ตัวดำเนินการทางคณิตศาสตร์ 2. ตัวดำเนินการยูนารี  3. ตัวดำเนินการเปรียบเทียบ 4. ตัวดำเนินการตรรกะ
5. ตัวดำเนินการกำหนดค่าแบบผสม 6. ตัวดำเนินการเงื่อนไข

1. ตัวดำเนินการทางคณิตศาสตร์ จัดเป็นตัวดำเนินการพื้นฐาน ที่นำมาใช้เพื่อการคำนวณ เช่น บวก ลบ คูณ หาร และโมดูลัส (หารเอาเศษ) โดยสัญลักษณ์ของตัวดำเนินการดังกล่าว เป็นดังนี้    +  ,  - , *  ,   /  ,  % 
กำหนดให้ a และ b เป็นตัวแปรชนิดเลขจำนวนเต็ม (int) โดยที่ a = 10 และ b = 2 ดังนั้น
a+b = 12    , a-b-3 = 5 ,     a*b = 20 ,  a/b = 5  , a%b = 0

2. ตัวดำเนินการยูนารี ตัวแรกที่จะกล่าวถึงคือ เครื่องหมายลบที่นำหน้าค่าตัวเลข หรือนำหน้าค่าตัวแปร ซึ่งจะส่งผลให้ค่าถูกเปลี่ยนเป็นค่าติดลบโดยทันที่ เช่น -10 , -x เป็นต้น อย่างไรก็ตามเครื่องหมายยูนารีลบดังกล่าว มิใช่ตัวดำเนินการลบแต่อย่างใด
กำหนดให้ a และ b เป็นตัวแปรชนิดเลขจำนวนเต็ม (int) โดยที่ a = 10 และ b = 2 ดังนั้น
a+b =12       ,      -a+b =-8   ,      -a*b = -20    ,      a- -b = 12
สำหรับตัวดำเนินการยูนารีตัวถัดไปที่จะกล่าวก็คือ ตัวดำเนินการเพิ่มค่า และตัวดำเนินการลดค่า ด้วยการใช้เครื่องหมาย เพื่อลดลงทีละหนึ่ง และเครื่องหมาย ++ เพื่อเพิ่มค่าทีละหนึ่ง โดยเขียนนำหน้าตัวแปร (prefix) หรือหลังตัวแปร (postfix) ก็ได้ เช่น ++a หรือ –a
a++ หรือ ++a ซึ่งมีความหมายเดียวกันกับนิพจน์ a = a+1      และ  b++ หรือ --b ซึ่งมีความหมายเดียวกันกับนิพจน์ b = b-1
3. ตัวดำเนินการเปรียบเทียบ ได้แก่ < , <=  , > , >= , == , !=
สำหรับผลลัพธ์จากการเปรียบเทียบ  จะได้ค่า 1 กรณีเงื่อนไขเปรียบเทียบเป็นจริง (True)   จะได้ค่า 0 กรณีเงื่อนไขเปรียบเทียบเป็นเท็จ (False)
ตัวอย่างเช่น   100 > 8 = 1     ,     -5  > 5 =  0    ,           9.0   >  9.01  = 0  ,        9.0  <  9.01 = 1

4. ตัวดำเนินการตรรกะ นอกจากตัวดำเนินการเปรียบเทียบแล้วเรายังสามารถนำตัวดำเนินการตรรกะมาใช้ร่วมกันได้
                                       ได้แก่    && ,  || ,  !   (และ  , หรือ  , ไม่ใช่)
ตัวอย่างเช่น   80 >= 80 && 80 < 90  = 1   ,     80!=80 || 80 >50 = 1     ,   !(80==80) = 0

5. ตัวดำเนินการกำหนดค่าแบบผสม ประกอบด้วย += , -= , *= , /= , %=
นิพจน์ที่เขียนแบบทั่วไป
นิพจน์ที่ใช้ตัวดำเนินการ กำหนดค่าแบบผสม
i=i+5
i+=5
f = f -g
f-=g
j=j*(i-3)
j*=(i-3)
f=f/3
f/=3
i=i%(j-2)
i%=(j-2)

6. ตัวดำเนินการเงื่อนไข นำมาใช้เพื่อทดสอบค่านิพจน์ทางตรรกะ ว่าจริงหรือเท็จ โดยมีรูปแบบดังนี้
expression1 ?    expression2 :     expression3
โดยที่   expression1 หมายถึง นิพจน์เงื่อนไข   expression2 หมายถึง นิพจน์กรณีเป็นจริง    expression3 หมายถึง นิพจน์กรณีเป็นเท็จ
ตัวอย่างเช่น    result = (x<y) ? 0 : 100 ;
หมายความว่า ถ้า x มีค่าน้อยกว่า y
กรณีเป็นจริง ตัวแปร result จะถูกกำหนดค่าให้เป็น 0                          กรณีเป็นเท็จ ตัวแปร result จะถูกกำหนดค่าให้เป็น 100
ตัวดำเนินการกับลำดับความสำคัญ
ลำดับความสำคัญ
ตัวดำเนินการ
ความหมาย
1
( )
เครื่องหมายวงเล็บ
2
++ , --
ตัวดำเนินการเพิ่มค่า/ลดค่า
3
                -,!
ยูนารีลบ และ ตรรกะ NOT
4
*,/,%
คูณ หาร โมดูลัส
5
+,-
บวก  ลบ

ตัวอย่างเช่น         ans = 2*3/4+4/4+8-2+5/8 = ?       
คำตอบคือ 8  (งงไหมคิดยังไง ลองคิดดีๆ ตัวดำเนินการไหนสำคัญกว่าทำอันนั้นก่อน) 

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

วันศุกร์ที่ 21 กรกฎาคม พ.ศ. 2560

ภาษาซีเบื้องต้น ตอนที่ 3 : โครงสร้างภาษาซี ตัวแปร ชนิดข้อมูล

โครงสร้างภาษาซี

กฎเกณฑ์การเขียนโปรแกรมภาษาซี
1.ที่ส่วนหัวโปรแกรม จะต้องกำหนดตัวประมวลผลก่อนเสมอ   ตัวอย่างเช่น  #include<stdio.h> เพื่อใช้งานฟังก์ชั่นเกี่ยวกับการรับค่า (input) หรือแสดงผลข้อมูล (output) 
2.ชุดคำสั่งในภาษาซี  จะต้องใช้อักษรพิมพ์เล็กทั้งหมด
3.ตัวแปรที่ใช้งาน จะต้องประกาศชนิดข้อมูลไว้เสมอ
4.ภายในโปรแกรม จะต้องมีอย่างน้อยหนึ่งฟังก์ชั่นเสมอ ซึ่งก็คือ ฟังก์ชั่น main()
5.สามารถใช้เครื่องหมายปีกกาเปิด { เพื่อบอกจุดเริ่มต้นของชุดคำสั่ง และเครื่องหมายปีกกาปิด } เพื่อบอกจุดสิ้นสุดของชุดคำสั่ง โดยสามารถมีเครื่องหมายปีกกาซ้อนย่อยอยู่ภายในได้ 
6.เมื่อเขียนชุดคำสั่งเสร็จแล้ว ต้องจบด้วยเครื่องหมาย ; (semicolon)
7.สามารถอธิบายโปรแกรมตามความจำเป็นด้วยการใช้เครื่องหมาย /* … */  หรือ //

เพิ่มเติม .. 


ตัวแปร (Variables)
       ตัวแปร  จะนำมาใช้เพื่อจัดเก็บและใช้งานในโปรแกรม โดยค่าข้อมูลที่บันทึกอยู่ในตัวแปรนั้น จะถูกจัดเก็บไว้ในหน่วยความจำหลักที่สามารถนำไปประมวลผล และอ้างอิงภายในโปรแกรมได้  
กฎการตั้งชื่อตัวแปร
1.สามารถใช้ตัวอักษร A ถึง Z รวมทั้งตัวเลข 0 ถึง 9 และเครื่องหมาย _ (Underscore) มาใช้เพื่อการตั้งชื่อตัวแปร ตัวอย่างเช่น 1digit ถือว่าผิด แต่ถ้าตั้งใหม่เป็น digit1 หรือ digit_1 ถือว่าถูกต้อง
2.ชื่อตัวแปรสามารถมีความยาวได้ถึง 31 ตัวอักษร (กรณีเป็น ASCI-C)
3.ชื่อตัวแปร ต้องไม่มีช่องว่าง เช่น  My  Name ถือว่าผิด  ให้ตั้งติดกัน MyName หรือ My_Name
4.ชื่อตัวแปร ต้องไม่มีตัวอักษรพิเศษต่างๆ เช่น  +  -  *  /  ,  %  $   #     ฯลฯ
5.ชื่อตัวแปรต้องไม่ตรงกับคำสงวน (Reserved Words) ซึ่งถือว่าเป็นชุดคำสั่งที่ใช้ในภาษาซีนั้นเอง 
คำสงวนมีดังนี้
auto      extern       sizeof         break       float      static     case     for    struct    char      goto      switch    const     if       typedef      continue     int      union      default       long      unsigned     do     register  void    double    return      volatile   else    short      while      enum     signed



เฉลย



ชนิดข้อมูล
ในภาษาซีจะมีชนิดข้อมูลหลักๆดังนี้ 
1. char  ข้อมูลชนิดตัวอักษร         ช่วงข้อมูล -128 ถึง 127      (bits ที่ใช้  8    ใช้เนื้อที่ 1  byte)
2. int    ข้อมูลชนิดเลขจำนวนเต็ม     ช่วงข้อมูล -32,768 ถึง 32,767     (bits ที่ใช้  16  ใช้เนื้อที่ 2  byte)
3. float  ข้อมูลชนิดเลขจำนวนจริงมีทศนิยม  ช่วงข้อมูล -1.1E-38 ถึง 3.4E+38   (bits ที่ใช้  32   ใช้เนื้อที่ 4  byte)
4. double  ข้อมูลชนิดเลขจำนวนจริง 2 เท่า     ช่วงข้อมูล 2.2E-308 ถึง 1.7E+308  (bits ที่ใช้  64  ใช้เนื้อที่ 8  byte)
อ้างอิง bits byte
รูปแบบการประกาศตัวแปร
การประกาศตัวแปร สามารถทำได้ 2 แบบ คือ แบบไม่กำหนดค่า และแบบกำหนดค่า(มีเครื่อง=ตามด้วยค่าที่ต้องการ)
ชนิดข้อมูล       ชื่อตัวแปร;
ชนิดข้อมูล       ชื่อตัวแปร=ค่า;

ตัวอย่าง ให้ประกาศตัวแปรตามที่โจทย์กำหนด

เฉลย 
พอจะเข้าใจไหมครับ การประกาศตัวแปร คือ โจทย์ต้องการอะไร ดูก่อนว่าเก็บข้อมูลแบบไหน ตัวเลข ทศนิยม หรือตัวอักษร มีแค่ 4 อย่างหลักๆ (int float double char) จริงๆมีย่อยอีก แต่ขอไม่พูดถึง แค่ 4อย่างนี้ก็เพียงพอสำหรับการเริ่มต้น 
ข้อแรก ชนิดข้อมูลให้มาแล้วกับชื่อตัวแปร เวลาประกาศตัวแปร คือ เริ่มต้นด้วยชนิดข้อมูล  int จากนั้นเว้นวรรคอย่างน้อย 1 ครั้งและตามด้วยชื่อตัวแปรจากโจทย์กำหนดคือ number ก็จะได้  int  number; จบด้วยเครื่องหมาย semicolon 
ข้อสอง มีการกำหนดค่า และเลข 5 ก็ควรประกาศชนิดข้อมูล int ชื่อตัวแปรแล้วแต่ ข้อแค่ให้ตั้งถูกตามหลักการตั้งชื่อตัวแปร ผมตั้งชื่อตัวแปรเป็น number2  ประกาศตัวแปรได้  int  number2=5;
ข้อสาม ตัวอักษร ต้องประกาศชนิดข้อมูลเป็น char เท่านั้น ส่วนชื่อตัวแปรให้มาแล้วคือ grade ประกาศตัวแปรจะได้ char garde='A'; แต่มีที่ต่างจากชนิดข้อมูลแบบอื่น หากประกาศตัวอักษรตัวเดียว ต้องมีเครื่องหมาย  ' ด้วย เรียกว่า (apostrophe) อ้างอิง 
 ข้อสี่ เลข 1.5 เป็นทศนิยม สามารถใช้ได้ 2 อย่าง float หรือ double แต่เลขจำนวนน้อยๆ จะขอใช้ float มันประหยัดพื้นที่ในคอมมากกว่า (การประกาศตัวแปรคือการจองหน่วยความจำในคอมในสมัยก่อน RAM ยังมีน้อย แต่ละชนิดข้อมูลจะมีการใช้พื้นที่ต่างกัน) ชื่อตัวแปรก็ตามสะดวกที่จะตั้ง ผมตั้งเป็น GPA ประกาศตัวแปรจะได้ float  GPA=1.5;
ข้อห้า ตัวเลข 1,000,000 หากใช้ int   int จะมีค่าข้อมลูมากสุดคือ 32,767 หากใช้ชนิดข้อมูล int จะทำให้ค่าที่ออกมาผิดพลาด (คิดง่ายๆเหมือนกับกล่องใส่ของใส่ของได้ 10ชิ้น แต่ยัดของไป 20 ชิ้น ทำให้ชนาดของของเสียหาย หรือโปรแกรมอาจผิดพลาดเลยก่อนแสดงผล) เพราะฉะนั้นข้อนี้ สามารถใช้ float หรือ double แต่ float อยากให้จำว่าใช้กับทศนิยม จริงๆอันนี้ก็ใช้ได้ ไม่ผิด แต่ผมใช้ double ชื่อตัวแปรผมตั้งเป็น money การประกาศตัวแปรก็จะได้ double money=1000000; จะเห็นว่าไม่มี , ไม่งั้นจะ error  การประกาศตัวแปร ค่ามีเท่าไรใส่เลย หากจะใส่ , ให้ดูง่าย สามารถทำตอนแสดงผล (printf) เท่านั้น .. หวังว่าคงเข้าใจ 

การเก็บตัวอักษรหลายๆตัวอักษรในตัวแปรเดียว เรียกว่า สตริง (string)
รูปแบบการประกาศ     char   ชื่อตัวเลข[ความยาวของตัวอักษร];    เช่น   char name[30];             

สรุป
การเขียนโปรแกรมภาษาซีต้องเขียนตามโครงสร้างด้านบน เริ่มด้วยตัวปละมวลผลก่อน #include<stdio.h> ตัวประมวลผลก่อน จะมีมากมายแต่ที่ใช้ต้องมีตลอดคือ stdio.h  หากจะเรียกใช้เกี่ยวกับคณิตศาสตร์ ต้องเรียก math.h 
หากจะทำเกมแล้วมีเวลามาเกี่ยวข้อง time.h  ขึ้นอยู่กับว่าจะเขียนโปรแกรมอะไร ต้องใช้อะไรบ้าง
ฟังก์ชั่นหลัก คือ main() ในหนังสือบางเล่มหรือบางเว็บ จะเขียนแบบอื่น เช่น int main()  หรือ int main(int)  ซึ่งตรงนี้หากมีการเรียกใช้ int ข้างหน้า ข้างล่างสุดของโปรแกรมจะต้องมี return 0;  (ตามรูป)

แต่แบบง่ายเลยไม่ต้องมีอะไร เพราะเมื่อเรียนถึงการสร้างฟังก์ชั่น จะรู้ว่ามีการ int ข้างหน้า main หมายถึงอะไร และ (int) ในวงเล็บก็เหมือนกัน  
โครงสร้างภาษาซีส่วนต่อมา คือมีปีกกาเปิดและปิดเป็นการแสดงขอบเขตของส่วนที่จะเขียนโปรแกรม {    } 
ข้างในนี้ก็ ประกาศตัวแปร และชุดคำสั่งต่างๆ ก็เขียนในนี้ทั้งหมด 
สุดท้าย คำอธิบายโปรแกรม จะเขียนส่วนไหนของโปรแกรมก็ได้ เพราะโปรแกรมจะไม่เอาไปคอมไพล์ (ใช้ // หรือ /* ... */)

เพิ่มเติมอีกนิด แก้ไขวันที่ (26/7/0560)
คิดว่าหลายคน อาจจะงงกับ   ช่วงข้อมูล ของชนิดข้อมูล 
ชนิดข้อมูลตัวอักษร char เก็บข้อมูลช่วง -128 ถึง 127  คือ ช่วงรหัสของแอสกี (ASCII)
เช่นตัวอักษร A จะมีรหัสแอสกีเป็น 65 และ 41 (เลขฐาน10และ16ตามลำดับ) แต่ไม่ต้องไปจำหรอก ตอนนี้

ส่วนชนิดข้อมูล int float double เก็บเลขตามปกติ ถ้าใช้เลขเยอะก็ต้องประกาศชนิดข้อมูลที่ใหญ่กว่า
(หวังว่าคงเข้าใจ - -)


อ้างอิง

วันเสาร์ที่ 15 กรกฎาคม พ.ศ. 2560

ภาษาซีเบื้องต้น ตอนที่ 2.5 : แนะนำโปรแกรม Dev-C++

ตอนนี้ไม่ได้คิดตั้งแต่แรกเอาไว้ - -*
คือ ตอนต่อไปเริ่มเรียนโครงสร้างภาษาซีแล้ว แต่โปรแกรมที่จะเขียนยังไม่รู้จักเลย

ตอนนี้จะแนะนำการใช้โปรแกรม Dev-C++ เบื้องต้น
หลังจากจบตอนนี้ พอตอนต่อไปสามารถจะเอาเนื้อหาตอนต่อไปมาเขียนโปรแกรมได้เลย

โปรแกรมมีชื่อว่า Dev-C++ สามารถค้นหาจาก google และโหลดผ่านเว็บทั่วไปได้เลย

หรือขี้เกียจหา สามารถโหลดอันนี้ได้ (แต่ไม่ใช่อันล่าสุด)
https://drive.google.com/file/d/0B2-BTsJjho75aWxoM0cxZ2wzRkk

เมื่อโหลดมาแล้วก็ติดตั้งโปรแกรมเลย ไม่มีไรมาก กด Next Next Yes Install แล้วก็ไม่ Finish
ส่วนใหญ่ก็คำๆนี้หมดเวลาติดตั้งโปรแกรมไรสักอย่าง

หรือถ้าไม่เป็นอีกให้เข้าไปดูในเว็บนี้ http://www.comscicafe.com/article/3/install-dev-c++-4.9.9.2 อธิบายดีมาก ผมขี้เกียจทำละพอดีติดตั้งแล้ว  การติดตั้งถ้าทำตามเว็บก็คือขั้นตอนที่ 10 ก็คือเสร็จแล้ว ส่วน 11 12 ไม่ต้องทำก็ได้

เมื่อติดตั้งโปรแกรมเสร็จแล้วที่นี้ให้เปิดโปรแกรมขึ้นมา จะได้ดังรูป(1)ข้างล่างนี้ จะยังไม่มีที่ให้พิมพ์โปรแกรม


รูป(1)

การที่จะให้ขึ้นที่พิมพ์ สามารถทำได้ 3 แบบ  1. ไปที่ File -> New -> Source File         ดังรูป(2)

รูป(2)

 2.คลิกที่กระดาษสีขาวเลย ดังรูป(3)
                                             รูป(3)

หรือสุดท้ายวิธีที่3 คือ คลิกที่กระดาษสีขาวที่มีข้อความว่า New แล้วเลือก Source File   ดังรูป(4)

 รูป(4)



เราสารมารถสร้างที่พิมพ์ได้หลายๆหน้า และสลับไปมาได้   ดังรูป(5)

รูป(5)



จากนั้นก็เริ่มเขียนโปรแกรม (ยังไม่ต้องสนว่าพิมพ์อะไรไป)   ดังรูป(6)


รูป(6)

 เมื่อเขียนโปรแกรมเสร็จแล้วให้ทำการ Compile โดยการเลือก Execute -> Compile จากนั้นโปรแกรมก็จะให้ save เพราะเป็นการ Compile ครั้งแรก ก็ save ตามปกติ เปลี่ยนชื่อได้ด้วยดังรูป(7)
**จากรูป(6) ก่อน save ตรงไฟล์โปรแกรม Untitled1 จะมี [*] หมายถึงยังไม่มีการ save หรือหาก saveแล้ว โปรแกรมมีการเปลี่ยนแปลงแก้ไขก็จะมี * ขึ้น ไฟล์ที่มี * ขึ้นให้ Compile ใหม่ทุกครั้ง ไม่งั้นหากไป Run โปรแกรมจะแสดงผลลัพธ์อันเดิม **


 รูป(7)

หากโปรแกรมที่เขียนไม่มีข้อผิดพลาด (หรือในทางโปรแกรมมิ่ง เรียกว่า Bug) จะได้ดังรูป(8)

รูป(8)

หากโปรแกรมที่เขียนมีข้อผิดพลาด จะมีบรรทัดที่เป็นสีเกิดขึ้น ต้องแก้จนกว่าจะผ่าน อันนี้คือตั้งใจพิมพ์ผิด จาก stdio.h เป็น studio.h  ดังรูป(9)
 


 รูป(9)

เมื่อ Compile ผ่านแล้ว โปรแกรมไม่มีข้อผิดพลาดให้ไปที่ Execute -> Run  จะได้ผลลัพธ์ของโปรแกรม โปรแกรมจะแสดงข้อความ Hello World ดังรูป(10)
**หากสังเกตให้ดีจะเห็นว่าได้มีการเพิ่มบรรทัดที่ 2 และ 6 ไว้จะอธิบายทีหลัง ตอนหน้า** 


รูป(10)
Compile หรือ Run สามารถกดคีย์ลัดได้ Ctrl+F9 หรือ Ctrl+F10 ไม่ก็ทั้ง2อย่างทีเดียวคือ F9
หรือจะกดที่รูปในวงกลมสีแดงก็ได้   ดังรูป(11)

รูป(11)

**หากใครเขียนโปรแกรมแล้วไม่ขึ้นเลขด้านหน้า ให้ทำตามรูปเลย สะดวกดีเวลาอ้างอิง บรรทัด **


สรุป
เมื่อเปิดโปรแกรมให้พิมพ์โปรแกรมที่ต้องการ เรียกว่า Source file หรือ Source Code
หลังจากพิมพ์เสร็จเรียบร้อยแล้วต้องไป Compile เป็นการตรวจสอบว่าที่พิมพ์ถูกหรือผิด ถ้าผิดต้องกลับไปแก้ไขใหม่ เมื่อโปรแกรม Compile ผ่าน ให้ไป Run เพื่อแสดงผลลัพธ์ของโปรแกรม

Source Code -> Compile -> Program (.exe)

วันศุกร์ที่ 7 กรกฎาคม พ.ศ. 2560

ภาษาซีเบื้องต้น ตอนที่ 2 : ประวัติ ขั้นตอนการเขียนโปรแกรม Algorithms Flowchart

ก่อนเขียนเนื้อหาในตอนที่ 2
ลองตอบคำถามนี้ก่อน  
1 ทำไมเราต้องเรียนเขียนโปรแกรม?
2 การเขียนโปรแกรมมีประโยชน์อย่างไร?
3 หากไม่รู้ จะมีผลอะไรกับเราไหม ?
..ซึ่งคำตอบที่ได้ของแต่ละคน คิดว่าจะต่างกันออกไปแน่นอน ขอไม่เฉลยละกัน 

ในโลกนี้ผู้นำประเทศไหนบ้างที่เคยเขียนโปรแกรมแล้วออกข่าว 

(จากรูป ประธานาธิบดีบารัค โอบามา หัดเขียนโปรแกรมเป็นครั้งแรกด้วย JavaScript)
อ้างอิง : https://www.blognone.com/node/63672














(จากรูป นายกรัฐมนตรีสิงคโปร์โชว์เขียนโปรแกรม C++ แก้ปัญหาเกม Sudoku)
อ้างอิง : http://www.thaifone.com/นายกรัฐมนตรีสิงคโปร์โช/

หรือแม้แต่คนธรรมดาก็ยังสามารถเขียนโปรแกรมได้

(จากรูป โปรแกรมเมอร์ชื่อ Patrick McConlogue กับ คนจรจัดที่ชื่อ Leo)
อ้างอิง : http://jimmysoftwareblog.com/node/184


เนื้อหาส่วนต่อมาที่อยากจะให้เข้าใจคือการเขียนโปรแกรมเป็นการทำในส่วนของซอฟต์แวร์ ซึ่งองค์ประกอบหลักๆของคอมพิวเตอร์จะมี ฮาร์ดแวร์ ซอฟต์แวร์ บุคลากร ข้อมูล/สารสนเทศ .. 
อ่านเพิ่มได้ตามลิงค์นี้ http://srcom608.weebly.com/ หรือไปหาในgoogle เพิ่มเองก็ได้ 
ก็แสดงว่า ใครที่เป็นคนเขียนโปรแกรมสามารถสร้างทุกอย่างที่เป็นซอฟต์แวร์ที่อยู่ในคอมพิวเตอร์ สนุกไหมละ *-* เพราะเมื่อก่อนคอมพิวเตอร์สมัยแรกๆ ซอฟต์แวร์ต่างๆ ผู้ใช้ไม่สามารถทำหรือแก้ไขอะไรได้เลย ต้องใช้เท่าที่มี 

การเขียนโปรแกรมในบล็อกนี้จะเรียนการเขียนโปรแกรมภาษาซี 

คนสร้างหรือคิดขึ้นภาษาซีนี้มีชื่อว่า Dennis Ritchie

          ภาษาซีเกิดขึ้นในปี ค.ศ.1972 โดย Dennis Ritchie แห่ง Bell Labs โดยภาษาซีนั้นพัฒนามาจาก ภาษา B และจากภาษา BCPL ซึ่งในช่วงแรกนั้นภาษาซีถูกออกแบบให้ใช้เป็นภาษาการเขียนโปรแกรมในระบบ UNIX และเริ่มมีคนสนใจมากขึ้นในปี ค.ศ.1978 เมื่อ Brain Kernighan ร่วมกับ Dennis Ritchie พัฒนามาตรฐานของภาษาซีขึ้นมา คือ K&R (Kernighan & Ritchie) และทั้งสองยังได้แต่งหนังสือชื่อว่า "The C Programming Language" โดยภาษาซีนั้นสามารถจะปรับใช้กับเครื่องคอมพิวเตอร์รูปแบบต่างๆได้ ต่อมาในช่วง ปี ค.ศ.1988 Ritchie และ Kernighan ได้ร่วมกับ ANSI (American National Standards Institute) สร้างเป็นมาตรฐานของภาษาซีขึ้นมาใหม่มีชื่อว่า "ANSI C"

อ่านรายละเอียดอื่นๆได้ที่ wiki : https://th.wikipedia.org/wiki/ภาษาซี




evolution programming languageshttp://www.verkeyn.net/professional/histlang.html

ภาษาที่ใช้ในการพัฒนาโปรแกรม  แบ่งออก 2 ประเภท คือ
1 ภาษาระดับต่ำ
--ให้เข้าใจง่ายๆ เขียนยาก ภาษาเครื่องก็มีแค่ 0 กับ 1 ถ้าภาษาแอสเซมบลีก็จะต้องจองหน่วยความจำในเครื่องแล้วเขียนโปรแกรม
ภาษาเครื่อง  (0101010101 ) ภาษาแอสเซมบลี (Assembly)

2 ภาษาระดับสูง
--เป็นภาษาที่ใกล้เคียงกับคำพูดมนุษย์ อยู่ในรูปแบบภาษาอังกฤษ มีไวยากรณ์ในรูปแบบที่คล้ายๆกัน
ภาษาเบสิก (BASIC)  ภาษาซี (C )
ภาษาโคบอล (COBOL)  ภาษา C# ภาษาจาวา (JAVA)
ภาษา Python ภาษา PHP ภาษา PASCAL เป็นต้น

**ในหนังสือบางเล่มอธิบายว่าภาษาซีจะอยู่ในภาษาระดับกลาง คือ อยู่ตรงกลางภาษาระดับต่ำและสูงเพราะสามารถเขียนแทรกในโปรแกรมภาษาแอสเซมบลีได้ **


ขั้นตอนการเขียนโปรแกรม มีอยู่ 5 ขั้นตอน 
1.วิเคราะห์ปัญหา
   ในขั้นตอนนี้จำเป็นต้องอ่านโจทย์อย่างระมัดระวัง  เพื่อให้เข้าใจถึงแก่นแท้ของปัญหาให้ดี หากไม่สามารถตีความสิ่งที่โจทย์ต้องการผิดพลาดไป จะทำให้ส่วนอื่นๆหลังจากนี้ผิดหมดหรือมีปัญหาภายหลังได้ ในขั้นตอนนี้จะมีการแบ่งออกเป็น 3 ส่วนหลักๆดังนี้
         -ส่วนนำเข้าข้อมูล (input)   -ส่วนประมวลผล (process)    -ส่วนผลลัพธ์ (output)

ยกตัวอย่างง่ายๆ หากต้องการเขียนโปรแกรมบวกเลข 2 จำนวน โดยรับค่าจากผู้ใช้ 
ส่วนนำเข้าข้อมูล คือ ตัวเลข 2 จำนวน (เช่น 1 กับ 2) 
ส่วนประมวลผล คือ การบวกเพื่อที่จะให้ได้ผลบวก  (+) 
ส่วนผลลัพธ์ คือ ผลบวกของ2จำนวน (3)
        หากไม่เข้าใจโจทย์เช่น ส่วนนำเข้าข้อมูล ไปเอาตัวเลขที่ไม่ใช่ 2 จำนวน เช่น 3 จำนวน 1 2 3 ถ้าไปบวกกันแล้ว จะได้ผลลัพธ์คือ 6 ผลลัพธ์ถูก แต่ก็ไม่ตรงกับโจทย์ที่ต้องการ คือ โปรแกรมบวกเลข2จำนวน
หรือ หากส่วนประมวลผิด เช่น ไปใช้เครื่องหมาย - แทน + ผลลัพธ์ก็ผิดเหมือนกัน เพราะฉะนั้นต้องตีโจทย์ให้ได้ว่าแต่ะส่วนคืออะไร  สุดท้ายแล้ว สิ่งที่ยากที่สุดคือ ส่วนประมวลผล จากตัวอย่างเป็นแค่การ+เลข ก็คือใช้เครื่องหมาย+ตรงส่วนประมวลผล แต่หากเป็นโจทย์ที่ซับซ้อน ส่วนประมวลผลก็เหมือนกับการคิดสูตรขึ้นมาใหม่ 

2.ออกแบบโปรแกรม
   เมื่อวิเคราะห์ปัญหาเสร็จแล้ว ต่อไปก็คือการออกแบบโปรแกรม โดยใช้อัลกอริทึมเป็นขั้นตอนที่ใช้อธิบายลำดับการเขียนโปรแกรม ขึ้นตอนนี้จะประกอบด้วยกิจกรรมต่างๆดังนี้
-กำหนดขั้นตอนการประมวลผลส่วนหลักๆ
-การกำหนดของส่วนงานย่อย
-การออกแบบส่วนประสานการทำงานระหว่างผู้ใช้ (User Interface)
-โครงส้รางควบคุมการทำงาน เช่น การตรวจสอบเงื่อนไข หรือ การทำงานซ้ำ
-ตัวแปร
-ตรรกะโปรแกรม (Logic)

3.เขียนโปรแกรม
  เมื่ออัลกอริทึมถูกเขียนขึ้น หรือลำดับขั้นตอนในโปรแกรมมีอะไรบ้างที่ต้องมาเขียน  ผ่านการตรวจสอบและทดสอบจนแน่ใจว่าถูกต้องแล้ว ขั้นตอนต่อไปคือมาเขียนชุดคำสั่งด้วยภาษาคอมพิวเตอร์ โดยเลือกภาษาคอมพิวเตอร์ระดับสูงต่างๆตามความเหมาะสม เช่น C, C++, Pascal , Java หรือ Visual Basic เป็นต้น

4.ทดสอบโปรแกรม
   หลังจากเขียนโปรแกรมเสร็จเรียบร้อยแล้ว ขั้นตอนต่อไปคือนำโปรแกรมมาแปล (ตัวแปลภาษาคอมพิวเตอร์ อาจเป็นตัวแปรชนิดคอมไพเลอร์ หรือ อินเตอร์พรีเตอร์ก็ได้) เพื่อทดสอบความถูกต้อง หากตัวแปลภาษาเป็นคอมไพเลอร์ (Compiler) เช่น ภาษาซี ก็จะแปลแบบทั้งโปรแกรม ซึ่งหากโปรแกรมมีข้อผิดพลาด ก็ต้องถูกแก้ไขใหม่ให้ถูกต้อง และแปลใหม่จนกระทั่งไม่พบข้อผิดพลาด โปรแกรมจึงใช้งานได้ ในขณะที่ตัวแปลแบบอินเตอร์พรีเตอร์ (Interpreter) จะแปลชุดคำสั่งทีละคำสั่งในแต่ละบรรทัด โดยโปรแกรมยังคงสามารถทำงานได้ต่อไป ถึงแม้ว่าจะมีข้อผิดพลาดก็ตาม ตราบใดที่ตัวแปลภาษายังไม่ผ่านการแปลในบรรทัดที่เขียนชุดคำสั่งผิด และขั้นตอนการทดสอบโปรแกรม สามารถเรียกอีกชื่อหนึ่งว่า "การดีบั๊กโปรแกรม (Debugging)"
   ข้อผิดพลาดในการเขียนโปรแกรมที่พบเจอบ่อย มี 2 แบบ
1.Syntax Error คือ ข้อผิดพลาดของชุดคำสั่ง ที่มาจากการพิมพ์ส่วนใหญ่ เช่น จะเขียนชุดคำสั่งแสดงผลในภาษาซี จะต้องเขียน printf แต่หากไปพิมพ์แบบอื่นเช่น print ลืม f แบบนี้ก็คือเป็นข้อผิดพลาดแบบ Syntax Error
2.Logic Error คือ ข้อผิดพลาดแบบนี้ตัวแปลภาษาไม่สามารถตรวจเจอได้ เพราะ ส่วนใหญ่เป็นการใช้สูตรผิดทำให้แปลภาษาผ่าน แต่เมื่อใช้โปรแกรม ผลลัพธ์ออกมาผิด
-ดังนั้นการทดสอบโปรแกรมจึงต้องทดสอบข้อผิดพลาดของชุดคำสั่งและผลลัพธ์ที่รันว่าถูกหรือไม่ อาจมีความจำเป็นต้องทดสอบหลายๆรอบ หรือ ด้วยการป้อนข้อมูลการทดสอบในหลายๆกรณี จนมั่นใจไม่พบข้อผิดพลาด

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


** หนังสือบางเล่มอธิบายขั้นตอนมากกว่านี้ 6 7 หรือ 8  ขั้นตอน **

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














Algotithm 1  Vs Algotithm 2
ผลที่ได้เหมือนกันคือ ไข่ต้ม
ผลลัพธ์อัลกอริธึม 1 สามารถทานได้เลย ส่วนอัลกอริธึม 2 ต้องปอกก่อนทาน

สรุปคือ เราได้ผลลัพธ์ตามที่โจทย์ต้องการคือ ไข่ต้ม

Flowchart
         แผนภาพแสดงลำดับขั้นตอนการทำงานของ Algorithm, Workflow, Process เป็นเครื่องมือใช้การรวบรวมจัดลำดับความคิด เพื่อให้เห็นขั้นตอนการทำงานที่ชัดเจนและใช้วางแผนการทำงานขั้นแรก โดยสัญลักษณ์ Flowchart แสดงถึงการทำงานลักษณะต่างๆ เชื่อมต่อกัน


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

**เรื่องนี้หากสนใจให้ไปดูเพิ่มเติม เนื้องจากการเขียนโปรแกรมภาษาซีเบื้องต้นของผมจะไม่ขอพูดถึงส่วนนี้ ถ้าสรุปง่ายๆ คือ เป็นภาพของโปรแกรมในรูปแบบสัญลักษณ์ของโปรแกรมทำงานยังไง **
รายละเอียด อ้างอิง :http://share.olanlab.com/th/it/blog/view/214


Programming ?
algorithm and flowchart for solving problem:


การเขียนโปรแกรมก็คือ หาวิธีแก้ปัญหาที่เกิดขึ้น ว่าต้องทำอะไรบ้าง โดยเขียนในรูปแบบอัลกอริทึมหรืออาจมีโฟวชาร์ท(ผังงาน)ด้วย หลังจากนั้นก็เรื่มเขียนโปรแกรมผ่านภาษาคอมพิวเตอร์ที่เหมาะสม เขียนโปรแกรมเสร็จแล้วแปลโปรแกรมหรือรันโปรแกรมจะได้ผลลัพธ์ที่ไว้แก้ปัญหาตอนแรก
รายละเอียก อ้างอิง :https://en.wikiversity.org/wiki/Introduction_to_Programming/About_Programming



สุดท้ายนี้ อยากให้ดูวีดีโอนี้ 

(แน่นอนว่าในไทย การทำงานด้านเขียนโปรแกรมไม่ดีเท่าต่างประเทศ เพราะฉะนั้น ฝึกภาษาอังกฤษให้ดีแล้วโอกาสทำงานด้านนี้แบบในวีดีโอมีเยอะ)