โปรแกรมย่อย อาจารย์สมเกียรติ ช่อเหมือน

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร
Advertisements

หลักการโปรแกรม 1 Lecture 12: อาร์เรย์หนึ่งมิติ
Array ธนวัฒน์ แซ่ เอียบ. The concept of array อาเรย์ : กลุ่มของข้อมูลที่มีชนิดเดียวกันและถูก จัดเก็บเรียงลำดับต่อเนื่องกัน ตัวแปร x สามารถจัดเก็บค่ามากกว่า.
การเขียนคำสั่งควบคุม การทำงานขั้นพื้นฐาน
หลักการโปรแกรม 1 Lecture 14: โปรแกรมย่อย ( การส่งพารามิเตอร์ แบบ pass by reference)
Structure Programming การเขียนโปรแกรมเชิงโครงสร้าง
การใช้งานโปรแกรม SPSS
ซอฟต์แวร์ระบบที่รู้จักกันดี คือซอฟต์แวร์ควบคุมการปฏิบัติการ ของคอมพิวเตอร์ที่เรียกว่า ระบบปฏิบัติการ ระบบปฏิบัติการเป็นชุดคำสั่งที่ใช้ควบคุมระบบฮาร์ดแวร์และ.
LAB ตัวแปร : Variables ในการเขียนโปรแกรมเราต้องการให้โปรแกรม จดจำค่าต่างๆ ไว้ เช่นเมื่อรับค่าข้อมูลจาก ผู้ใช้ หรือค่าที่ได้จากการคำนวณใดๆ ค่า.
Chapter 10 Arrays Dept of Computer Engineering Khon Kaen University.
Computer in Business เรื่อง การใช้งาน Access เบื้องต้น.
ชนิดของข้อมูล และการคำนวณทางคณิตศาสตร์
กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
หน่วยที่ 5 การเวียนเกิด
ซอฟต์แวร์และการเลือกใช้
หน่วยที่ 6 แถวลำดับ (Array)
งานเทคโนโลยีสารสนเทศ ( หน่วยเทคโนโลยี บริการ ) โครงการอบรมพัฒนาบุคลากร คณะแพทยศาสตร์ และ โรงพยาบาล มหาวิทยาลัยนเรศวร งานเทคโนโลยีสารสนเทศ ( หน่วยเทคโนโลยี
ตัวแปร และชนิด ข้อมูล. ตัวแปร การกำหนดตัวแปรเป็นการใช้ ชื่อตัวแปรแทน ตำแหน่งบนหน่วยความจำ สำหรับเก็บ ข้อมูลระหว่างการ ประมวลผล ซึ่งอาจเป็นข้อมูลนำเข้า.
ARRAY & PRINTF สาขางานคอมพิวเตอร์ธุรกิจอาจารย์จิรา ภรณ์ เขตกุฎี
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
ซอร์ฟแวร์ ( Software ). Microsoft excel Microsoft excel Microsoft power point.. Link Link.
ตอนที่ 2 โครงสร้างภาษา C Arduino เบื้องต้น
เกม คณิตคิดเร็ว.
โครงสร้างโปรแกรมภาษา C
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
รายการ(List) [2] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
รายการ(List) [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
บทที่ 5 อินพุตและเอาต์พุต
โครงสร้างการทำงานแบบเรียงลำดับ
แนวข้อสอบ Final (จดด่วน)
ครูวีรธรรม เทศประสิทธิ์ แผนกวิชาคอมพิวเตอร์ธุรกิจ
การประยุกต์ Logic Gates ภาค 2
บทที่ 1 สถาปัตยกรรมของระบบฐานข้อมูล (Database Architecture)
บริษัท พัฒนาวิชาการ (2535) จำกัด
การจัดการระบบฐานข้อมูล ภาษาที่ใช้ในระบบจัดการฐานข้อมูล
การพัฒนาการใช้งานในระบบเว็บ
รายการ(List) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
บทที่ 7 การหาปริพันธ์ (Integration)
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
BC320 Introduction to Computer Programming
โครงสร้างภาษา C Arduino
บทที่ 1 ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์
QUEUE คิวจะมีโครงสร้างแบบเชิงเส้นเหมือน stack แต่แตกต่างตรงที่ queue มีตัวชี้ 2 ตัวคือ หัว(Head) และหาง(Tail) โดยการใส่ข้อมูลเข้าและนำข้อมูลออก จะมีลักษณะ.
บทที่ 1 โครงสร้างคอมพิวเตอร์พื้นฐาน
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
บทที่ 13 การจัดการไฟล์ (File Management)
ตัวแปรกับชนิดของข้อมูล
Creating And Using Exceptions
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
Object-Oriented Programming Paradigm
Object-Oriented Programming การเขียนโปรแกรมเชิงอ็อบเจ็กต์
บริษัท พัฒนาวิชาการ (2535) จำกัด
การเขียนภาษาจาวาเบื้องต้น
Week 5 C Programming.
ผู้ช่วยศาสตราจารย์จุฑาวุฒิ จันทรมาลี
หน่วยที่ 6 อะเรย์ของอักขระ
บทที่ 7 การประมวลผลอาร์เรย์
บทที่ 8 การแก้ไขข้อผิดพลาดโปรแกรม(Debugging)
บทที่ 10 การแบ่งปัญหาใหญ่ออกเป็นปัญหาย่อยและการสร้างลำดับขั้นตอนย่อย
2 โครงสร้างข้อมูลแบบสแตก (STACK).
บทที่ 2 โครงสร้างข้อมูลแบบแถวลำดับหรืออาร์เรย์ (Array)
บทที่ 10 วงจรรายได้.
Chapter 3 : Array.
Array Sanchai Yeewiyom
Array: One Dimension Programming I 9.
รูปนิสิต บทคัดย่อ ผลการทดลอง วัตถุประสงค์ วิธีการที่นำเสนอ บทนำ
การเขียนโปรแกรมคอมพิวเตอร์ แบบภาษาเชิงวัตถุ
ฟังก์ชันของโปรแกรม Computer Game Programming
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
พอยเตอร์ #include <stdio.h> void main() { int age; int *pointer;
ใบสำเนางานนำเสนอ:

โปรแกรมย่อย อาจารย์สมเกียรติ ช่อเหมือน สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี (tko@webmail.npru.ac.th)

เนื้อหาที่สนใจ โปรแกรมย่อย (subprogram) โปรแกรมย่อยหรือฟังก์ชัน (function) รูปแบบการประกาศและเรียกใช้ฟังก์ชัน การแยกส่วนของโปรแกรมด้วยฟังก์ชัน การรับส่งค่าข้อมูลระหว่างฟังก์ชัน อาร์กิวเมนต์ของฟังก์ชัน (Function Arguments) ตัวชี้ (Pointer) การคืนค่าข้อมูลกลับของฟังก์ชัน การรับส่งข้อมูลหลายค่าระหว่างฟังก์ชัน การจัดเก็บค่าลงในหน่วยความจำโดยใช้ตัวชี้ http://1.bp.blogspot.com/-tw1caa8lBus/Vphe8RV3rwI/AAAAAAAAAKM/wAhp-ds7iQM/s1600/8.png

โปรแกรมย่อย (subprogram) โปรแกรมย่อยใช้ในการประมวลผลข้อมูล แล้วอาจมีการส่งค่ากลับไปยังโปรแกรม หลัก (main program) การรับส่งข้อมูลในการคำนวณของโปรแกรมย่อยมี 2 แบบคือ แบบฟังก์ชัน (function) ซึ่งจะส่งค่ากลับไปยังโปรแกรมหลักได้ทีละค่า แบบโพรซีเยอร์ (procedure) ซึ่งจะส่งค่าที่คำนวณ กลับไปโปรแกรมหลักได้ทีละหลายค่า

โปรแกรมย่อยหรือฟังก์ชัน (function) การแบ่งโปรแกรมออกเป็นส่วนเล็กๆ แล้วนำมาประกอบเข้ากัน เป็นแนวคิดจากบนลงล่างซึ่งอาจเกิดการทำงานที่ซ้ำซ้อนกันได้ โดยหลักการแยกและประกอบถือเป็นหลักการที่สำคัญในการเขียนโปรแกรมขนาดใหญ่ เพิ่มประสิทธิภาพในการนำโค้ดกลับมาใช้ใหม่ ในการแยกส่วนด้วยการสร้างฟังก์ชันในภาษา C สามารถกำหนดฟังก์ชันได้ การประกาศหรือนิยามฟังก์ชัน เพื่อให้ส่วนหลักสามารถใช้งานได้ http://mathinsight.org/function_examples

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

รูปแบบการประกาศและเรียกใช้ฟังก์ชัน 1) การประกาศฟังก์ชัน function(); 2) ประกาศให้ฟังก์ชันหลักทราบ 3) เรียกใช้ ฟังก์ชัน แบบไม่ส่งและรับค่ากลับมาประมวลผล #include <stdio.h> #include <conio.h> void function(); //2 void main(){ function(); //3 function(); getch(); } void function(){ printf("test Function.\n"); } //1 2 3 1

การแยกส่วนของโปรแกรมด้วยฟังก์ชัน #include <stdio.h> #include <conio.h> void function1(); void function2(); void main(){ function1(); function2(); getch(); }

การรับส่งค่าข้อมูลระหว่างฟังก์ชัน การส่งค่าลำดับที่ 8 ไปยัง input_function() ผ่านตัวแปร no เพื่อแสดงผล void ส่งค่าว่างเปล่า #include <stdio.h> #include <conio.h> void input_function(int no); void main(){ input_function(8); getch(); } void input_function(int no){ printf("input no.%d",no); parameter agument

อาร์กิวเมนต์ของฟังก์ชัน (Function Arguments) อาร์กิวเมนต์ต้องประกาศตัวแปรที่รับค่า เรียกว่าพารามิเตอร์ของฟังก์ชัน พารามิเตอร์ทำหน้าที่เหมือนตัวแปรที่ใช้ภายในฟังก์ชัน ถูกสร้างขึ้นเมื่อเข้าสู่ฟังก์ชันและถูกทำลายเมื่อออก การเรียกใช้ฟังก์ชัน มีสองวิธีในการส่งผ่านอาร์กิวเมนต์ไปยังฟังก์ชัน Call by value วิธีนี้จะคัดลอกค่าที่แท้จริงของอาร์กิวเมนต์เป็นพารามิเตอร์ Call by reference วิธีนี้จะคัดลอกที่อยู่ของอาร์กิวเมนต์เป็นพารามิเตอร์ ค่าเริ่มต้นของภาษาซี ใช้วิธี Call by value https://eganenergy.com/industry-expertise/messaging/

Call by value int fn1(int x , int y) { y = x- 1 ; x*=10; #include <stdio.h> #include <conio.h> void main() { int x = 2 , y = 4; printf( "main x=%d y= %d\n",x,y); y = fn1(x,y); getch(); } int fn1(int x , int y) { y = x- 1 ; x*=10; printf("fn1 x=%d y=%d\n",x,y); return x ; }

ตัวชี้ (Pointer) ตัวแปรทุกตัวคือตำแหน่งหน่วยความจำ ทุกตำแหน่งของหน่วยความจำสามารถเข้าถึงได้โดยใช้เครื่องหมาย (&) ไม่ต้องประกาศตัวแปรเพิ่ม ช่วยให้ประหยัดหน่วยความจำ ใช้ตัวชี้ร่วมกับการส่งผ่านค่าแบบอ้างอิงกับหน่วยความจำ ทำให้ไม่ต้องคัดลอกค่า ทำให้ทำงานได้เร็วขึ้น ใช้ตัวชี้จองหน่วยความจำตามขนาดที่ต้องการในภายหลัง ตัวชี้จะใช้วิธีการที่เรียกว่า linked list ทำให้สามารถจองหน่วยความจำที่ว่างไม่ติดกัน

การเข้าถึงหน่วยความจำด้วยตัวชี้ (&) #include <stdio.h> #include <conio.h> int main() { int var1; char var2[10]; printf("Address of var1 variable: %x\n", &var1 ); printf("Address of var2 variable: %x\n", &var2 ); getch(); return 0; } https://www.tutorialspoint.com/cprogramming/c_pointers.htm

การประกาศตัวชี้ (*) ตัวชี้เป็นตัวแปรที่มีค่าเป็นที่อยู่ของตัวแปรคือ ที่อยู่หน่วยความจำ #include <stdio.h> #include <conio.h> void main() { int var = 20; // การประกาศตัวแปรทั่วไป int *ip; // การประกาศตัวชี้ ip = &var; // เก็บตำแหน่งที่อยู่ของ var ในตัวชี้ ip printf("Address of var variable: %x\n", &var ); // ตำแหน่งที่จัดเก็บในตัวชี้ ip printf("Address stored in ip variable: %x\n", ip ); // ค่าจริงที่ตัวชี้ ip ชี้อยู่ printf("Value of *ip variable: %d\n", *ip ); getch(); } http://cecilsunkure.blogspot.com/2010/11/pointers-basics.html

Call by reference #include <stdio.h> #include <conio.h> void fn1(int *px) { *px=20; printf("fn1 *px=%d\n" , *px); } void main() int x = 6 ; printf("main x=%d\n",x); fn1(&x); getch(); http://www.javawithus.com/tutorial/call-by-value-and-call-by-reference

การคืนค่าข้อมูลกลับของฟังก์ชัน เมื่อเรียกใช้ฟังก์ชัน output_func() จะคืนค่าตัวเลขระหว่าง 0-999 มาที่ฟังก์ชันหลัก เพื่อใช้แสดงผลรหัส 4 หลัก #include <stdio.h> #include <conio.h> #include <stdlib.h> int output_func(); void main(){ int id=output_func(); printf("id:%.4d",id); getch(); } int output_func(){ int r=rand()%1000; return r;

การรับส่งค่าข้อมูลและคืนค่าข้อมูลของฟังก์ชัน การส่งค่า f ไปยังฟังก์ชัน output_func และคืนค่า r เพื่อแสดง id 4 หลัก #include <stdio.h> #include <conio.h> #include <stdlib.h> int output_func(int f); void main(){ int id=output_func(23); printf("id:%.4d",id); getch(); } int output_func(int f){ int r; if(f>=500) r=rand() % 1000; else r=f; return r;

การรับส่งข้อมูลหลายค่าระหว่างฟังก์ชัน #include <stdio.h> #include <conio.h> void input_func(int no,char name[10]); void main(){ input_func(18,"somkiat"); getch(); } void input_func(int no,char name[10]){ printf("input no.%d name:%s",no,name);

การจัดเก็บค่าลงในหน่วยความจำโดยใช้ตัวชี้ ใช้การคืนข้อมูลเป็นชุด เช่น Array, struct, Union, Object ร่วมกับ ตัวชี้ #include <stdio.h> #include <conio.h> void fn1(int x , int y,int *r) { for(int i=x;i<=y;i++){ r[i]=i*6; } } void main() { int r[10]; int x = 1 , y = 4; fn1(x,y,r); printf("adress:%d | value: %d\n",&r[i],r[i]); } getch();

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