User Tools

Site Tools


tutorial:syntax

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
tutorial:syntax [2019/01/04 13:55]
admin
tutorial:syntax [2019/01/06 16:37]
admin
Line 29: Line 29:
     TStArr2D = array[1..3] of array[1..5] ​     TStArr2D = array[1..3] of array[1..5] ​
                of real;//​Array (3 x 5)                of real;//​Array (3 x 5)
-    //Static Array with constant ​values ​          +    //Static Array with initial ​values ​          
     TStArr1D: array[1..3] of integer = (14,25,36);     TStArr1D: array[1..3] of integer = (14,25,36);
                                
Line 102: Line 102:
 PROGRAM ProgramName ; PROGRAM ProgramName ;
  
-  //​Declaration scope 
 USES USES
   {include units (external .pas files)}   {include units (external .pas files)}
Line 115: Line 114:
   {Variable declarations}   {Variable declarations}
  
-{Sub-programs declarations}+{Sub-programs declarations ​& Implementations}
  
-  //​Implementation scope 
 BEGIN BEGIN
   {Executable statements (Main)}   {Executable statements (Main)}
Line 207: Line 205:
 =====Unit Structure===== =====Unit Structure=====
 บางครั้งการแยกโค๊ดออกเป็นโมดูลย่อยแล้วค่อยเรียกใช้เข้ามาในโปรแกรมหลัก จะทำให้เราสะดวกในการค้นหาและแก้ไข อีกทั้งโค๊ดส่วนนี้ยังสามารถเอาไปใช้ในหลายๆโปรแกรมในภายหน้าได้อีก เราเรียกโมดูลที่เก็บโค๊ดเหล่านี้ว่า Unit \\ บางครั้งการแยกโค๊ดออกเป็นโมดูลย่อยแล้วค่อยเรียกใช้เข้ามาในโปรแกรมหลัก จะทำให้เราสะดวกในการค้นหาและแก้ไข อีกทั้งโค๊ดส่วนนี้ยังสามารถเอาไปใช้ในหลายๆโปรแกรมในภายหน้าได้อีก เราเรียกโมดูลที่เก็บโค๊ดเหล่านี้ว่า Unit \\
-Unit คือไฟล์ .pas ที่มีส่วนประกาศหรือตัวแปรต่างๆ (uses, const, type, var) หรือโปรแกรมย่อย (functions/​procedures) อยู่ภายใน ประกอบไปด้วยส่วนที่เป็น Public และ Private โดยโครงสร้าง Unit ของ Pascal จะมีรูปแบบดังนี้+Unit คือไฟล์ .pas ที่มีส่วนประกาศหรือตัวแปรต่างๆ (uses, const, type, var) หรือโปรแกรมย่อย (functions/​procedures) อยู่ภายใน ประกอบไปด้วยส่วนที่เป็น Public ​Scope และ Private ​Scope โดยโครงสร้าง Unit ของ Pascal จะมีรูปแบบดังนี้
  
 <sxh delphi;> <sxh delphi;>
 unit unitname; unit unitname;
-  //public scope ----- +  ​ 
-   +  ​//public scope ----- 
 interface interface
   {uses, const, type, var, function, procedure ... declaration}   {uses, const, type, var, function, procedure ... declaration}
Line 222: Line 220:
 end. end.
 </​sxh>​ </​sxh>​
 +\\ 
 +
 +  *__**Public Scope**__ คือ ส่วนที่อยู่ใต้คำว่า interface ลงมา แต่อยู่เหนือคำว่า implementation ทุกครั้งที่มี Program อื่น หรือ Unit อื่น เรียกใช้ Unit ดังกล่าวนี้ (ใช้ใน uses) จะเห็น Variables หรือ Sub-program หรืออะไรก็ตามที่ประกาศไว้ในเฉพาะส่วนนี้เท่านั้น \\
 +  *__**Private Scope**__ คือ ส่วนที่อยู่ใต้คำว่า implementation เป็นส่วนที่ Program อื่น หรือ Unit อื่น ที่เรียกใช้ Unit ดังกล่าวนี้ ไม่สามารถเข้าถึงโดยตรงได้ จะเรียกใช้งานได้ก็ต่อเมื่อเรียกผ่านการ Declaration ในส่วนของ Public Scope เท่านั้น
 +
 +ที่เป็นแบบนี้เพราะ ส่วนของ implementation นั้นมักจะประกอบไปด้วย source code หลายบรรทัด แถมยังมีการเรียกใช้ Variables หรือ Sub-program ซ้ำกันเต็มไปหมด จะเป็นการยากที่จะให้ Compiler มาหา Variables หรือ Sub-program หรืออะไรก็ตาม ในสถานที่นี้ ​
 +
 \\ \\ \\ \\
 +=====ความรู้พื้นฐานก่อนเริ่มเขียน Pascal=====
 +====Declaration and Implementation====
 +การเขียนโปรแกรมนอกเหนือจากต้องรู้จักโครงสร้างของโปรแกรมแล้ว ยังต้องทำความเข้าใจกับสองคำนี้ คือ Declaration กับ Implementation ซึ่งนอกจากจะเกี่ยวข้องกับการเขียน Main Program แล้ว ยังเกี่ยวข้องกับ Sub-program ด้วย (Sub-program คือ Procedure/​Function หรือเรียกอีกอย่างว่า Method นั่นเอง เพื่อไม่ให้ดูซับซ้อนมากเกินไป ในหัวข้อนี้ จะขอเรียกพวกนี้สั้นๆว่า Sub-program แทน)\\
 +
 +__**Declaration**__ คือ การประกาศ เป็นส่วนที่ใช้บอก Compiler ว่า Program หรือ Sub-program ดังกล่าว ชื่ออะไร รับ Input หรือส่ง Output อะไรบ้าง เป็นต้น แต่ยังไม่ได้บอกถึงรายละเอียดว่าทำอะไรได้บ้าง ​
 +
 +__**Implementation**__ คือ ส่วนที่บ่งบอกว่า Program หรือ Sub-program นั้นทำอะไรบ้าง มีขั้นตอนอะไรบ้าง
 +
 +<hidden: Declaration and Implementation>​
 +ย้อนกลับไปดูที่โครงสร้างของ Main Program จะแบ่งแยกพื้นที่ได้ดังนี้
 +  * Declaration คือ ส่วนแรก คือ บรรทัดที่ 1-16 
 +  * Implementation คือ ระหว่างคำว่า BEGIN ... END. หรือ บรรทัดที่ 18-20
 +
 +<sxh delphi;​highlight:​ [1-16,​18-20]>​
 +PROGRAM ProgramName ;
 +
 +USES
 +  {include units (external .pas files)}
 +
 +CONST
 +  {Constant declarations}
 + 
 +TYPE
 +  {Type declarations}
 + 
 +VAR
 +  {Variable declarations}
 +
 +{Sub-programs declarations & Implementations}
 +
 +BEGIN
 +
 +  {Executable statements (Main)}
 +  ​
 +END.
 +</​sxh> ​
 +
 +\\
 +ทีนี้ลองมาดูที่โครงสร้างของ Sub-Program ที่อยู่ภายใน Main Program กันบ้าง ขอยกตัวอย่าง Procedure SubProg และ Function SubFunc ข้างล่างนี้ เราจะแบ่งพื้นที่ของ Sub-Program Declaration กับ Implementation ได้ดังนี้
 +  * Declaration คือ ส่วนแรก ในบรรทัดที่ 6-7 (เป็นการประกาศแบบล่วงหน้า หรือ Forward Declaration ซึ่งจากตัวอย่างนี้ จะมีหรือไม่มีก็ได้)
 +  * Implementation คือ บรรทัดที่ 9-17 บ่งบอกว่า Sub Program พวกนี้ ทำอะไรได้บ้าง
 +
 +<sxh delphi;​highlight:​ [6-7,​9-17]>​
 +PROGRAM ProgramName ;
 + 
 +VAR
 +  {Variable declarations}
 +
 +  program SubProg; forward;
 +  function SubFunc(inp:​string):​string;​ forward;
 +  ​
 +  program SubProg;
 +  begin
 +    writeln('​This is subProgram'​);  ​
 +  end;
 +
 +  function SubFunc(inp:​string):​string;​
 +  begin
 +    result:= inp;  ​
 +  end;
 +    ​
 +BEGIN
 +
 +  SubProg; //Call SubProg;
 +  writeln('​Call SubFunc : ',​SubFunc('​Hello!'​);​
 +    ​
 +END.
 +</​sxh> ​
 +
 +สำหรับ Unit เราสามารถแบ่งพื้นที่ได้แบบนี้
 +  * Declaration คือ ส่วนแรก คือ บรรทัดที่ 1-5 
 +  * Implementation คือ ระหว่างคำว่า implementation ... end. หรือ บรรทัดที่ 7-9 (สังเกตว่ามันจะคล้ายกับ BEGIN...END. ของ Main Program แค่เปลี่ยนคำแรกเป็น implementation แค่นั้นเอง)
 +<sxh delphi;​highlight:​ [1-5,​7-9]>​
 +unit unitname;
 +   
 +interface
 +  {uses, const, type, var, procedures/​functions ... declaration}
 +  ​
 +implementation
 +
 +  {Procedures/​Functions implementation here}
 +  ​
 +end.
 +</​sxh>​
 +
 +\\
 +สำหรับ Sub-Program ที่อยู่ภายใต้ Unit จะแบ่งพื้นที่ได้ดังนี้
 +  * Declaration คือ ส่วนแรก ในบรรทัดที่ 6-7 (ส่วนนี้บังคับว่าต้องมี และถือเป็นการ Forward Declaration เหมือนกัน แต่ไม่ต้องใส่คำว่า forward;)
 +  * Implementation คือ บรรทัดที่ 10-18 บ่งบอกว่า Sub Program พวกนี้ ทำอะไรบ้าง
 +
 +<sxh delphi;​highlight:​ [6-7,​10-18]>​
 +unit unitname;
 +   
 +interface
 +  {uses, const, type, var, procedures/​functions ... declaration}
 +  ​
 +  program SubProg;
 +  function SubFunc(inp:​string):​string;​
 +  ​
 +implementation
 +  program SubProg;
 +  begin
 +    writeln('​This is subProgram'​);  ​
 +  end;
 +
 +  function SubFunc(inp:​string):​string;​
 +  begin
 +    result:= inp;  ​
 +  end;  ​
 +end.
 +</​sxh>​
 +
 +</​hidden>​
 +
 +\\
 +\\
  
-=====Built-in Functions ที่ควรทราบ=====+====Built-in Functions ที่ควรทราบ====
 ก่อนการฝึกทำตัวอย่าง หรือเขียนโปรแกรมพื้นฐานง่ายๆ เราควรทำความรู้จักกับ Built-in Function ต่อไปนี้เสียก่อน ก่อนการฝึกทำตัวอย่าง หรือเขียนโปรแกรมพื้นฐานง่ายๆ เราควรทำความรู้จักกับ Built-in Function ต่อไปนี้เสียก่อน
 ^  Functions ​ ^  Descriptions ​ ^  ^  Functions ​ ^  Descriptions ​ ^ 
Line 233: Line 354:
 <hidden Example-3: การใช้งาน write, writeln และ readln> <hidden Example-3: การใช้งาน write, writeln และ readln>
 **ตัวอย่าง** โปรแกรมคำนวณ Body Mass Index (BMI)\\ **ตัวอย่าง** โปรแกรมคำนวณ Body Mass Index (BMI)\\
 +__**ข้อสังเกต**__ - readln() (หรือ readln) ในบรรทัดที่ 20 นั้น ถูกใช้เพื่อเบรคหน้าจอไม่ให้ปิดตัวเองลง และผู้ใช้สามารถกด Enter เพื่อผ่านคำสั่งนี้ได้ (จบโปรแกรม)
 <sxh delphi;> <sxh delphi;>
 program BMI_Calculation;​ program BMI_Calculation;​
Line 253: Line 375:
   writeln('​Your BMI is = ',​Format('​%.2f',​[BMI]));​   writeln('​Your BMI is = ',​Format('​%.2f',​[BMI]));​
  
-  readln();+  readln(); // or readln;
 end.  end. 
 </​sxh> ​   </​sxh> ​  
tutorial/syntax.txt · Last modified: 2019/01/06 16:38 by admin