ทีมา
http://carlcheo.com/startcoding
[ view entry ] ( 4139 views ) | permalink | ( 3.2 / 1037 )
ทำไมคณิตศาสตร์สำคัญกับการเรียนเขียนโปรแกรมคอมพิวเตอร์
รับสอนเขียนโปรแกรมคอมพิวเตอร์
http://expert-programming-tutor.com/
ถ้าอยากเขียนโปรแกรมไม่เรียนคณิตศาสตร์ได้ไหมนะ?
คงเป็นคำถามที่หลายคนสงสัย จะว่าไปก็ต้องบอกว่าได้ครับ แต่โปรแกรมที่ได้จะมีลูกเล่นน้อย
นอกจากนี้ยังลำบากต่อผู้เรียนในการทำความเข้าใจอัลกอริทึมต่างๆเวลาเรียนอีกด้วย
และที่สำคัญคือนั่นจะไม่บรรลุจุดประสงค์ที่แท้จริงของการเขียนโปรแกรม
ทำไมหล่ะ? โดนัล เออร์วิน คนุธ (Donald Ervin Knuth) ผู้เป็นปรมาจารย์ด้านอัลกอริทึมกล่าวเรื่องการเขียนโปรแกรมไว้ว่า
“โปรแกรมที่ดีที่สุดเขียนขึ้นมาเพื่อให้เครื่องคำนวณ สามารถทำงานได้อย่างรวดเร็ว
และเพื่อให้มนุษย์นั้นสามารถเข้าใจเครื่องคำนวณเหล่านั้น
ในเชิงอุดมคติแล้วโปรแกรมเมอร์เป็นเหมือนนักเขียนรายงาน
ผู้ทำงานด้วยสุนทรียะตามแบบแผนและตามรูปแบบของงานเขียน
และรวมไปถึง [การใช้] ความคิดเรื่องคณิตศาสตร์
เพื่อจะสื่อสารให้รู้ว่าอัลกอริทึมทำงานอย่างไร
และเพื่อจูงใจให้ผู้อ่านเชื่อว่าผลลัพธ์จะถูกต้องเสมอ”
แล้วการเขียนโปรแกรมเขียนมาเพื่อคำนวณนั่นหมายความว่าอย่างไรนะ?
ถ้าจะพูดเรื่องนี้คงต้องเล่าถึงประวัติศาสตร์การเกิดคอมพิวเตอร์เสียก่อนว่ามนุษย์แต่ไหนแต่ไรมามีความต้องการที่จะหาเครื่องคำนวณอยู่แล้ว เช่น การขีดนับเลขกับกำแพงพัฒนามาหน่อยก็เป็นลูกคิดเป็นต้น วันเวลาผ่านไป เบส ปาสคาล(Blaise Pascal) ได้ประดิษฐ์เครื่องคำนวณแบบฟันเฟืองขึ้น โดยใช้หลักการหมุนของฟันเฟือง 1 อันถูกหมุนครบ 1 รอบ ฟันเฟืองอีกอันหนึ่งซึ่งอยู่ ทางด้านซ้ายจะถูกหมุนไปด้วยในเศษ 1 ส่วน 10 รอบ เครื่องมือของปาสคาลนี้ถูกนำมาขายในปี พ.ศ. 2188 แต่ไม่ค่อยมีคนนิยมเนื่องจากราคาแพง และตอนใช้งานจริงจะเกิดเหตุการณ์ที่ฟันเฟืองติดขัดบ่อยๆ ทำให้ผลลัพธ์ที่ได้ไม่ค่อยถูกต้องตรงความเป็นจริง ต่อมีไลบ์นิซGottfriend von Leibnitz) ได้ปรับปรุงเครื่องคำนวณของ ปาสคาลให้สามารถคูณและหารได้ด้วย
ชาลส์ แบบบิจ (Charles Babbage) “บิดาแห่งคอมพิวเตอร์” ต้องการสร้างเครื่องคำนวณหาผลต่าง แต่ไม่สำเร็จแต่ก็เป็นไอเดียของการสร้างคอมพิวเตอร์ต่อๆมา หลังจากนั้นเลดี้ เอดา(Lady Auqusta Ada Byron) ได้ทำการศึกษาความคิดของชาลส์ แบบิจจนเขียนวิธีการที่จะสร้างอย่างเป็นขั้นตอนด้วยภาษาคอมพิวเตอร์ชื่อ Ada จึงได้รับขนานนามว่าเป็น “โปรแกรมเมอร์คนแรก”อาดาได้ทำบัตรเจาะรูเพื่อให้คอมพิวเตอร์สามารถทำงานด้วยคำสั่งซ้ำๆจนเป็นที่มาของลูป(Loop)ในเวลาต่อมา ต่อในช่วงปี 1940 มีเครื่องคำนวณขนาดใหญ่ของจริงขึ้นมา โดยใช้หลอดสุญญากาศหลายๆท่อมาช่วยคำนวณเลขฐานสอง ชื่อ ENIAC (Electronic Numerical Integrator And Computer) แต่เครื่องแบบนี้ก็ร้อนมากแถมขนาดใหญ่มโหฬาร ต่อมาเลยทำเครื่องแบบ ทรานซิเตอร์ แทน.จอน นวูแมน (John Von Neumann) ได้พบวิธีการเก็บโปรแกรมไว้ ในหน่วยความจำของเครื่องเช่นเดียวกับการเก็บข้อมูลและต่อวงจรไฟฟ้า สำหรับการคำนวณ และการปฏิบัติการพื้นฐาน ไว้ให้เรียบร้อยภายในเครื่อง แล้วเรียกวงจรเหล่านี้ด้วยรหัสตัวเลขที่กำหนดไว้ เพื่อให้การใช้โปรแกรมง่ายขึ้น เครื่องคอมพิวเตอร์ที่ถูกพัฒนาขึ้นตามแนวความคิดนี้ได้แก่ EVAC (Electronic Ddiscreate Variable Automatic Computer)
คอมพิวเตอร์ถูกพัฒนามาเรื่อย John Backus และ IBM ร่วมกันสร้างภาษาคอมพิวเตอร์ชื่อ FORTRAN ซึ่งเป็นภาษาระดับสูง (high level programming language) ภาษาแรกในประวัติศาสตร์คอมพิวเตอร์ คอมพิวเตอร์ยุคต่อมาใช้ วงจรไอซี (Integrated Circuit) เป็นสารกึ่งตัวนำที่สามารถบรรจุวงจรทางตรรกะไว้แล้วพิมพ์บนแผ่นซิลิกอน (Silicon) เรียกว่า "ชิป"
หลังจากคอมพิวเตอร์ได้ผ่านการเวลาและมีภาษา Assembly ในการสั่งการเครื่องแล้วก็เกิดภาควิชาใหม่แยกออกมาจากภาควิชาคณิตศาสตร์นั้นคือภาควิชาคอมพิวเตอร์ที่มีการศึกษาด้านการพัฒนาซอร์ฟแวร์อย่างจริงจัง อลัน ทัวริ่ง(Alan Mathison Turing) ได้เขียนบทความชื่อ “ว่าด้วยจำนวนที่คำนวณได้และการประยุกต์ใช้สำหรับปัญหาการตัดสนใจ (On Computable Numbers with an application to the Entscheidungs problem)" บทความนี้เกี่ยวกับ คำสั่งตรรกะ (logical instructions)ของการทำงาน แล้วก็บอกว่าการทำงานต้องมี กฎเกณฑ์ที่แน่นอน (definite method) ทั้งหมดก็เป็นเรื่องที่เกี่ยวกับวิธีการเขียนโปรแกรมต่มมา ซึ่งทำให้ต่อมาเขาได้ชื่อว่าเป็น “ผู้ก่อตั้งวิทยาการคอมพิวเตอร์ในยุดใหม่”
จะเห็นได้ว่าจากประวัติคร่าวๆคอมพิวเตอร์นั้นเกิดจากการที่นักคณิตศาสตร์เริ่มจะขี้เกียจคิดเลขจนต้องหาเครื่องมาช่วยคิด ไปๆมาๆก็เลยกลายคอมพิวเตอร์และพัฒนากันมาจนถึงปัจจุบัน หากจะบอกคอมพิวเตอร์ไม่เกี่ยวกับคณิตศาสตร์ก็คงไม่ใช่แล้ว นี่เป็นเหตุผลแรกเลยก็ว่าได้ว่าทำไมเราจึงควรเรียนคณิตศาสตร์ ก็เพื่อให้เข้าใจคอมพิวเตอร์ได้มากที่สุดนั่นเอง
หน้าที่หลักของคอมพิวเตอร์คือการคำนวณแทนมนุษย์อย่างที่ได้กล่าวไปแล้ว แล้วจะคำนวณได้อย่างไรกันนะ?
ALU (Arithmetic & Logical Unit : ALU) หรือหน่วยคำนวณตรรกะ ทำหน้าที่เหมือนกับเครื่องคำนวณอยู่ในเครื่องคอมพิวเตอร์โดยทำงานเกี่ยวข้องกับ การคำนวณทางคณิตศาสตร์ เช่น บวก ลบ คูณ หาร นอกจากนี้ยังสามารถคำนวณในเชิงตรรกะศาสตร์ ได้แก่ ความสามารถในการเปรียบเทียบตามเงื่อนไข และกฎเกณฑ์ทางคณิตศาสตร์ เพื่อตรวจเงื่อนไขนั้นเป็น จริง หรือ เท็จ เช่น เปรียบเทียบมากว่า น้อยกว่า เท่ากัน ไม่เท่ากัน ของจำนวน 2 จำนวน เป็นต้น ซึ่งการเปรียบเทียบนี้มักจะใช้ในการเลือกทำงานของเครื่องคอมพิวเตอร์ จะทำตามคำสั่งใดของโปรแกรมเป็น คำสั่งต่อไป
ส่วนคำนวณเป็นส่วนประมวลผล ซึ่งนับว่าเป็นส่วนที่สำคัญที่สุดของเครื่องคอมพิวเตอร์ ส่วนคำนวณทำหน้าที่ใหญ่ ๆ สองประการ คือ ประการแรกทำการบวก ลบ คูณ และหาร ประการที่สองคือ ทำหน้าที่ตัดสินใจว่าข้อมูลมากกว่าหรือน้อยกว่าอีกข้อมูลหนึ่ง หน้าที่ทั้งสองประการนี้สามารถเกิดได้ด้วยการอาศัยวงจรตรรกะที่เป็นวงจรอิเล็กทรอนิกส์ จึงทำให้ส่วนคำนวณนี้มีชื่อเรียกอีกอย่างหนึ่งว่า ส่วนคำนวณตรรกะ (arithmetic logic unit; ALU) นอกจากนี้ ส่วนคำนวณสามารถเลื่อนข้อมูลไปทางซ้าย หรือทางขวา เก็บหรือย้ายข้อมูลไปยังส่วนอื่น ๆ ของส่วนควบคุมกลางได้ วงจรตรรกะ (logic circuits) เป็นวงจรทางอิเล็กทรอนิกส์ที่ใช้ส่วนประกอบ เช่น ตัวความต้านทาน ตัวเก็บประจุ ไดโอด ทรานซิสเตอร์ ฯลฯ มาจัดให้สามารถทำงานแทนการคำนวณทางตรรกะได้ โดยใช้ "การมีสัญญาณไฟฟ้า" และ "ไม่มีสัญญาณไฟฟ้า" แทนสภาวะตรรกะ "จริง" และ "เท็จ" หรือ "1" กับ "0"
และนี่ก็คือการทำงานของคอมพิวเตอร์นั่นเองต้องอาศัยเรื่องการคำนวณและตรรกศาสตร์ ซึ่งเรื่องพวกนี้ยังช่วยพัฒนาระบบความคิดของเราให้เป็นระบบซึ่งจะทำให้ง่ายต่อการเข้าอัลกอริทึมหรือวิธีคิดในการเขียนโปรแกรมคอมพิวเตอร์ด้วย
คณิตศาสตร์ช่วยเราแก้ปัญหาอะไรเราบ้าง?
ก็อย่างที่เรารู้กันแล้วว่าคอมพิวเตอร์ช่วยแก้ปัญหาทางคณิตศาสตร์ได้ แล้วคณิตศาสตร์ช่วยแก้ปัญหาอะไรให้เราบ้างนะ เราก็จะพบว่าโลกที่เราอยู่ทุกวันเต็มไปด้วยคณิตศาสตร์อยู่รอบตัวเรา
เช่น เวลาที่อยู่บ้าน เราตื่นนอนด้วยนาฬิกาปลุก ก็ต้องตั้งนาฬิกาปลุก ไหนจะตอนไม่ตื่นแล้วกดเลื่อนเวลานาฬิกาก็ต้องทำการคำนวณหาเวลาใหม่และทำการปลุกต่อไป ไม่เพียงแค่นี้เท่านั้นเรายังต้องใช้การคำนวณทำสิ่งต่างๆอีกมากมาย ทั้งการคำนวณเวลารายรับรายจ่ายประจำวัน หรือหาเฉลี่ยของค่าใช้จ่ายรายเดือน หรือแม้กระทั่งเราจะทาสีบ้านต้องใช้สีเท่าไหร่ จะวางเฟอร์นิเจอร์อย่างไรให้ได้พื้นที่ใช้สอยสูงสุด
และเวลาที่ไปเที่ยวก็ยังต้องมีการคำนวณระยะทาง ระดับน้ำมันที่จะใช้ หรือถ้าขึ้นเครื่องบินเราก็ต้องคำนวณการเดินทางไปให้ทันเวลาออก ไหนจะน้ำหนักกระเป่า ว่าเราควรจะใส่อะไรในกระเป่าให้เป็นประโยชน์มากที่สุดก็ล้วนต้องใช้คณิตศาสตร์
นอกจากนี้ในระดับประเทศเราก็ยังระบบธนาคารการคำนวณดอกเบี้ย หากเราฝากเงินไว้กับธนาคารเราจะสามารถคำนวณล่วงหน้าถึงดอกเบี้ยที่จะได้ ราคาหุ้นที่ต้องเปลี่ยนไปวินาทีต่อวินาทีต้องมีการคำนวณอย่างรวดเร็วบนหน้าจอแสดงผล การเก็บข้อมูลประชากรก็ไม่ใช่เรื่องเล่นๆ เรายังต้องคำนวณหาว่าแล้วพลเมืองของรัฐจะเติมโตขึ้นกี่เปอร์เซ็นต์เพื่อนำไปคำนวณด้านอาหาร พลังงานและโรงเรียน สาธารณูปโภคให้มีเท่ากับความต้องการของคนในชาติ หรือถ้าพบว่ามีแนวโน้มลดลงเราจะหาคนจากไหนมาทำงานต่อ รวมไปถึงเวลามีโรคแพร่ระบาดก็ต้องควบคุมประชากรและคำนวณหาโอกาสของผู้ที่จะติดเชื้อด้วย การหาเลขบัตรประชาชนที่จะไม่ซ้ำกับคนอื่นๆ
และสำคัญที่สุดที่ขาดไม่ได้คือโลกแห่งวิทยาศาสตร์ที่เติมโตไปข้างหน้าทุกวันก็ปฏิเสธไม่ได้เลยว่าวิทยาศาสตร์ต้องเดินด้วยคณิตศาสตร์ คอมพิวเตอร์เป็นเทคโนโลยีเป็นวิทยาศาสตร์ก็ต้องเดินด้วยคณิตศาสตร์ แต่ก่อนนักวิทยาศาสตร์นั้นอธิบายปรากฏการณ์ของโลกด้วยคำบรรยายมากมาย แต่เมื่อกาลิเลโอผู้มีเรื่องเล่าว่าไปโยนหินบนหอเอนปิซ่า ได้ขึ้นมาประกาศว่าต่อไปนี้ฟิสิกส์ และธรรมชาติ จะสามารถอธิบายด้วยคณิตศาสตร์ได้เพราะคณิตศาสตร์มีความถูกต้องเหมือนกับที่ฟิสิกส์มีความถูกต้อง ก็เป็นที่นิยมมาถึงปัจจุบันที่ฟิสิกส์และศาสตร์อื่นนำคณิตศาสตร์มาใช้อธิบายโลก เช่น การเดินทางดวงจันทร์ และการคำนวณอื่นๆอีกมากมาย
เกมส์ต่างๆที่เราเล่นก็ต้องใช้คณิตศาสตร์นะ ทุกวันนี้เวลาต้องเดินทางด้วยรถเมล์หรือบีทีเอสนานๆมันคงน่าเบื่อไม่น้อยถ้าเรายังต้องมานั่งบิดบัตรบีทีเอสเล่นไปมา แต่ด้วยความโชคดีที่เหล่าโปรแกรมเมอร์ทั้งหลายต่างสร้างเกมส์มาเพื่อแก้เบื่อให้เรา แล้วเกมส์มันสร้างยังไงล่ะ คำตอบคือเกมส์ก็เป็นการคำนวณทางคณิตศาสตร์ ขั้นเล็กน้อย ตั้งแต่ set vector ,matrix เช่นการเปลี่ยนตำแหน่งของตัวละคร ให้สัตว์ประหลาดหรือมอนสเตอร์มาโจมตีผู้เล่นต่างก็เป็นคณิตศาสตร์ทั้งนั้น ไปจนถึงคณิตศาสตร์ชั้นสูง (calculus , linear algebra ฯลฯ )เช่น การ simulate ต่างๆ มากมาย
ในชีวิตประจำวันๆหนึ่งเราไม่สามารถหนีคณิตศาสตร์ได้เลยจริงๆ แต่การคำนวณทางคณิตศาสตร์จะทำทุกครั้งด้วยตัวเองก็ไม่ไหว เราจึงควรศึกษาคณิตศาสตร์เพื่อมาเขียนโปรแกรมซะ ชีวิตจะได้ง่ายขึ้นเยอะ
สมองมนุษย์กับคณิตศาสตร์
และนอกจากนี้ ถึงจะไม่เกี่ยวกับคอมพิวเตอร์เท่าไหร่ แต่การเรียนคณิตศาสตร์ก็ยังมีช่วยในจิตใจสงบและเกิดสุนทรียภาพด้วย จากบทความ “Mathematics: Why the brain sees maths as beauty” โดย James Gallagher ก็ยังกล่าวว่า ความงามของคณิตศาสตร์เกิดจากการที่ตอนแรกเรามองไม่เห็นความเชื่อมโยงของสัญลักษณ์ต่างๆแต่เมื่อเมื่อเชื่อมโยงกันและเราเข้าใจสมองจะทำงานในรูปแบบเดียวกับตอนที่เราดูงอนศิลปะเลยทีเช่น เช่น e^{i *pi} + 1 = 0 เราอาจไม่เข้าใจ e i และ pi สัมพันธ์กันอย่างไรแต่เมื่อมันสัมพันธ์กันเราก็จะเกิดความสุนทรีย์ การเรียนคณิตศาสตร์ก็เป็นการคลายเครียดไปอีกแบบนั่นเอง
*************************************
บทความโดยน้องตี้
รับสอนเขียนโปรแกรมคอมพิวเตอร์
http://expert-programming-tutor.com/
[ view entry ] ( 1318 views ) | permalink | ( 2.9 / 1303 )
3 เหตุผลว่าทำไม่อยากเขียนเกมต้องตั้งใจเรียนคณิตศาสตร์(ตอนที่ 1)
โดย expert-programming-tutor.com
รับสอนเขียนโปรแกรมคอมพิวเตอร์ 0853507540
EPT
เกมเป็นเป้าหมายหลักของคนเรียนเขียนโปรแกรมคอมพิวเตอร์บางส่วน เพราะเกมมีความสนุก และน่าสนใจในตัวมันเอง ไม่เพียงแต่เด็กๆเท่านั้นที่ชอบเกมผู้ใหญ่หลายคนก็ชอบ ยิ่งในปัจจุบันที่ เกมไม่ได้มีเฉพาะใน computer เครื่องใหญ่ๆ อย่างเดียวใน มือถือและ tablet ก็เต็มไปด้วยเกม มีผู้ใหญ่และเด็กหลายคนถามผมว่าอยากเขียนเกมเป็นต้องรู้อะไรบ้าง ก่อนจะไปถึงคำตอบนั้น เราจะมาดูเหตุผลก่อนว่า ทำไมอยากเรียนเขียนเกม (แบบเจาะลึก สไตล์ EXPERT-PROGRAMMING-TUTOR.com )ต้องตั้งใจเรียนเลข
เกมคอมพิวเตอร์คือ software ที่ทำหน้าที่ให้ความสนุกกับคนเล่น โดยส่วนใหญ่จะเป็นการจำลองสถานการณ์ ทั้งจากโลกจริง หรือจากโลกในจินตนาการ เปรียบเหมือนการสร้างโลกสมมุติ ขึ้นมาเพื่อความสนุกสนาน ในเมื่อเป็นโลกสมมุติ หลายๆอย่างอาจจะไม่เหมือนในโลกจริง แต่กฏบางอย่างยังต้องอยู่ เพื่อความสนุก เช่น โดนยิงต้องตาย ตกจากที่สูงต้องพลังลด ตาต้องสามารถมองเหตุวัตถุต่างๆ
แล้วคณิตศาสตร์เกี่ยวอะไร
1 Graphics
ระบบของ computer Graphics ในปัจจุบันมีสองระบบใหญ่ๆ
1 ray tracing (http://en.wikipedia.org/wiki/Ray_tracing_(graphics) ) เป็นการจำลองการตกกระทบของแสง ยังวัตถุและสะท้อนเข้าสู่ตา (กล้อง) นอกจากนี้ยังคำนวณ การตกกระทบการหักเหของแสงในวัตถุที่มีความหนาแน่นต่างกัน วิธีการนี้ใช้เวลา render นานมาก นิยมใช้ในอุตสาหกรรมภาพยนต์ และงานที่ต้องการความเหมือนจริงมากๆ
ซึ่งการเขียนโปรแกรมตรงนี้ต้องใช้ความรู้คณิตศาสตร์ เรื่อง vector , matrix , ระบบจำนวนจริง , ภาคตัดกรวย , ตรีโกณต์มิติ
ความรู้ฟิสิกส์ เรื่อง แสง ,การหักเหของแสงในตัวกลาง
2 การ Geometry transformวิธีเป็นวิธีที่ใช้ในเกม
หลักการคือ วัตถุต่างๆ เช่นหมี หมา กา ไก่ในเกม จะประกอบด้วย polygon หรือ รูปหลายเหลี่ยมเล็กๆประกอบกัน เช่น
กระต่ายstanford นี้ ประกอบด้วยสามเหลี่ยมเล็กๆจำนวนมากประกอบกัน ยิ่งสามเหลี่ยมมีขนาดเล็กเท่าไหร ก็ยิ่งสามารถ สร้างวัตถุที่ระเอียดเหมือนจริงได้มากเท่านั้น
polygon จะประกอบด้วยจุดยอดเรียกว่า vertex
ซึ่งจะนำมา transform โดยใช้ camera matrix (projective transform) ตามภาพ
หลังจากนี้ก็จะผ่านไปยังกระบวนการให้สี Shader ในที่นี้จะกล่าวถึงวิธีการของ ฟง
ซึ่งมีสูตรดังนี้
ซึ่งการเขียนโปรแกรมตรงนี้ต้องใช้ความรู้คณิตศาสตร์ เรื่อง vector , matrix , ระบบจำนวนจริง , ภาคตัดกรวย , ตรีโกณต์มิติ ,space
นอกจากนี้การเขียนเกมคอมพิวเตอร์ยัง มีเรื่องของ ระบบ AI (ปัญญาประดิษฐ์) ระบบ physics
ซึ่งยังไม่ได้กล่าวถึงในบทความนี้อีกด้วย แล้วโอกาศหน้าผมจะเขียนถึง AI ในเร็วๆนี้
เห็นไหมครับว่าการเรียนคณิตศาสตร์ไม่ใช่เรียนเพื่อเอาไปสอบอย่างเดียวฝาก บทความนี้ไว้เป็นแรงบันดาลใจในการเรียนเลขของเด็กๆม.ต้น ม.ปลายทุกคนครับ
ref.
http://www.gconsole.com/cgi-bin2/show.p ... mp;id=8803
http://homepages.inf.ed.ac.uk/rbf/CVonl ... node3.html
http://en.wikipedia.org/wiki/Phong_reflection_model
[ view entry ] ( 1832 views ) | permalink | ( 2.5 / 89 )
การใส่ลายน้ำให้รูปพร้อมๆกันเยอะๆ
ลายน้ำหรือ watermark คือ ไอ้คำว่า expert-programming-tutor.com ในรูปนี้
เคยเป็นไหม อยากจะใส่ลายน้ำ ให้รูปพร้อมๆกันหลายๆ รูป แบบไม่ต้องมานั่งทำด้วยมือที่ละ file
บางคนอาจจะขยัยแต่สำหรับคนขี้เกียจอย่างผมผมจึงเขียน code ขึ้นมาให้คอมพิวเตอร์ช่วยทำ
จึงขออธิบายวิธีการเป็น step แบบนี้
1 list รูปทุกรูปใน folder ที่เราต้องการ ก่อน
private void button1_Click(object sender, EventArgs e)
{
ProcessDirectory("D:\\JAVA_งานน้องตี้\\HTMLPad\\img");
}
public void ProcessDirectory(string targetDirectory)
{
// Process the list of files found in the directory.
string[] fileEntries = Directory.GetFiles(targetDirectory);
foreach (string fileName in fileEntries)
ProcessFile(fileName);
// Recurse into subdirectories of this directory.
string[] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
foreach (string subdirectory in subdirectoryEntries)
ProcessDirectory(subdirectory);
}
โดยใน code นี้จะเป็นการ recursive ไปตาม folder ต่างๆที่เป็น folder ลูกของ folder ตั้งต้นของเรา
แล้ว เรียก function ProcessFile
2 step ที่สอง คือ
public static void ProcessFile(string path)
{
Console.WriteLine("Processed file '{0}'.", path);
Bitmap bmp = (Bitmap)(Bitmap.FromFile(path));
Graphics gg = Graphics.FromImage(bmp);
gg.TranslateTransform(20, 20);
gg.RotateTransform((float)( 180.0 / Math.PI * Math.Atan2(bmp.Height , bmp.Width ) ));
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(128, 0, 0, 255));
gg.CompositingQuality = CompositingQuality.GammaCorrected;
gg.DrawString("expert-programming-tutor.com Tel. 0853507540", new Font("Ariel", 25, FontStyle.Regular), semiTransBrush, 0, 0);
gg.Flush();
String path2 = path.Replace("D:\\JAVA_งานน้องตี้\\HTMLPad\\img\\", "D:\\JAVA_งานน้องตี้\\HTMLPad\\img2\\") ;
if (! Directory .Exists ( Path.GetDirectoryName (path2 ) ))
{
Directory.CreateDirectory(Path.GetDirectoryName(path2));
}
bmp.Save(path2, System.Drawing.Imaging.ImageFormat.Jpeg);
}
สร้าง Graphics จาก Bitmap
translate
rotate
ไปยังตำแหน่งที่ต้องการ
พิมพ์ข้อความที่ต้องการลงไป
save รูปไปยัง path ใหม่ที่ต้องการ
ความรู้ที่ใช้สำหรับเรื่องนี้ (การใส่ watermark แบบ อัตโนมัต)
1 LOOP
2 recursive
3 Array
4 Graphics
5 การ search google หาวิธีใช้ transparent
6 การ translate และ การ rotate รูป
[ view entry ] ( 1239 views ) | permalink | ( 3 / 1776 )
การดึงข้อมูลหุ้น จาก www.set.co.th แบบ อัตโนมันติ โดยใช้ C#
เนื่องจาก คุณช้วงต้องการ code ตัวอย่าง การดึงข้อมูล หุ้นแบบ อัตโนมัต โดยใช้ C# ให้สามารถ ดึงได้ที่ละ หลายๆ หุ้นพร้อมๆ กัน ดังนั้น ผมจึงเขียนให้ สามารถ download ได้ที่
[ถ้าอยากได้ส่ง mail มาขอที่ ntprintf@gmail.com ]
ซึ่งในการนี้ เราใช้ HtmlAgilityPack เป็นตัวช่วยในกา parse XML ครับ
และใช้ HttpWebRequest ในการดึงข้อมูลครับ
ตัวอย่าง หน้าจอ
โดยสามารถ ใส่ตัวย่อหุ้น และ load ได้อย่างอัตโนมัติ ครับ
เราชื่อว่า ถ้าเรียน CS 102 แบบ มาเรียนอย่างต่อเนื่อง และ ทำการบ้านมาส่งทุกครั้งน่าจะ ทำ แนวๆนี้ได้
[ view entry ] ( 1419 views ) | permalink | ( 2.9 / 1844 )
<Back | 1 | 2 | 3 | 4 | 5 | Next> Last>>