เข้าใจกัน Passing-by-value ใน functions

 

12674882_1053258481411360_770162928_o

 Functions and Classes

252682in41fsxg03

 ที่เราเลือกมาเสนอในครั้งนี้ เกี่ยวกับเรื่อง Passing-by-value(passing a two-dimensional array to a function)

function:

ผู้ที่ได้ออกแบบภาษาในยุคแรก ๆ ก็ได้คิดค้นวิธีแก้ปัญหาแบบนี้ไว้แล้ว Function ก็ได้ถือกำเนิดขึ้นมาเพื่อทำให้การทำงานที่ซ้ำ ๆ กันง่ายขึ้น ในภาษาอื่น ๆ ก็มีสิ่งที่ทำงานคล้าย ๆ Function อยู่ แต่มีชื่อเรียกต่างกัน เช่น Procedure, Subroutine หรือ Method ซึ่งในภาษาจาวา เราก็เรียกมันว่า Method นั่นเองครับ

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

เครดิต: http://www.jarticles.com/tutorials/basic/classAndObject.html

pass by Reference: คือ การส่งค่าไปยังฟังก์ชั่นที่ถูกเรียกใช้โดยส่งเป็นค่าตำแหน่งที่อยู่ (Address) ของตัวแปรไปซึ่งหากภายในฟังก์ชันมีการเปลี่ยนแปลงค่าของอาร์กิวเมนต์ที่ส่งไป ก็จะมีผลทำให้ค่าของ อาร์กิวเมนต์นั้นในโปรแกรมที่เรียกใช้เปลี่ยน ไปด้วย

            การผ่านค่าอาร์คิวเมนต์แบบนี้ ทำได้ ดังนี้

1) ต้องกำหนดอาร์กิวเมนต์ของฟังก์ชันเป็น pointer(*)

2) การเรียกใช้งานผ่าน Address เป็น argument (&)

3) ภายในฟังก์ชัน การดรียกใช้ formal argument เวลาใช้งานจะใช้ dereferencing operator (*)

 Pass by Value: คือ การ copy ค่าที่ผู้เรียกใช้ฟ้งก์ชันส่งให้กับฟังก์ชัน ไปยังตัวแปรแบบ local ในฟังก์ชัน

#ถ้ามีการเปลี่ยนแปลงค่าตัวแปรในฟังก์ชัน

– เป็นการเปลี่ยนแปลงค่าตัวแปรแบบ local ใน ฟังก์ชัน

– ไม่ส่งผลกระทบกับตัวแปรในส่วนที่เรียกใช้

#การส่งคืนค่าจากฟังก์ชัน

– copy ค่าจากฟังก์ชันกลับไปยังส่วนที่เรียกใช้

YL-109 843265b8tr69s6wa  YL-109

ผลที่แสดง หลังจากการเขียนโค๊ด YL-88

 

12516859_1589540768038423_395432069_o

รหัสแห่งที่มา :

#include “stdafx.h”

#include <iostream>

using std::cout;

using std::endl;

 

double yield(double array[][4],int n); //ประกาศฟังก์ชันประเภทdouble

 

int main(void)

{

double beans[3][4] = { {1.0,2.0,3.0,4.0},{5.0,6.0,7.0,8.0},{9.0,10.0,11.0,12.0} }; //ประกาศค่าbeansให้เป็นarray ขนาด 3*4 และเป็นประเภทdouble

cout<<endl<<“Yield = “<<yield(beans,sizeof beans/sizeof beans[0]) //มีการเรียกใช้ฟังก์ชันdouble yield เพื่อนำมาใชแสดงผลoutput

<<endl; //ขึ้นบรรทัดใหม่

system (“pause”); //ทำให้โปรแกรมหยุดทำงาน

return 0;

}

 

double yield(double beans[][4],int count){ //ประกาศฟังก์ชันประเภทdouble

double sum(0.0); //ประกาศค่าsum โดยให้มีค่าเท่ากับ0.0 และเป็นประเภทdouble

for(int i=0;i<count;i++) { //กำหนดให้ค่าi=0 และมีเงื่อนไขเป็น i<count โดยเมื่อจบลูปในแต่ละครั้งค่าiจะ+1

for(int j=0;j<4;j++){ //กำหนดให้ค่าj=0 และมีเงื่อนไขเป็น j<4 โดยเมื่อจบลูปในแต่ละครั้งค่าjจะ+1

sum+=beans[i][j]; //sum= sum+beans[i][j] โดยอิงค่า i กับ j จาก for loop

}

}

return sum; //ส่งค่าsum กลับไปยังบรรทัดที่มีการเรียกใช้ฟังก์ชันนี้

}

YL-105Youtube YL-105

https://www.youtube.com/watch?v=WOkl74H4LaI&feature=youtu.be

645906hmoluktu9a

ผู้พัฒนา

นางสาวศิริพร จตุรภุช

นางสาววรณัน รักสนิท

นางสาวรัชนีวรรณ กอวิรัตน์

นางสาวรสรินทร์ พนิตวงศ์

 

 

 

 

  •  
  •  
  •  
  •  
  •  
  •  
siriporn JAturapuch
at GlurGeek.Com
สวัสดีค่ะ ตอนนี้ทุกคนได้เข้ามาอยู่ในเว็บไซต์ GLURGEEK
หน้าเพจนี้เป็นอีกหนึ่ง Member
แนะนำตัว
ชื่อ ศิริพร จตุรภุช
ชื่อเล่น พริ้ม (ฟรุ้งฟริ้ง) เพรา
เชียร์หน้ากากนักร้องคือ หน้ากากแอปเปิ้ลที่เฉลย ออกมาเป็น โอ๊ต ปราโมช

Leave a Reply