Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
ใบความรท 3เรอง การรบขอมล และการแสดงผล
(ประกอบแผนการสอนท3)รายวชา การโปรแกรมและการประยกต ง 40214
ชวงชนท 4
การแสดงผล (Output) การแสดงผลลพธ ปกตกคอแสดงออกทางจอภาพ ในภาษาซใชในรปของฟงกชน เชนเดยวกบงานอน ๆ โดยฟงกชนมาตรฐานทมใน library ฟงกชนทใชแสดงผลทางจอภาพ เชน printf() ,puts() , putchar() ฟงกชน เหลานอยใน header file ชอ stdio.h
ฟงกชน printf() เปนฟงกชนทใชแสดงผลลพธออกทางจอภาพ การแสดงผลทางจอภาพ
ดวยฟงกชนนสามารถกำาหนดรปแบบและรหสควบคมได โดยฟงกชน printf() มรปแบบ ดงน
printf(control string,argument list);โดย control string ประกอบดวย ขอความ รหสกำาหนดรป
แบบ(format code) รหสควบคม(control code) ทงหมดน ตองลอมดวยเครองหมาย คำาพด (") สวน argument list เปนรายการของตวแปร คาคงท หรอนพจนทจะแสดงออกทางจอภาพ หากม ตวแปร คาคงท หรอนพจน มากกวา 1 คา แตละคาจะคนดวยเครองหมาย คอมมา(,)
รหสกำาหนดรปแบบ(format code) เปนรหสกำาหนดรปแบบของตวแปร คาคงท หรอนพจนทจะแสดงผล เชน แสดงคาเลขจำานวนเตม หรอจำานวนจรง อกขระ ขอความ ฯลฯ รหสรปแบบทใชกบฟงกชน printf() จะเรมดวยเครองหมาย % ตามดวยรหสกำาหนดชนดการแสดงผล (conversion code) ดงตารางแสดงตอไปน
ตารางแสดงรหสกำาหนดรปแบบ และความหมายของรหสรหสรปแบบ
ความหมายหรอหนาทของรหสรปแบบ
%c ใชกำาหนดตำาแหนงทจะแสดง อกขระ 1 ตว (single character)%d , %i
ใชกำาหนดตำาแหนงแสดงเลขจำานวนเตม(integer หรอ int ) 1 จำานวนในรปเลขฐานสบ
%e , %E
ใชแสดงตวเลขทเปนจดทศนยม (floating point ,float)ในรป e เชน 2.15e+2 คอแทนคา 215
%f ใชกบขอมลเปน float และ double %g , %G
ใชกบขอมล float
%h ใชกบ short integer%o(ตว
โอ)ใชแสดง integer ในรปเลขฐานแปด
%x , %X
ใชแสดง integer ในรปเลขฐานสบหก (%x แสงเปนตวพมพเลก %X แสดงเปนตวพมพใหญ)
%s ใชแสดงขอความ%u ใชแสดงตวเลขจำานวนเตม(integer หรอ int ) ทไมมเครองหมาย
ในรปแบบเลขฐานสบ%% ใชแสดงเครองหมาย %%p ใชแสดง address ของตวแปรพอยนเตอร
รหสรปแบบการแสดงผลจอภาพน อาจแสดงในรปแบบทวไป ไดดงน% flag maximum_width precision size
conversion_codeโดย
flag มคาเปนไปได 2 คา คอ - (เครองหมายลบ) หมายถงใหจดชดซาย + (เครองหมายบวก) หมายถงเมอเปนจำานวนบวกใหแสดงเครองหมาย + ไวหนาตวเลขดวย mximum_width จำานวนสดมภหรอคอลมน ทจองไวแสดงขอมล(ถาขอมลมจำานวนสดมภมากกวาการกำาหนดคานปกตจะไมมผล) precision คอจำานวนตวเลขหลงจดทศนยม(ตองใช . ดวย)
size คอ การกำาหนดใหสอดคลองกบตวแปร เชน ใช l (ตวแอล) เชน ld เปนตวเลขฐาน 10 ของ long lf แทน เลขจำานวนจรงแบบ double conversion code คอ รหสกำาหนดชนดการแสดงผลดงในตารางทผานมาเชน %-10.2lf หมายความแสดงขอมลแบบจำานวนจรงชนด double โดยมความกวาง 10 สดมภโดยมทศนยม 2 ตำาแหนง
ตวอยางท 3.1 โปรแกรม example3_1.c แสดงการใชรหสรปแบบเพอแสดงผลทางจอภาพดวยคำาสง printf() ของตวเลขตาง ๆ/* example3_1.c */#include <stdio.h>int x1 = 25 , x2 = -789,x3 = 159;long m =23456789;double y1 = 256.789 , y2 = 0.0025 , y3 = 2.5600E-4;main(){ printf("\n\t%o\t%x\t%X",x1,x3,x3); /* แสดง ตวเลขในรปเลขฐานแปด ฐานสบหก */ printf("\n\t%d\t%d",x1,x2); /* แสดงจำานวนเตมในรปเลขฐานสบ */ printf("\n\t%12d\t%12d",x1,x2); /* กำาหนดจำานวนสดมภเปน 12 สดมภทแสดงตวเลข */ printf("\n\t%-12d\t%-12d",x1,x2); /* กำาหนดใหพมพชดซาย */ printf("\n\t%+12d\t%+12d",x1,x2); /* จำานวนบวกใหใสเครองหมาย + ดวย */ printf("\n\t%+-12d\t%+-12d",x1,x2); /* ใหพมพชดซาย และจำานวนบวกใหใสเครองหมาย + ดวย */ printf("\n\t%+-12d\t%+-12ld",m,m); /* พมพจำานวน long ในรปเลขฐานสบ */ printf("\n\t%12.2e\t%12.3E",y1,y2); /* พมพตวเลขในรปทางวทยาศาสตรโดยกำาหนดจำานวนตำาแหนงทศนยม */ printf("\n\t%-12.2E\t%+12.3E",y1,y2); /* จำานวนแรกใหพมพชดซาย จำานวนหลงใหใสเครองหมาย+หนาตวเลข ในรปแบบตวเลขทางวทยาศาสตร */ printf("\n\t%-12.2f\t%+12.3f",y1,y2); /* ใหพมพในรปแบบทศนยม โดยกำาหนดจำานวนสดมภ และจำานวนตำาแหนงทศนยม จำานวนแรกใหชดซาย จำานวนหลงใสเครองหมาย + */ printf("\n\t%-12.5f\t%+12.4f",y3,y3); */ พมพตวเลขทางวทยาศาสตรในรปแบบ f โดยกำาหนดจำานวนสดมภ และจำานวนตำาแหนงทศนยม */
getch();}ผลการทำางานของโปรแกรม example3_1.c เปน ดงรป
ตวอยางท 3.2 โปรแกรม example3_2.c แสดงการใชคำาสง printf() กบการแสดงผลตวแปรอกขระ ทางจอภาพ/* example3_2.c */#include <stdio.h>main(){ char one_c = 'A'; /* ประกาศตวแปร char เกบตวอกขระ 1 ตวใชเครองหมาย ‘ ลอมตวอกษรทกำาหนดคา */ char text1[] = "Computer Bodindecha School"; /* ประกาศตวแปร char เกบขอความ ใชเครองหมาย “ ลอมขอความทกำาหนดคาใหตวแปร */ char text2[] = "Student"; printf("\n\t%c\t%s",one_c,text1); printf("\n\t%c",text1); /* คำาสงนไดผลลพธไมถกตอง สวน %s ใชกบตวแปรทเกบตวอกษรตวเดยวไมไดจะ error ดงนนจงตองใหถกตอง คอ %s กบขอความ สวน %c กบตวแปรทเกบตวอกษร 1 ตว */ printf("\n\t%s\t%s",text2,text1); /* แสดง ขอความใน text2 และ text1 */ printf("\n\t%3s\t%10s",text2,text1); /* กำาหนดจำานวนสดมภทแสดงแตละขอความ แตนอยกวาความยาวของแตละขอความ จะไมมผล */ printf("\n\t%15s\t%s",text2,text1); /* กำาหนดสดมภทมากกวาความยาวของขอความแรก ขอความจะชดขวา */
printf("\n\t%15s\t%35s",text2,text1); /* กำาหนดสดมภทมากกวาความยาวของทงสองขอความ ขอความจะชดขวา */ printf("\n\t%-15s\t%35s",text2,text1); /* กำาหนดจำานวนสดมภทแสดงขอความแรกยาวกวาขอความและกำาหนดใหพมพชดซาย สวนขอความหลงจำานวนสดมภมากกวาความยาวของขอความ ขอความชดขวาเพราะไมไดสงใหชดซาย */ getch();}ผลการทำางานของโปรแกรม example3_2.c เปน ดงรป
รหสควบคม(control code) เปนตวกำาหนดวาเมอแสดงผลแลวลกษณะของการแสดงผลครงตอไปจะเปลยนเปนอยางไร หรอใชแสดงผลอกขระหรอสญลกษณพเศษบางตว รหสควบคมทใชกบ printf() บางแหงเรยกวา ลำาดบหลก (escape sequence) โดยเรยก \ วา อกขระหลก (escape character) เพราะทำาใหความหมายของตวอกษรทตามมาเปลยนไปจากปกต ดงตารางตอไปน
ตารางแสดงรหสควบคมและความหมายรหสควบคม ความหมาย
\a สงเสยงบพ\b ถอยหลงไปทอยดานซาย 1 ตำาแหนง (backspace)\t เลอนตำาแหนงในการพมพครงตอไป 1 แทบ(แนวราบ
horizontal)\n ขนบรรทดใหม\r เลอนไปตนบรรทด\" แสดงเครองหมาย "
\o (เลข 0) แสดง NULL character
\\ แสดงเครองหมาย \
ตวอยางท3.3 โปรแกรม example3_3.c แสดงการใช control code ในการทำางานของ printf()/* example3_3.c */#include <stdio.h>main(){ printf("\n\t\tUsing of control code"); printf("\n\tBodindecha\tSchool"); printf("\n\tBodindecha"); printf("\tSchool"); printf("\n\tA\n\tB\n\tC"); printf("\n\tComputer\b\b\b\b\b511"); printf("\n\tGood morning\rHi!"); getch();}ผลการทำางาน ของ example3_3.c เปนดงรป
ฟงกชน putchar()เปนฟงกชนทใชแสดงอกขระครงละ 1 ตว ทางจอภาพ ใชแสดงขอความ
ไมได รปแบบของฟงกชน คอ putchar(character); ฟงกชน puts() ใชแสดงขอความ (ไมใชอกขระ) ออกทางจอภาพ แลวเลอนเคอรเซอรไปตนบรรทดตอไป รปแบบของฟงกชน คอ
puts(string);
ตวอยางท 3.4 โปรแกรม example3_4.c แสดงตวอยางการใชคำาสง putchar() และ puts() /* example3_4.c */ #include <stdio.h>char ch1 = 'B';char text1[] ="Computer";
main(){ putchar('\n'); /* สงใหขนบรรทดใหม */ putchar('\t'); /* ใหเลอนไปทางขวา 1 tab */ putchar('a'); /* สงพมพอกขระ 1 ตว คอ a ตอง ใช ‘ ลอม เพราะเปน character ถาลอมดวย “ จะเปนขอความ ใช putchar() ไมได */ putchar('\n'); /* ใหขนบรรทดใหม เพราะ putchar() คำาสงบนไมไดขนบรรทดใหมให */ putchar('\t'); putchar(ch1); /* แสดง character ทเกบไวในตวแปร */ putchar('\n'); putchar('\t'); putchar(text1[0]); /* แสดงตวอกขรตวท1 ในตวแปร text1 */ putchar('\t'); putchar(text1[2]); /* แสดงตวอกขรตวท3 ในตวแปร text1 */ puts("\n"); /* พมพบรรทดวาง 1 บรรทด */ puts("\tThailand"); /* เลอนไป 1 tab แลวจงพมพ ขอความ */ puts("\n\tWangtonglang"); /* พมพบรรทดวาง 1 บรรทด แลวเลอนไป 1 tab แลวจงพมพ ขอความ */ puts("Bangkok\n"); /* พมพ ขอความแลวจงพมพบรรทดวาง 1 บรรทด */ puts(text1); /* พมพขอความในตวแปร */ puts("k"); /* แสดงขอความทมตวอกขระเพยง 1 ตวออกทางจอภาพ ใช ‘k’ ไมได เพราะเปนตวอกขระ */ puts("\tA"); getch();
}ผลการทำางานของโปรแกรม /* example3_4.c */ เปน ดงรป
ฟงกชนรบขอมล (Input function)
ฟงกชน getchar() เปนฟงกชนทใชรบขอมลเปนตวอกขระจำานวน 1 ตวจากแปนพมพและอกขระนนจะปรากฏบนจอภาพ ดวยและตองเคาะแปน enter เพอแสดงวาปอนขอมลแลว การใชงานฟงกชนนปกตใชการกำาหนดตวแปรมารบคา ตวแปรทใช เปน int หรอ char เมอนำาไปแสดงผล ถาแสดงเปนเลขฐานสบ จะไดคารหส ASCII ของตวอกขระทปอน ถาแสดงเปนตวอกขระ จะไดตวอกขระตรงตามทมการเคาะ การใชฟงกชนนจะมปญหาเมอมการใชฟงกชนนมากกวา 1 ครง ตวอยางโปรแกรมการใชงานฟงกชน getchar()
โปรแกรมและผลทได โปรแกรมและผลทได#include <stdio.h>int ch1; /* ตวแปรทรบคาเปน int */main(){ ch1 = getchar(); printf("%d\n",ch1); printf("%c",ch1); getch();}ผลการทำางานของโปรแกรมจะเปน(ในกรณปอน A)A65A(บรรทดนมเคอรเซอรกระพรบรบการเคาะแปน เมอเคาะแปน โปรแกรมจะ
#include <stdio.h>char ch2; /* ตวแปรทรบคาเปน char */main(){ ch2 = getchar(); printf("%d\n",ch2); printf("%c",ch2); getch();}ผลการทำางานของโปรแกรมจะเปน(ในกรณปอน A)A65A(บรรทดนมเคอรเซอรกระพรบรบการเคาะแปน เมอเคาะแปน โปรแกรมจะ
เลกงาน) เลกงาน)
ฟงกชน getch()ใชรบตวอกขระ 1 ตวจากแปนพมพ แตขณะรบไมแสดงทางจอภาพและ
ไมตองเคาะแปน enter เคอรเซอรอยทตำาแหนงเดม การใชงานฟงกชนนปกตใชการกำาหนดตวแปรมารบคา ตวแปรทใช เปน int หรอ char เมอนำาไปแสดงผล ถาแสดงเปนเลขฐานสบ จะไดคารหส ASCII ของตวอกขระทปอน ถาแสดงเปนตวอกขระ จะไดตวอกขระตรงตามทมการเคาะ ตวอยางการใชงานฟงกชน getch() เชน#include <stdio.h>char ch2;int ch1;main(){ ch2 = getch(); printf("\n%d\n",ch2); printf("%c\n",ch2); ch1 = getch(); printf("\n%d\n",ch1); printf("%c\n",ch1); getch();}เมอโปรแกรมทำางานจะไดผลลพธ ดงน(บรรทดนรบการเคาะแปน สมมตวาปอน A)65A(บรรทดนรบการเคาะแปน สมมตวาปอน B)66B(บรรทดนมเคอรเซอรกระพรบรบการเคาะแปน เมอเคาะแปน โปรแกรมจะเลกงาน)
ฟงกชน getche() รบตวอกขระจากแปนพมพ 1 ตว โดยแสดงออกทางจอภาพดวยและไม
ตองเคาะแปน enter ลกษณะการทำางานเปนไปในลกษณะเดยวกบ
getche() ตางกนทแสดงตวอกขระทเคาะออกทางจอภาพดวยเมอเคาะ และเคอรเซอรเลอนไป 1 ตำาแหนงเทานน
ฟงกชน gets() ใชรบขอความจากแปนพมพ มาเกบไวในชอตวแปรทกำาหนด โดยเคาะ
แปน enter แสดงการจบการปอนขอมล มรปแบบ คอ gets(string_var);
โดย string_var คอ ชอตวแปรทใชเกบขอมลทรบมาจากการปอนทาง
แปนพมพ เปนตวแปรประเภทขอความ และสามารถแยกเปนตวอกขระได และตองเคาะแปน enter บอกใหรวาจบการปอนขอความ
ตวอยางท3.5 โปรแกรม example3_5.c แสดงตวอยางการใชงานฟงกชน gets()/* example3_5.c */#include <stdio.h>char ge1[20]; /* ตวแปรขอความทรบได 19 ตวอกษร ตวท20 คอรหสการจบ */char ge2[15]; /* ตวแปรขอความทรบได 14 ตวอกษร ตวท15 คอรหสการจบ */main(){ printf("\n\tPlease enter 1st string:"); gets(ge1); /* รบการปอนขอความจากแปนพมพไปเกบไวในตวแปร ชอ ge1 */ printf("\n\t1st string is: \t %s %c \n",ge1,ge1[5]); /* แสดงขอความ และตวอกขระตวท 6 ในขอความ */ printf("\n\tPlease enter 2nd string :"); gets(ge2); /* รบการปอนขอความจากแปนพมพไปเกบไวในตวแปร ชอ ge2 */ printf("\n\t2nd string is %s selected character is %c \n",ge2,ge2[7]); /* แสดงขอความ และตวอกขระตวท8 ในขอความ */ getch();}ผลการทำางานของโปรแกรมเปนดงรป
ฟงกชน scanf()เปนฟงกชนทใชรบขอมลประเภทตาง ๆ จากแปนพมพไดกวางขวางกวา
ฟงกชนอน ๆ ทผานมา ขอมลทรบ เชน จำา นวนเตม จำานวนจรง ขอความ อกขระ รปแบบของฟงกชน คอ
scanf(control string ,variable list);control string เปนรหสสำาหรบรปแบบของขอมลทจะรบเขา โดยรหส
นทงหมดจะตองอยภายในเครองหมายพด รหสแตละตวจะแทนขอมลแตละคา โดยสามารถมรหสของขอมล หลายคาไดในครงเดยวกนโดยไมจำาเปนตองมเครองหมายอนใดมาคน
variable list คอรายการของชอตวแปรทจะมารบคาของขอมลทปอนจากแปนพมพ โดยตวแปรตองประเภทเดยวกบขอมลทตวแปรนนรบ และจำานวนตวแปรจะตองมจำานวนเทากบจำานวนรหสรปแบบของขอมล โดยชอตวแปรนนอยหลงจากเครองหมายคำาพดทลอมรหสขอมลโดยมการคนดวยเครองหมายคอมมา(,)และหากมตวแปรหลายตวแตละตวจะคนดวยเครองหมายคอมมาเชนกน และหนาชอตวแปรแตละตวจะตองนำาดวยเครองหมาย & ยกเวนตวแปรของขอมลประเภทขอความ(string) เชน คำาสง
scanf("%d %f %s",&i1,&f1,word);เปนคำาสงใหรบขอมลจากแปนพมพ 3 คา เปนขอมลประเภท จำานวนเตมแบบเลขฐานสบ ตามดวยขอมลเลขทศนยม และขอมลประเภทขอความ โดยมตวแปรชอ i1 , f1 และ word ซงเปนแปรตวประเภท จำานวนเตม จำานวนทศนยม และตวแปรขอความตามลำาดบ มารบคาของขอมลเหลานน คำาสงนจะรบขอมลเมอเคาะแปน enter และจะเลอนไปตนบรรทดตอไป รหสรปแบบขอมลทใชในฟงกชน scanf() เปนดงรายการ
รหสรปแบบ ความหมายในการใช%c สำาหรบขอมลประเภทตวอกขระ ( character)%d สำาหรบขอมลจำานวนเตมในรปเลขฐานสบ%e สำาหรบขอมลประเภททศนยม( floating point) ทเขยนในรป
เลขยกกำาลง%f %lf สำาหรบจำานวนประเภท float และ double
%g ใชกบขอมลประเภท float
%h สำาหรบขอมลประเภท short integer%l สำาหรบขอมลประเภท integer ทงเลขฐาน 8 ฐาน 10 และ
ฐาน 16%o สำาหรบขอมลประเภท integer เลขฐาน 8 เทานน%u สำาหรบขอมลประเภท unsigned integer เลขฐาน 10
เทานน%x สำาหรบขอมลประเภท integer เลขฐาน 16 เทานน%s สำาหรบขอมลประเภทขอความ (string)
แมวาฟงกชน scanf() สามารถใชรบขอมลไดหลายคาหลายชนดในคำาสงเดยวกน แตอาจมปญหาในการรบขอมลประเภท ตวอกษร (char ) และ ขอความ (string) จงควรใชคำาสง scanf() 1 คำาสงเพอรบคาเพยงคาเดยว และการรบขอมลประเภทขอความทมชองวาง ควรใชฟงกชน gets() มากกวา
ตวอยางท3.6 โปรแกรม แสดงการใชงาน ฟงกชน scanf()/* example3_6.c */#include <stdio.h>main(){ float b; char y, d[20] ; int i; printf("\n\tEnter a character.(store in y variable) :"); scanf("%c",&y); printf("\tEnter a floating point number.(b) :"); scanf("%f",&b); printf("\tEnter a string.(d) :"); scanf("%s",d); printf("\tEnter a integer.(i) :"); scanf("%d" , &i); printf("\t y = %c \t b = %2.2f \t d = %s \n\t d[5] = %c \t i = %d \n\t",y,b,d,d[5],i ); getch();}เมอโปรแกรมทำางานจะไดผล ดงรป
ตวอยางท3.7 โปรแกรม แสดงการใช scanf() รบตวเลข 2 จำานวน ในคำาสงเดยว/* example3_7.c */#include <stdio.h>main(){ int num1,num2; printf("\n\tPlease enter seven digit number : "); scanf("%3d%d",&num1,&num2); /* ใหจำานวนแรก มตวเลข 3 หลก คอ %3d สวนจำานวนหลงไมระบจำานวนหลก */ printf("\n\tYour numbers are\n\tnum1 = %d \n\tnum2 = %d",num1,num2); getch();}เมอโปรแกรมทำางาน จะไดผลลกษณะ ดงรป
ตวอยางท3.8 โปรแกรม แสดงการใช scanf() รบอกขระ(character)และสายอกขระ(string)ในคำาสงเดยวกน/* example3_8.c */#include <stdio.h>main(){ char ch1,st[20]; printf("\n\tPlease input your text : "); scanf("%c%s",&ch1,st); printf("\n\tYour character is %c",ch1); printf("\n\tYour string are %s",st); getch();}เมอโปรแกรมทำางาน จะไดผลลกษณะ ดงรป
ตวอยางท3.9 โปรแกรม example3_9.c แสดงความแตกตางกนในรบขอความ ระหวาง ฟงกชน scanf() กบ gets() /* example3_9.c */#include <stdio.h>main(){ char ch1[50],ch2[50]; printf("\n\tPlease input first string: "); gets(ch1); printf("\n\tPlease input second string: "); scanf("%s",ch2); printf("\n\tYour first strings (use gets) : %s",ch1); printf("\n\tYour second strings (use scanf): %s",ch2); getch();}เมอ โปรแกรมทำางาน และปอนขอความ จะได ลกษณะ ดงรป
ตวอยางท3.10 ใหนกเรยนเขยนโปรแกรม ทเมอโปรแกรมทำางาน แลวแจงใหผใชทราบวาใชหาปรมาตรของปรซมฐานสเหลยม แลวใหผใชโปรแกรม ปอนความกวาง ความยาวของฐาน ความสงของทรงกระบอก เมอผใชปอนเสรจกรายงาน คาตาง ๆ ของทรงกระบอก ใหชอโปรแกรมนวา example3_10.cวธการโปรแกรมทจะเขยนนควร มขนตอนการทำางาน คอDisplay program propertyInput base width : bwideInput base length : blengInput height : highCompute volume : cvol cvol = bwide * bleng * highreport data base width : bwide base length : bleng height : high volume : cvolนำาขนตอน ดงกลาวมาเขยนโปรแกรม จะไดโปรแกรมทำานองโปรแกรม /* example3_10.c */#include <stdio.h>main(){ float bwide, bleng , high,cvol; printf("\n\tThis program use to compute the volume of prism.\n"); printf("\n\tPlease input the base width : "); scanf("%f",&bwide); printf("\n\tPlease input the base length : "); scanf("%f",&bleng); printf("\n\tPlease input the height of prism. : "); scanf("%f",&high); cvol = bwide * bleng * high; printf("\n\tProperties of the prism."); printf("\n\tbase width :\t%10.2f unit",bwide); printf("\n\tbase length :\t%10.2f unit",bleng); printf("\n\t prism height :\t%10.2f unit",high); printf("\n\t prism volume :\t%10.2f unit",cvol); getch(); }
เมอโปรแกรมทำางานจะไดผลดงรป