Chat Room

บทที่ 1.2.1 เริ่มต้นกับการเขียนโปรแกรม ภาษาคอมพิวเตอร์และ Unrealscript

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


เกิ่นนำของภาษา

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

Structure คือ โครงสร้างหรือกลุ่มของข้อมูลที่จะอยู่ภายใต้ ชื่อๆเดียว โดยจะมีคำหน้าหน้า ก่อนเสมอโดยจะเหมือนคนจีนเช่น ถ้า Structure ชื่อ A นั่นก็หมายถึง A คือนามสกุล ดังนั้น A จะ . ตามด้วยชื่อคนในตะกูลเป็นต้น

Object คือ วัตถุของข้อมูลสิ่งต่างๆ ที่เราสร้างขึ้นมัน ก็สามารถบ่งบอกว่า Object ตัวนี้มันคืออะไรบ้างเช่น สมมุติว่าเราจะสร้าง Object ตัวนึงอยากสร้างสุนัข เราก็สร้าง Object ตัวนึงเพื่อเอาไปเปรียบเทียบเป็นสุนัขครับ

Enum คือ กลุ่มของข้อมูลที่จะอยู่ภายใต้ ชื่อๆเดียว โดยจะมีคำหน้าหน้า ก่อนเสมอโดยจะเหมือนคนจีนเช่น ถ้า enum ชื่อ A นั่นก็หมายถึง A คือนามสกุล ดังนั้น A จะ . ตามด้วยชื่อคนในตะกูลเป็นต้น

Compile คือ การแปลภาษาให้เป็นรหัสเดียวกับการใช้ในการกระทำ หรือการ ทำเป็นตัว EXE นั่นแหล่ะ
Debug คือ การตรวจสอบของภาษาว่าที่ไหนมี Bug อะไรที่คุณเขียนอยู่แต่ว่าคุณจะต้องเป็นคนกำหนดว่าคุณจะเริ่มหาจากตรงไหนที่ไหนบรรทัดที่เท่าไหร่ เป็นต้น
Keywords คือ คำนำหน้า
Parent คือ สิ่งที่ให้การสืบทอด ในที่นี้จะเป็นพวกระดับ class และ state เป็นการใช้งาน



Classes ( ระดับของชั้นภาษา )

Class ของภาษา หลายๆภาษาก็แตกต่างกัน มารู้จักความหมายของ Class ดีกว่า
Class คือสั่งที่เรียก ชั้น นั่นก็หมายถึงระดับชั้นยกตัวอย่าง

Extends หมายถึงการสืบทอด B สืบทอด Class มาจาก Class A และ C สืบทอด Class มาจาก Class A เช่นเดียว คล้ายๆ หนังจีน,การตูนญี่ปุ่นแหล่ะครับ สืบทอด วรยุทธ ถ้าใครเคยดูการตูน เรื่อง Naruto ก็คงจะเข้าใจมั้งครับ ให้เปรียบเทียบกันก็เช่น คาคาชิ คือ Class A และ Class B คือ ลูกศิษย์ คนที่หนึ่ง Class C คือ ลูกศิษย์ คนที่สอง ดังนั้น เมื่อ สืบทอดกันแล้วหมายความว่า คาคาชิ ได้ให้วิชาทั้งหมดแก่
B และ C ดังนั้น Class B สามารถ ใช้คำสั่ง ของ A ได้และ C ก็เช่นเดียวกัน แต่ไม่สามารถใช้เนตรวงแหวนได้ โดยใน นั้นจะสามารถกำหนด ความเป็นส่วนตัวได้ เช่น public และ private เดี๋ยวต้องไปอ่านต่อในหัวเรื่อง function นะครับ

Example ( ตัวอย่างในการเขียน )

Class A{} // Java oop , PHP
Class B Extends A{} // Java oop , PHP 

Class B Extends A; // Unreal script
Class MyGame Extends Gameinfo; // Unrealscript

//----------------------------------------------------------------

Syntax ของภาษาจะแตกต่างกันไปครับ

กฏของ Class // Unrealscript
Class จะต้อง Extends ทุกครั้ง
Class จะไม่มีปีกกา เปิด {       และ ปีกกา ปิด }
DefaultProperties จะต้องปีกกา เปิด และปีกกา ปิดใต้ชื่อทุกครับ เช่น

DefaultProperties 
{
}

เป็นต้น



Variable ( ตัวแปร )


เป็นตัวแปรของภาษา มันมีหน้าที่ไว้รับข้อมูล หรือเก็บไว้มูลไว้ในตัวมันเอง นั่นก็หมายความว่า
Variable จะคอยทำหน้าที่ เขียนให้รับส่งข้อมูลก็ได้ ดังนั้น Variable จะมีประเภทแตกต่างกันไป

ประเภท Variable

Byte : สามารถรับข้อมูลเป็นตัวเลขได้แต่ตัวหนังสือไม่ได้จะรับได้แค่ 0 ถึง 255 และรับตัวเลจจำนวนเต็มเท่านั้น
int : สามารถรับข้อมูลเป็นตัวเลขได้แต่ตัวหนังสือไม่ได้จะรับได้ ตัวเลขจำนวนเต็ม เท่านั้น
Bool : สามารถ รับข้อมูล True หรือ False ได้ จะได้แค่สองอย่างเท่านั้น
float : สามารถ รับข้อมูลเป็นตัวเลข ได้ไม่สามารถรับตัวหนังสือได้ รับได้ ทั้งตัวเลข และ จุดทศนิยม
string : สามารถ รับตัวเลขได้ และตัวหนังสือได้แต่ไม่สามารถ เอาไปคำนวนได้

คำนำหน้าเพื่อใช้กำกับ ว่า Variable นี้จะออกตอนนี้ Fix ค่าไม่ให้เปลี่ยนค่าได้หรือ สามารถ ดึงไปใช้ใน Class อื่นได้ไหม

คำนำหน้า Variable ( Keywords  )

Const : ค่าคงที่ ที่ไม่สามารถเปลี่ยนแปลงได้
editConst : สามารถ เปลี่ยนแปลง Const ได้ในภายหลัง
native : Variable ที่เริ่มต้น ตัวนี้จะใช้คู่กับภาษา C++ เป็นซะส่วนใหญ่
private : คือการประกาศความเป็นส่วนตัวของ Variable ชนิดนี้ให้กระทำได้ภายในเฉพาะ Class นี้เท่านั้น
Config : ดึง Config มาใช้งาน // วิธีการใช้ งาน Coming Soon

ตัวอย่างการใช้งาน
Syntax :

var Keywords ประเภท ตั้งชื่อ;
var ประเภท ตั้งชื่อ;

ประกาศใน function จะใช้ local แทน var นะครับ

รูปแบบ array จะให้ตาม หลังปรเภทนะครับเช่น

var ประเภท array ตั้งชื่อ

Array หมายถึงการประกาศ ในตัวแปรเดียวแต่ให้มีค่าได้หลายๆค่า โดยจะใช้ index เป็นตัวชี้ว่าค่าไหนอยู่
ตำแหน่ง index ไหนบ้าง เช่น
ตัวแปร a มี [0] index ช่องที่ 0 และ [1] index ช่องที่ 1 โดย index ช่องที่ 0 มีค่า = 50 และ ช่องที่ 1 มีค่า เป็น 20
ดังนั้น ถ้าเราให้มันแสดงผล ในช่อง ที่ 0 ดังนั้นจะได้ผล ลัพธุ์ออกมา คือ 50 ส่วนถ้าประกาศในช่อง ที่ 1
ผลลัพธุ์ที่ออกมาจะได้ ค่าเป็น 20 และสามารถ ประกาศได้พร้อมๆกันโดยไม่มีข้อจำกัด
โดย array สามารถมีได้หลายๆ มิติ เช่น [1][0] นี่คือ 2 มิติ เช่น มิติ ที่ 1 ช่องที่ 1 มิติ ที่ 2 ช่องที่ 0
มีค่าเป็น 20 อย่างงี้เป็นต้น

กฏการตั้งชื่อ


โดยกฏนั้น มีการห้ามดั่งต่อไปนี้

1. ต้องตั้งชื่อด้วยตัวอักษร หรือตัวเลขก็ได้ แต่ต้องตั้งเป็นภาษาอังกฤษ
2. ห้ามใช้สัญญาลักษ์ ใดๆ นอกจาก _ Under scroll เท่านั้น
3. ตัวแปลภาษา อังกฤษ พิมพ์เล็กพิมพ์ใหญ่ จะต่างกัน แต่ใน Unrealscript จะเหมือนกัน
4. ห้ามเว้นวรรคตัวแปล
5. ห้ามตั้งชื่อซ้ำ กันภายใน Class


Functions ( คำสั่ง )


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

Parameter หรืออีกชื่อ arguments คือ การนำเข้าของ ข้อมูลโดยจะตั้งชื่อใน Parameter โดยจะใช้
Variable มาช่วยแต่งเพื่อเอา ค่าข้อมูล มาเข้ารับเป็น Variable

Parameter Keys

out : การนำค่าเข้ามาจนทำเสร็จแล้ว นำค่าที่เข้ามา เอาออกไปโดยการเข้าข้อมูลที่ทำเสร็จแล้ว ด้วยตัวภายใต้ชื่อของตัวแปลนั้นจะเป็นตัวชี้ค่าของข้อมูลที่คุณได้กำหนดไว้ใน function

optional : สิ่งที่เกี่ยวข้อง นั่นก็หมายความว่า คุณจะใส่ก็ได้หรือไม่ใส่ก็ได้ จะทำให้ parameter ที่ไม่ได้ใส่
ไม่เกิดการ error ของการ complie

Keywords 


Static :  การสร้าง method ล่วงหน้าไม่สามารถ กระทำการเปลี่ยนแปลงได้ในภายหลัง
simulated : การสั่งให้ method ที่เป็น ชื่อเดียวกันแต่ทำงาน คนละ class คำสั่งนี้จะทำให้ สามารถ ชิงกระทำก่อน class หลักๆได้
final : การกำหนดให้ method ที่เป็นชื่อเดียวกันแต่ทำงานคนละ class คำสั่งนี้จะทำให้ สามารถ กระทำการขั้นตอนสุดท้าย ของ method ได้

Return 


การ Return เป็นการคืนค่า สามารถ กำหนดประเภทได้ดังต่อไปนี้


return variable
return true
return false
return 


ซึ่งในแต่ละอันก็จะทำงานต่างออกไป ซึ่ง return จะเป็นได้ทั้งการสิ้นสุดการทำงาน ก็ใช่ครับ
ส่วนกฏ การ return ไม่มีอะไรมาก
ก็คือ การ return จะ return ได้แค่ตัวแปร เดียวเท่านั้น

Example:


Keywords function name (){
}


Keywords function name ( parameter_key name variable_type name ){
}


Keywords function type_variable name ( parameter_key name variable_type name ){
         return variable
}

* การ return นั้น ประเภทของ variable จะต้องตรงกับ ประเภทของค่าที่ จะ return 



Operator ( เครื่องหมายสัญญาลัก )


เป็นการกำหนด ภายใต้ชื่อของ Syntax
โดย Operator ที่จะใช้ได้อิสระ กับ variable จะมีดังนี้

= คือ การเทียบค่าหรือ ให้ค่าที่อยู่ข้างหน้ามีค่าเท่า ค่าข้างหลังโดย ค่าข้างหลัง สามารถ กำหนดได้หลายรูปแบบ
$ คือ String ใช้ในการเชื่อมเครื่องหมายคำพูด
*=  คือ คูณ จำนวนตัวแปร โดยจะเอา ค่าข้างหน้า ไปคูณกับค่าข้างหลัง เช่น a = a*b ก็กลายเป็น a *= b แทน
/= คือ คูณ จำนวนตัวแปร โดยจะเอา ค่าข้างหน้า ไปหารกับค่าข้างหลัง เช่น a = a/b ก็กลายเป็น a /= b แทน
+= คือ คูณ จำนวนตัวแปร โดยจะเอา ค่าข้างหน้า ไปบวกกับค่าข้างหลัง เช่น a = a+b ก็กลายเป็น a += b แทน
-= คือ คูณ จำนวนตัวแปร โดยจะเอา ค่าข้างหน้า ไปลบกับค่าข้างหลัง เช่น a = a-b ก็กลายเป็น a -= b แทน
-- คือการเอาตัวแปร นั้นไปลบด้วย หนึ่ง เช่น a = a - 1 แต่จะกลายเป็น a-- แทน

++ คือการเอาตัวแปร นั้นไปบวกด้วย หนึ่ง เช่น a = a + 1 แต่จะกลายเป็น a++ แทน
- คือเอาตัวแปรมา ลบกัน
+ คือเอาตัวแปล มาบวกกัน
* คือเอา ตัวแปลมา คูณกัน
/ คือเอา ตัวแปลมา หารกัน
// คือการประกาศ comment โดยการปิดการทำงานของ code บรรทัดนั้น
/* */ คือการ ปิดการทำงาน ระยะทางที่ต้องการปิด ด้วยจะมี /* คือ เปิด และ */ คือปิด

Operator สำหรับ เงื่อนไข มีดังนี้

|| คือ or , หรือ หมายความว่า สิ่งใดสิ่งหนึ่งเป็นเงื่อนไขที่ถูกใน เงื่อนไขก็สามารถผ่านไปได้
&& คือ and , และ หมายความว่า ต้องถูกทุกสิ่งในเงื่อนไข ถึงจะผ่านเงื่อนไขไปได้
== คือ เท่ากับ หมายความว่า จะต้องมีค่าเท่ากันเท่านั้นจึงจะผ่านเงื่อนไขไปได้
!= คือ ไม่เท่ากัน หมายความว่า จะต้องมีค่าที่ไม่เท่ากันเท่านั้นจึงจะผ่านเงื่อนไขไปได้
< คือ น้อยกว่า หมายความว่า ตัวแปรข้างหน้าจะมีค่าน้อยกว่าข้างหลัง จึงจะผ่านไปได้
> คือ มากกว่า หมายความว่า ตัวแปรข้างหน้าจะต้องมีค่ามากกว่าข้างหลัง จึงจะผ่านไปได้
>= คือ มากกว่าเท่ากับ หมายความว่า ตัวแปรข้างหน้าจะต้องมีค่ามากกว่าหรือเท่ากับข้างหลัง จึงจะผ่านไปได้
<= คือ มากกว่าเท่ากับ หมายความว่า ตัวแปรข้างหน้าจะต้องน้อยกว่าหรือมีค่าเท่ากับข้างหลัง จึงจะสามารถ ผ่านไปได้


State ( จุดสถาณีของ ภาษา )


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

Keywords
auto คือเมื่อถูกเรียก Class ออกมาแล้ว state จะทำงานดำเนิน state ที่ถูกตั้งไว้เป็น auto ทันที

Syntax :
Keyword state() statename Extends ParentState{
}

Example: auto state

state test{
}

auto state test{
}

======================================================
Example: parentstate


state test1{
}



state test2 extends test1{
}
======================================================
Example: begin within state

เกิ่นนำ Begin คือการทำงานขั้นต้นของการทำงาน state เช่น


state test1{
begin:
`log("test");
}



แบบนี้เป็นต้น
======================================================
Example: goto

เกิ่นนำ goto คือการทำงาน ข้ามการทำงานขั้นตอนของ state เช่น


state test1{
begin:
`log("test");
goto('overclockzone');
overclockzone:
`log("test overclock 20.ghz");
}

======================================================
Example: sleep

เกิ่นนำ sleep เป็น function ที่จะใช้ใน state เท่านั้นมันคือการพักการทำงาน รอจนกว่า
การกำหนดการที่ใส่ไปใน parameter จะถึงเวลาเช่น


state test1{
begin:
sleep(10);
`log("start eiei");
}

======================================================
Example: Gotostate

เกิ่นนำ เป็น function ที่ใช้ในการทำงานเข้าไปใน state และสามารถ ใช้งานได้ทุกที่
เช่น

function a(){
   gotostate('abc');
}

state abc{
begin:
`log("ok");
}


Flow - Control Statements ( เงื่อนไขต่างๆ )


เงื่อนไข ก็คือ การทำตามคำสั่ง ในเงื่อนไขที่เรากำหนดนั่นเองโดยจะมี การใช้อยู่สองแบบSwitch และ if else


Switch จะเป็นการทำงานที่เลือกการทำงาน ภายใต้ String หรือ Int เท่านั้น ที่ระบบไว้บน case

if จะเป็นการทำงาน ของตัวแปรกับ ตัวแปรหรือ string ก็ได้ จะเป็นการทำงานที่
เราสามารถ กำหนดได้หลายรูปแบบ โดย if จะมี อยู่ สามอย่าง if else แล้วก็ else if

Loops  จะเป็นการทำงานวนค่า ทำตามคำสั่งเงื่อนแค่และตั้งค่า ในนั้นได้อีกด้วย

ตัวอย่าง Switch

Switch ( ตัวแปร ){
     case ตั้งชื่อ จะเป็นตัวเลข หรือตัวหนังสือก็ได้:
     break;
}

เช่น


Switch ( a ){
     case abc:
     break;
}

เมื่อ a มีค่าเป็น abc จึงจะเข้าไปทำงานใน case abc ได้
======================================================
Default: ใน Switch หมายถึง ค่าที่ไม่มีใน case ทั้งหมดที่ตั้งขึ้นมาให้ทำงานใน Default ได้เลย


Switch ( a ){
     case abc:
     break;
     Default:
     break;
}


เมื่อค่า a คือ abb ดังนั้นไม่มีสิทธิ์ที่จะเข้าไป ใน case abc ดังนั้นก็จะปัดไปเป็น Default แทน
======================================================
ตัวอย่าง if else

if (a == 10){ // ให้อ่าน Operator ไปด้วย
       
}else{

}

หมายความว่า a ต้อง เท่ากับ 10 เท่านั้น จึงจะทำงานหลัง if ได้ถ้าไม่จริง
ก็จะไปทำงานในส่วนของ else นะครับ

======================================================


if (a == 10){ // ให้อ่าน Operator ไปด้วย
       
}else if(a == b){

}

หมายความว่า
ถ้า เงื่อนไขแรก ไม่ถูก ก็จะไปเงื่อนไขที่สอง ซึ่งจะคล้ายๆกับ

if(a==10){
}
if(a==b){
}
แต่ข้อต่างกันก็คือ if ในชุดแรก ที่มี else if จะเป็นการเลือกเงื่อนไขอย่างใดอย่างหนึ่ง ซึ่ง if else จะถูกเรียกว่า
เงื่อนไข 1 ชุด แต่ถ้า if แล้วก็ มา if อีกรอบเหมือนตัวอย่าง ที่สอง ก็หมายถึง if จะทำงาน ถึง สองครั้ง
ในเวลาเดียวกันก็หมายความว่า เงื่อนไขมี สองชุด นั่นเอง

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

======================================================

Loops

จะมี Loops ดังต่อไปนี้

for
do until
while

สามตัวนี้จะมีวิธีใช้ต่างกันแต่ การทำงานจะคล้ายๆกันจะไม่ค่อย แตกต่างกันมากมาย
======================================================
Syntax // for

for(variable; เงื่อนไข; เมื่อเงื่อนไขถูก ทำอะไรต่อ){
}

Example // for

for(i = 0; i <= number; i++){
}

//------------------------------------------------------------------------------------
หมายความว่า i = 0 และ เงื่อนไขก็คือ ถ้า i น้อยกว่าหรือเท่ากับ number ให้ออก แต่ถ้าเป็นจริง
ให้ i++ ก็คือ i จะนับทีละหนึ่ง จนกว่าจะ มากกว่า number ก็หมายความว่า i จะมีค่าเท่ากับ number ก็แสดงว่า เงื่อนไขเป็นเท็จแล้ว จึงจะออก loop

======================================================
do until ก็จะเหมือนกับ for แต่วิธีการใช้งานจะต่างกันออกไป
do until วิธีการใช้

i=0
do{
 i++;
}until(i==4);
======================================================

while ก็จะเหมือนกับ for และ do until แต่วิธีการใช้งานจะต่างกันออกไป
while วิธีการใช้

i = 0;
while( i < 4){
}
======================================================



จบ บทเรียน ครับ
เข้าใจหรือไม่ เข้าใจช่วย comment กันด้วยนะครับ

4 ความคิดเห็น:

Dilok Pinicsak กล่าวว่า...

จบ 1 รอบ อวก ไปแล้ว 1 T แต่ก็ต้องอ่านมันต่อไป T-T

Unknown กล่าวว่า...

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

จะเก่งได้ก็คือ ลง มือทำครับ

ไม่ระบุชื่อ กล่าวว่า...

เจอบทเรียนอันเเรก งง เลยเเต่สู้ๆๆครับ
เพื่อความฝันผม

Unknown กล่าวว่า...

ต้องใจเย็นๆครับ อันนี้มันเป็นประมาณ ว่า ให้เราพอรู้คร่าวๆดูก่อนครับ

ต้องลองเขียนจริง เพราะบทเรียนนี้ต้องกลับมาดูบ่อยๆอยู่แล้วครับ