• user warning: Duplicate entry '536306482' for key 'PRIMARY' query: INSERT INTO accesslog (title, path, url, hostname, uid, sid, timer, timestamp) values('วงศ์ผีเสื้อหนอนกระหล่ำ', 'node/85919', '', '18.116.87.196', 0, 'c9ec2087c93d3363048c2a807b9b7d1b', 170, 1715942361) in /home/tgv/htdocs/modules/statistics/statistics.module on line 63.
  • user warning: Table 'cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:0e4ddc5ac7b1edd65707b1e82f7e4fad' in /home/tgv/htdocs/includes/cache.inc on line 27.
  • user warning: Table 'cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<!--paging_filter--><p>\n       <br />\n<span style=\"color: #ff0000\"><strong>โปรแกรมย่อย (Procedure)</strong></span></p>\n<p>         การเขียนโปรแกรมคอมพิวเตอร์นั้นสามารถสร้างคำใหม่ขึ้นมาได้ และสามารถเรียกใช้ได้เมื่อต้องการ โดยคำใหม่ที่สร้างขึ้นจะประกอบด้วยคำสั่งต่างๆ รวมกันอยู่ ถ้าหากคำใหม่ที่สร้างขึ้นนี้ไม่มีการคืนค่าออกมา การทำงานจะทำงานเป็นโปรแกรมย่อยหรือที่เรียกกันในภาษาปาสคาลว่า &quot;โพรซีเยอร์&quot; </p>\n<p><strong>โครงสร้างโพรซีเยอร์<br />\n         </strong>ในการเขียนโปรแกรมทุกโปรแกรมจะต้องมีโปรแกรมหลักที่อยู่ใน Begin กับ End. แต่ถ้ามีการสร้างโพรซีเยอร์หรือโปรแกรมย่อยขึ้น จะต้องเขียนโพรซีเยอร์หรือโปรแกรมย่อยไว้นอกโปรแกรมหลัก โครงสร้างของโพรซีเยอร์เป็นดังนี้</p>\n<p><strong>รูปแบบ<br />\n         procedure       </strong>Procedure_Name;<br />\n         <strong>begin<br />\n                                </strong>statement;<br />\n         <strong>end;</strong></p>\n<p>        จะเห็นได้ว่าโพรซีเยอร์นั้นมีโครงสร้างคล้ายกับโปรแกรม จะเริ่มด้วยคำว่า Procedure และตามด้วยชื่อโพรซีเยอร์ โดยชื่อนี้จะต้องเป็นไปตามกฎการตั้งชื่อที่ได้ศึกษามา ส่วนการทำงานต่างๆ ภายในโพรซีเยอร์จะเป็นสเตตเมนต์ที่อยู่ภายใน begin กับ end; ในโพรซีเยอร์นั้นจะต้องไม่มี uses เมื่อโปรแกรมหลักต้องการเรียกโพรซีเยอร์ขึ้นมาทำงานก็ทำเพียงเรียกชื่อโพรซีเยอร์ขึ้นมาเท่านั้น<br />\n         ในการเขียนโปรแกรมที่มีขนาดใหญ่ โครงสร้างแบบโพรซีเยอร์จะช่วยทำให้โปรแกรมดูง่ายขึ้น สามารถแยกโปรแกรมออกเป็นส่วนๆ ได้ อย่างเช่น ถ้าหากต้องการให้คอมพิวเตอร์วาดรูปหน้าคน เราอาจแบ่งเป็นส่วนที่วาดหัว ส่วนที่วาดตา ส่วนที่วาดปาก ส่วนที่วาดจมูก จากนั้นให้โปรแกรมหลักนำแต่ละส่วนมารวมกัน ดังตัวอย่าง เช่น</p>\n<p><strong>ตัวอย่างที่ 1<br />\n         </strong>โปรแกรมนี้จะให้เลือกเลข 1 หรือ 2 ถ้าหากเลือกเลข 1 คอมพิวเตอร์จะวาดรูปคนยิ้ม ถ้าเป็นเลข 2 จะเป็นรูปคนหน้าดุ การทำงานของโปรแกรมจะสร้างโปรแกรมย่อยสำหรับวาดรูปส่วนต่างๆ ของใบหน้า และให้โปรแกรมหลักเรียกส่วนต่างๆ มาทำงาน </p>\n<p>program   Faces;<br />\nuses  crt;<br />\nvar  choice : integer; </p>\n<p>procedure DRAW_TOP;      {วาดผม}<br />\nbegin<br />\n       writeln(\'|^^^^|\');<br />\nend;</p>\n<p>procedure DRAW_EYES;      {วาดรูปตา}<br />\nbegin<br />\n       writeln(\' @ @ \');<br />\nend;</p>\n<p>procedure DRAW_NOSE;      {วาดรูปจมูก}<br />\nbegin<br />\n       writeln(\' \\ / \');<br />\nend;</p>\n<p>procedure DRAW_SMILE;        {วาดปากหน้ายิ้ม}<br />\nbegin<br />\n       writeln(\' \\ _/ \');<br />\nend;</p>\n<p>procedure DRAW_FROWN;        {วาดปากหน้าดุ}<br />\nbegin<br />\n       writeln(\'  __  \');<br />\n       writeln(\' /  \\  \');<br />\nend;</p>\n<p>begin                                      {โปรแกรมหลัก}<br />\nclrscr;                                      { ลบจอภาพ }<br />\n       write(\'Enter 1 for happy face or 2 for sad face \');<br />\n       readln(choice);<br />\n       writeln;<br />\nDRAW_TOP;                            { เรียกโปรแกรมย่อยวาดผม }<br />\n       DRAW_EYES;                    { เรียกโปรแกรมย่อยวาดตา }<br />\n       DRAW_NOSE;                    { เรียกโปรแกรมย่อยวาดจมูก }<br />\n           if choice = 1<br />\n           then DRAW_SMILE<br />\n       else DRAW_FROWN<br />\nend.\n</p>\n<p>\n                                                                               <a href=\"/node/40498\" title=\"กลับสู่หน้าหลัก\"><img border=\"0\" align=\"middle\" width=\"70\" src=\"/files/u18287/home_copy.gif\" alt=\"กลับสู่หน้าหลัก\" height=\"76\" style=\"width: 43px; height: 51px\" /></a>\n</p>\n', created = 1715942371, expire = 1716028771, headers = '', serialized = 0 WHERE cid = '3:0e4ddc5ac7b1edd65707b1e82f7e4fad' in /home/tgv/htdocs/includes/cache.inc on line 112.

หน่วยการเรียนรู้ที่ 16 โปรแกรมย่อย (Subprogram)

      
โปรแกรมย่อย (Procedure)

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

โครงสร้างโพรซีเยอร์
         
ในการเขียนโปรแกรมทุกโปรแกรมจะต้องมีโปรแกรมหลักที่อยู่ใน Begin กับ End. แต่ถ้ามีการสร้างโพรซีเยอร์หรือโปรแกรมย่อยขึ้น จะต้องเขียนโพรซีเยอร์หรือโปรแกรมย่อยไว้นอกโปรแกรมหลัก โครงสร้างของโพรซีเยอร์เป็นดังนี้

รูปแบบ
         procedure      
Procedure_Name;
         begin
                               
statement;
         end;

        จะเห็นได้ว่าโพรซีเยอร์นั้นมีโครงสร้างคล้ายกับโปรแกรม จะเริ่มด้วยคำว่า Procedure และตามด้วยชื่อโพรซีเยอร์ โดยชื่อนี้จะต้องเป็นไปตามกฎการตั้งชื่อที่ได้ศึกษามา ส่วนการทำงานต่างๆ ภายในโพรซีเยอร์จะเป็นสเตตเมนต์ที่อยู่ภายใน begin กับ end; ในโพรซีเยอร์นั้นจะต้องไม่มี uses เมื่อโปรแกรมหลักต้องการเรียกโพรซีเยอร์ขึ้นมาทำงานก็ทำเพียงเรียกชื่อโพรซีเยอร์ขึ้นมาเท่านั้น
         ในการเขียนโปรแกรมที่มีขนาดใหญ่ โครงสร้างแบบโพรซีเยอร์จะช่วยทำให้โปรแกรมดูง่ายขึ้น สามารถแยกโปรแกรมออกเป็นส่วนๆ ได้ อย่างเช่น ถ้าหากต้องการให้คอมพิวเตอร์วาดรูปหน้าคน เราอาจแบ่งเป็นส่วนที่วาดหัว ส่วนที่วาดตา ส่วนที่วาดปาก ส่วนที่วาดจมูก จากนั้นให้โปรแกรมหลักนำแต่ละส่วนมารวมกัน ดังตัวอย่าง เช่น

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

program   Faces;
uses  crt;
var  choice : integer;

procedure DRAW_TOP;      {วาดผม}
begin
       writeln('|^^^^|');
end;

procedure DRAW_EYES;      {วาดรูปตา}
begin
       writeln(' @ @ ');
end;

procedure DRAW_NOSE;      {วาดรูปจมูก}
begin
       writeln(' \ / ');
end;

procedure DRAW_SMILE;        {วาดปากหน้ายิ้ม}
begin
       writeln(' \ _/ ');
end;

procedure DRAW_FROWN;        {วาดปากหน้าดุ}
begin
       writeln('  __  ');
       writeln(' /  \  ');
end;

begin                                      {โปรแกรมหลัก}
clrscr;                                      { ลบจอภาพ }
       write('Enter 1 for happy face or 2 for sad face ');
       readln(choice);
       writeln;
DRAW_TOP;                            { เรียกโปรแกรมย่อยวาดผม }
       DRAW_EYES;                    { เรียกโปรแกรมย่อยวาดตา }
       DRAW_NOSE;                    { เรียกโปรแกรมย่อยวาดจมูก }
           if choice = 1
           then DRAW_SMILE
       else DRAW_FROWN
end.

                                                                               กลับสู่หน้าหลัก

สร้างโดย: 
ว่าที่ ร.ต. อัศวิน สุรวัชโยธิน

มหาวิทยาลัยศรีปทุม ผู้ใหญ่ใจดี
 

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

ช่วยกันนะครับ 
ไทยกู๊ดวิวจะได้อยู่นานๆ 
ไม่ถูกปิดเสียก่อน

ขอขอบคุณในความร่วมมือครับ

อ่านรายละเอียด

ด่วน...... ขณะนี้
พระราชบัญญัติลิขสิทธิ์ (ฉบับที่ 2) พ.ศ. 2558 
มีผลบังคับใช้แล้ว 
ขอให้นักเรียนและคุณครูที่ใช้งาน
เว็บ thaigoodview ในการส่งการบ้าน
ระมัดระวังการละเมิดลิขสิทธิ์ด้วย
อ่านรายละเอียดที่นี่ครับ

 

สมาชิกที่ออนไลน์

ขณะนี้มี สมาชิก 0 คน และ ผู้เยี่ยมชม 331 คน กำลังออนไลน์