เข้าใจกัน 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

Copyright © 2021 GlurGeek.Com. All Rights Reserved.