การเขียนโปรแกรม : ค่า return คืออะไร ต้องมีไว้ทำไม

ขอแบบคำตอบ ภาษาพูดนะครับ ไม่เอาภาษาทางการ เพราะว่าผมก็เคยลอง search google ดูแล้ว แต่ก็ยังไม่เข้าใจความหมาย และการทำงานของมันอยู่ดี

ถ้าจะไล่ให้ผมไปหา search ข้อมูลเอาเอง ผมก็คงไม่มาตั้งกระทู้ให้ทุกคนด่าผมหรอกครับ ^^

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

PaPaSEK Wed, 05/12/2012 - 23:14

function คือชุดคำสั่งที่ถูกรวมไว้ใน block นึงๆ มีหน้าที่ใดหน้าที่หนึ่งเสมอครับ

function อาจมีการรับค่าจากภายนอกมาประมวณผล หรืออาจไม่มีก็ได้

เช่น function ชื่อ MIN รับค่าเป็นชุดของตัวเลข มีหน้าที่หาค่าที่น้อยที่สุดจากชุดของตัวเลขที่เราส่งให้มัน

ค่าน้อยที่สุดที่เราได้ หรือเรียกอีกอย่างว่าผลลัพท์ของ function MIN คือค่า return ครับ

function ใดๆ อาจจะมีการ return ค่า หรืออาจจะไม่มีก็ได้

ในภาษาระดับสูง ค่า return จะต้องระบุชนิดด้วย เช่น string, integer, float

หวังว่าคงเป็นภาษาพูดพอนะครับ กำลังเริ่มเขียนโปรแกรมหรือครับ?

Benzines Thu, 06/12/2012 - 00:41

In reply to by PaPaSEK

ใช่แล้วครับ ผมเพิ่งจะเริ่มเขียนโปรแกรมครับ ยัง งงๆ อยู่ในหลายๆเรื่อง

ขอบคุณสำหรับคำตอบนะครับ ^^

ยินดีครับ

แต่ขอแนะนำหน่อยว่าควรจะหาหนังสือมาอ่านจริงจังสักหนึ่งเล่ม เพื่อให้เข้าใจแนวพื้นฐานต่างๆ ครับ มีหลายๆ เรื่องที่มันเป็นภาคทฤษฎีที่เราควรเรียนรู้เอาไว้ เช่น pointer, reference, array, collection, data structure อะไรพวกนี้

บางคนมองว่าเอาไปเรียนรู้ที่หลังก็ได้ แต่ผมมองว่าพวกนี้คือการฝึกแปรลูก ฝึกส่งบอล ฝึกเตะหลังเท้า ฯลฯ ที่พอเรามีพื้นฐานแน่นแล้วจะไปพลิกแพลงเป็นไซ้ก้อย ไซ้โป้งได้ไม่ยาก แถมส่งบอลแม่นขึ้นด้วยครับ

ผมเจอว่าน้องๆ ที่จบใหม่หลายคนถามเรื่อง array มันยังไม่เข้าใจกันเลย เรียนมา 4 ปีนี่ลอกโค้ดได้อย่างเดียว ... ให้แก้โค้ดหรือเขียนโค้ดใหม่ก็ทำไม่เป็น เพราะพื้นฐานไม่แน่นครับ

ผมเห็นด้วยครับ จริงแล้วควรเริ่มจากทำความเข้าใจ Concept พื้นฐานของ Com Sci ก่อน ไม่งั้นฝืนไปก็รังแต่จะตัน ลองอ่านนี่ดู เพื่อจะเข้าใจ Concept คร่าวก่อนครับ

การออกแบบและพัฒนาโปรแกรม

achidad Wed, 05/12/2012 - 23:50

อืม ตอบตามความเข้าใจของผมก็แล้วกันครับ

ค่า return แบ่งเป็น 2 แบบคือ

  1. ค่า return ของ function

    เช่น function absolute($value) เป็น function ที่ทำให้ค่า $value กลายเป็นค่า สัมบรูณ์ ดังนั้น function absolute() จะต้อง return ค่าที่เป็นค่าสัมบรูณ์เพื่อเอาไปใช้ต่อ

  2. ค่า return ของโปรแกรม

    ตัวโปรแกรมทุกโปรแกรมจะ return ค่าเมื่อทำงานเสร็จสิ้น เช่น rasdial บน windows ถ้าทำการเชื่อมต่อไปยังปลายทางสำเร็จจะ return ค่า 0 ถ้าไม่สำเร็จจะ return ค่าอื่น เช่น 678 ค่าที่ return กลับมาจำทำให้เราทราบว่าเกิดความผิดพลาดเพราะอะไรครับ ลองอ่านเกี่ยวกับ ERRORLEVEL ของ windows ดูครับ

ที่จริง คือ ผมไม่รู้ว่าค่า return คืออะไรเลยอ่ะครับ

ต้องขอบคุณนะครับ ที่มาช่วยตอบ ทำให้ผมรู้ว่านอกจากจะอยู่ใน function แล้ว ยังมีอยู่ใน program ด้วย

ขอบคุณนะครับ ^^

มันก็ตรงๆ นะครับ

"คืน" กลับหาอะไรสักอย่าง ส่วนใหญ่ก็ฟังก์ชั่น คืนค่า ที่มันทำหน้าที่ของมันให้กับคนที่เรียก

ตัวอย่างที่น่าจะเจอกันมาทุกคน

function add(a,b){
  ans = a + b;

  return ans;
}

เวลาเรียกใช้

ret = add(1,2); // ret = 3

ป.ล. โค้ดข้างบนนี่ ไม่ได้อ้างอิงกับภาษาอะไรนะครับ ตัวอย่างเฉยๆ

น่าจะหมายถึง return ของ function น่ะแหละครับ

มีเอาไว้เพื่อส่งค่ากลับ หากต้องการส่งค่า ซึ่งมันไม่จำเป็นต้องมีก็ได้

เช่นเราเขียนฟังก์ชั่นย่อยเพื่อคำนวณผลลัพธ์ของ 3x5 โดยเอา 3+3+3+3+3 ไปเขียนเป็นฟังก์ชั่นย่อย มันก็จะทำได้สองแบบ คือเขียนแบบ return หรือไม่ return

  • ถ้าเขียนแบบไม่ return ก็สั่งให้มันทำ 3+3+3+3+3 แล้วแสดงผลลัพธ์ออกทางหน้าจอเลย แล้วกลับไปทำโปรแกรมหลักต่อ

  • ถ้าเขียนแบบ return ก็ต้องประกาศตัวแปรก่อน (เจ้าของกระทู้คงเข้าใจคำว่าประกาศตัวแปรนะครับ) แล้วเซตค่าตัวแปรที่พึ่งประกาศมาให้เท่ากับฟังก์ชั่น 3x5 ผลลัพธ์ก็คือ โปรแกรมจะเรียกใช้งาน 3x5 เหมือนข้างบน แต่หลังจากที่มันคำนวณ 3+3+3+3+3 เสร็จ มันจะเก็บค่านั้นผลลัพธ์ไว้ในตัวแปรที่เราประกาศ ตัวแปรนั้นจะมีค่าเท่ากับ 15 ครับ นี่แหละคือการ return แล้วค่อยเอาตัวแปรนั้นไปแสดงผลลัพธ์อีกที หรือจะเก็บไว้คำนวณอย่างอื่นต่อได้

int max(int a, int b) { int maxval; if (a > b) { maxval = a; } else { maxval = b; } return maxval; }

จากตัวอย่าง นะครับ

ก็คือ มันจะ return ผลลัพธ์จากการที่นำ a > b มาเก็บไว้ที่ return maxval;

ซึ่งก็คือ เราสามารถนำ maxval ไปใช้ต่อได้ โดยที่ค่า maxval จะเท่ากับ a หรือ b หลังจากที่มันคำนวณแล้ว

ผมเข้าใจถูกต้องมั้ยครับ

การเขียนในรูปแบบแรก (รับค่าเข้าไปแล้วพิมพ์ค่าคืน) อันนี้ไม่แนะนำครับ เพราะตอนที่พัฒนาโปรแกรมจนซับซ้อนแล้วจะงงว่า output ที่เห็นนี้มาจากส่วนไหนของโปรแกรม

เอาภาษาพูดนะ

Case แรก แบบมี return กรณีนี้สมมติว่าระบุว่าตอบกลับเป็นคำพูด Return Type เป็นคำพูด อาจจะเป็น String อะไรสักอย่าง

A: "เธอๆ เธอรักฉันไหม"

B: "รักมั้ง"

Case สอง แบบไม่มี return กรณีนี้บอกให้ไปทำอะไรสักอย่าง โดยไม่รอผลลัพธ์ ไม่รอการตอบกลับ ไม่รอ return

A: "เธอกลับบ้านไป"

B: (B ก็เดินกลับบ้านไปเงียบ A ไม่ได้รอดูว่าจะได้เห็น หรือรู้ว่า B กลับบ้านจริงหรือเปล่า)

Case สาม แบบมี return กรณีนี้ระบุว่าผลลัพธ์เป็นการกระทำอะไรสักอย่าง

A: "เธอรักฉันไหม"

B: (กอดแน่นๆ แล้วก็จุ๊บทีนึง)

neonicus Thu, 06/12/2012 - 12:28

procedure ไม่มี return เพราะเป็นแบบว่า "แกไปทำตามนี้หน่อย"

function มี return เพราะเป็นแบบว่า "แกไปทำตามนี้แล้วมาตอบด้วยนะว่าผลมันเป็นยังไง"

ตัวอย่าง procedure แบบเขียนเองเช่น "remove_object(object_name)" ซึ่งไม่ตอบอะไรมาเลย

แต่ function แบบเขียนเองเช่น "remove_object(object_name)" ซึ่งตอบมาด้วยว่า success หรือ fail

ผมชอบเขียน function มากกว่า
เพราะถึงแม้อยากจะสั่งเฉยๆ เราก็รับ return มาเฉยๆแล้วไม่ต้องสนใจก็ได้

ถ้าบอกแบบนี้ล่ะครับ

การเรียก function เหมือนกับการให้คนทำงานชิ้นนึงให้เรา
พอทำงานเสร็จ คนนั้นก็จะให้ "อะไรบางอย่าง" กลับมาให้เรา

การทำงานก็คือ โค้ดที่เขียนใน function สุดท้ายแล้ว ถ้ามีคำว่า return ก็คือ function นี้จะให้อะไรกับเรา

ยังมีประเภทของค่าที่ จะต้อง return อีกอันนั้นไว้ทีหลังละกันครับ

return คือจุดสิ้นสุดของ function / method ครับ.
หลายๆครั้งที่เราเห็น return หลายๆจุดใน function เดียวกันก็ยังได้ และเมื่อสิ้นสุดการทำงานใน function, มันจะต้อง return ค่าด้วยถ้า function นั้นประกาศไว้ว่าจะ return คำตอบ.

จริงๆแล้วโปรแกรมมันก็คือ function ที่เราติดปากเรียกว่า main นะแหละครับ. มันเป็นการตกลงระหว่างคนที่ทำ OS ให้ใช้กับคนที่ทำโปรแกรมไปรันบน OS ประมาณว่าถ้าจะมารันโปรแกรมบน OS ฉัน, นายก็เตรีม function ที่ชื่อ main ไว้นะเด๋วฉันจะไปเรียกเอง. ส่วนค่า return ในระดับ main function จะเป็นค่า error ไว้ให้ OS หรือคนเรียกใช้เช็คว่าเกิดข้อผิดพลาดอะไรมั๊ย ต่างกับ function ที่ลึกเข้าไปในโปรแกรม ที่ return ผลจากการทำงานจริงๆ.

ถ้ายังจำใด้ return มาจากฟังชั้นแบบคณิตศาสตร์ครัข

ตัวอย่าง

  • ให้ f(x,y) = x * y
  • f(2,3) = 2 * 3 = 6

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

เวลาเขียนบนคอม

  • ให้ f(x,y) = x * y

จะออกมาเป็น

function f(x,y){

return x*y;

}

เพราะผมตกทุกเทอมตั้งแต่ที่เคยเรียนมาไงครับ

อันนี้จริงๆ นะเนี่ย ขออีกรอบ (╯°□°)╯︵ ┻━┻

จริงๆ แล้วผมเกลียดอาจารย์คณิตฯ ครับ ผมไม่รู้ว่าโชคร้ายหรือโชคดีที่อยู่ห้องคิงตลอด แล้วคนสอนก็นึกว่าเราฉลาดไง ... แล้วก็แบบว่าเรือหางยาวติดเครื่องเจ็ท

ถ้ากล้องซูมกลับหลังไป จะเห็นผมยืนอ้าปากค้างแล้วบอกว่า "รอกูด้วยยยยย" แต่ไม่มีใครได้ยินเพราะมันไปกันหมดแล้ว

ผมก็ไม่ค่อยชอบนะ แต่พูดจริงๆ โปรแกรมมิ่งกับคณิตศาสตร์แยกกันไม่ออกหรอกครับ ยิ่งพวกเกมนี่ยิ่งแล้วใหญ่เจอแต่แมทริก เผลอๆ ลากฟิสิกส์เข้ามาเกี่ยวด้วย แค่คิดก็ปวดหัวละครับ

ความจริงผมพบว่าผมไม่ได้เกลียดคณิต ผมว่าเป็นวิชาที่สนุกมาก เพียงแต่ว่าผมเกลียดอาจารย์ที่สอน ผมเลยอคติโดยอัตโนมัติครับ

อาจเป็นเพราะผมไม่รู้ว่าจะเอามันมาใช้อะไรด้วยมั้ง sin, cos, tan ใครจะรู้ว่าผมจะเข้าใจจากการเรียนด้วยตัวเองในเวลาไม่ถึง 10 นาที ทั้งๆ ที่ตอนเรียน เรียนเป็นเทอมผมก็ไม่เข้าใจ

อาจเป็นเพราะโมเดลการสอนด้วยมั้ง

ที่ผมศึกษาเองเป็นเพราะผมจะทำปีกเครื่องบินบังคับ แล้วมันต้องหามุมยกของปีก

sin, cos, tan ช่วยให้เรื่องการทำมุมเป็นเรื่องง่ายขึ้นอย่างไม่น่าเชื่อ แถมยังเอาท.สามเหลี่ยมของปีทาโกรัสมาใช้ได้ด้วย

ตอนเรียนไม่มีใครสอนแบบมีตัวอย่างครับ สอนแค่ว่า CxC = AxA + BxB

นึกถึง concept ของคำว่า function ก่อนครับ

ตามที่คุณ put4558350 บอกครับว่า function ในภาษาโปรแกรมมันมีที่มาจาก function ทางคณิตศาสตร์

f(x) = y ความหมายคือส่งค่า x เข้าไป "ทำอะไรสักอย่าง" แล้วจะได้ค่า y ออกมา

concept ของ function ก็คือการส่งตัวแปรเข้าไป "ทำอะไรสักอย่าง" เพื่อให้ได้ผลลัพธ์ออกมาเป็นตัวแปรใหม่ (ซึ่งจะมีค่าเหมือนหรือต่างกับค่าเดิมก็ได้)

การทำอะไรสักอย่าง คือการทำงานตามที่เขียนไว้ใน function

การส่งค่า คือการส่ง parameter เช่นส่งตัวแปร x1, x2, x3, ...

การได้ผลลัพธ์ออกมาเป็นค่าใหม่ คือการ return ครับ

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

moindy Sun, 09/12/2012 - 17:07

อยากตอบด้วย เคยงงแบบนี้เหมือนกัน

เอางงี้นะ ให้เขียนโปรแกรม ทอดไข่เจียวนะ

โปรแกรมทอดไข่เจียว มีไข่สองฟอง มีถ้วยรอรับการตีไข่ มีกระทะตั้งไฟร้อนๆ มีจานรอรับไข่เจียว

ขั้นแรก ผมตอกไข่สองฟองใส่ถ้วยแล้วเอาช้อนตีๆคนๆไข่ให้เป็นน้ำเหลืองๆ

ขั้นสอง ผมเอาถ้วยที่มีน้ำไข่สีเหลืองๆ ไปใช้งานต่อ

ขั้นสาม ผมเทไข่เหลวๆจากถ้วยลงไปในกระทะน้ำมันเดือด

ขั้นสี่ ผมทอดไข่ในกระทะจนเป็นไข่เจียวสวยๆ

ขั้นห้า ผมเอาไข่เจียวใส่จานพร้อมเอาไปทาน

อะไรคือรีเทิน? ไข่สองฟอง(รับอินพุตจากคีบอร์ด) -> ผ่านกระบวนการตีๆ(ฟังก์ชันตีไข่) -> กลายเป็นไข่เหลวๆน้ำเหลืองๆ(ค่าที่ return ออกมา)->อยู่ในถ้วย(ตัวแปรที่เก็บค่าที่รีเทินออกมา แล้วจะเอาไปใช้งานต่อ)

น้ำไข่ที่เกิดจากการตีไข่สองฟอง(ตัวแปรเก็บค่าที่รีเทินมาเมื่อกี้) -> เทลงกระทะร้อนๆเพื่อทอด(ฟังก์ชันทอดไข่)->กลายเป็นไข่เจียว(ค่าที่กำลังจะรีเทินออกไป)->เทไข่เจียวลงจาน(จานเป็นตัวแปรมารับค่าที่รีเทินออกมาจากฟังก์ชันทอดไข่)->จะเอาไปทานหรืออะไรต่อก็แล้วแต่ท่านเทอญ

เข้าใจไหมครับ หรืองง

... เงียบ สงสัยจะไม่ช๊อต

moindy Sun, 09/12/2012 - 17:19

return คือกริยา เหมือนนักฟุตบอลส่งลูกบอลให้กัน การส่ง คือกริยา

"ค่าreturn" คือ นาม ในการส่งฟุตบอลระหว่างนักฟุตบอล มันก็คือลูกบอลที่ผ่านการเตะจากอีกคนหนึ่งสู่อีกคนหนึ่ง

"ตัวรับค่า return " คือ นาม เมื่อมีการส่งของ ก็ต้องมีผู้รับของ

ดังนั้น สรรพสิ่งไม่สูญหายจากโลก จ่ายเงินย่อมได้งานreturnกลับมา เทน้ำมันลงไฟร้อนๆย่อมได้ไฟที่ร้อนกว่าreturnกลับมา กินข้าวเยอะๆพรุ่งนี้เช้าย่อมได้อุจาระreturnกลับออกมา

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

เขียนเรื่อยๆมาเรียงๆ โปรดอภัย