วันอังคารที่ 24 มกราคม พ.ศ. 2560

ทดลองเขียนโปรเเกรมเพื่ออ่านไฟล์ csv เเละคำนวณ Grade Point Average (GPA)

ทดลองเขียนโปรเเกรมเพื่ออ่านไฟล์ csv เเละคำนวณ Grade Point Average (GPA)

   
    ในการทดลองเขียนโปรเเกรมเพื่ออ่านไฟล์ csv เเละคำนวณ Grade Point Average (GPA) ในครั้งนี้เราจะใช้ ภาษา Python เป็นตัวคำนวณน่ะครับ ก่อนอื่นน่ะครับผมจะพูดถึงเรื่องของการเขียนภาษา Python ก่อนเลยน่ะครับว่าเป็นมาอย่างไร(Python) เป็นภาษาโปรแกรมในลักษณะภาษาอินเตอร์พรีเตอร์โปรแกรมมิ่ง (Interpreted programming language) ผู้คิดค้นคือ Guido van Rossum ในปี 1990 ซึ่งไพธอนเป็น การจัดการชนิดของตัวแปรแบบแปรผันตามข้อมูลที่บรรจุอยู่ (Fully dynamically typed) และใช้การจัดการหน่วยความจำเป็นอัตโนมัติ (Automatic memory management) โดยได้เป็นการพัฒนาและผสมผสานของภาษาอื่น ๆ ได้แก่ ABC, Modula-3, Icon, ANSI C, Perl, Lisp, Smalltalk และ Tcl และภาษาไพธอนยังเป็นแนวคิดที่ทำให้เกิดภาษาใหม่ ๆ ซึ่งได้แก่ Ruby และ Boo เป็นต้น
    ไพธอนนั้นพัฒนาเป็นโครงการ Open source โดยมีการจัดการแบบไม่หวังผลกำไรโดย Python Software Foundation และสามารถหาข้อมูลและตัวแปรภาษาได้จากเว็บไซต์ของไพธอนเอง ที่ http://www.python.org/ ซึ่งในปัจจุบัน (ณ.วันที่ 24 มกราคม 2017) Python ได้พัฒนาถึงรุ่นที่ 3.6.0 เเล้วครับ

ข้อเด่นของภาษา Python

  • ง่ายต่อการเรียนรู้ โดยภาษาไพธอนมีโครงสร้างของภาษาไม่ซับซ้อนเข้าใจง่าย ซึ่งโครงสร้างภาษาไพธอนจะคล้ายกับภาษาซีมาก เพราะภาษาไพธอน สร้างขึ้นมาโดยใช้ภาษาซี ทำให้ผู้ที่คุ้นเคยภาษาซี อยู่แล้วใช้งานภาษาไพธอนได้ไม่ยาก นอกจากนี้โดยตัวภาษาเองมีความยืดหยุ่นสูงทำให้การจัดการกับงานด้านข้อความ และ Text File ได้เป็นอย่างดี
  • ไม่ต้องเสียค่าใช้จ่ายใดๆ ทั้งสิ้น เพราะตัวแปรภาษาไพธอนอยู่ภายใต้ลิขสิทธิ์ Python Software Foundation License (PSFL) ซึ่งเป็นของ Python Software Foundation (PSF) ซึ่งมีลักษณะคล้ายกับ ลิขสิทธิ์แม่แบบอย่าง General Public License (GPL) ของ Free Software Foundation (FSF)
  • ใช้ได้หลายแพลตฟอร์ม ในช่วงแรกภาษาไพธอนถูกออกแบบใช้งานกับระบบ Unix อยู่ก็จริง แต่ในปัจจุบันได้มีการพัฒนาตัวแปลภาษาไพธอน ให้สามารถใช้กับระบบปฏิบัติการอื่นๆ อาทิเช่น Linux Platform, Windows Platform, OS/2, Amiga, Mac OS X และรวมไปถึงระบบปฎิบัติการทีี่ .NET Framework, Java virtual machine ทำงานได้ ซึ่งใน Nokia Series 60 ก็สามารถทำงานได้เช่นกัน
  • ภาษาไพธอนถูกสร้างขึ้นโดยได้รวบรวมเอาส่วนดีของภาษาต่างๆ เข้ามาไว้ด้วยกัน อาทิเช่น ภาษา ABC, Modula-3, Icon, ANSI C, Perl, Lisp, Smalltalk และ Tcl
  • ไพธอนสามารถรวมการพัฒนาของระบบเข้ากับ COM, .NETและ CORBA objects
  • สำหรับ Java libraries แล้วสามารถใช้ Jython เพื่อทำการพัฒนาซอฟต์แวร์จากภาษาไพธอนสำหรับ Java Virtual Machine
  • สำหรับ .NET Platform แล้ว สามารถใช้ IronPython ซึ่งเป็นการพัฒนาของ Microsoft เพื่อจะทำให้ไพธอนนั้นสามารถทำงานได้บน .Net Framework ซึ่งใช้ชื่อว่า Python for .NET
  • ไพธอนนั้นสนับสนุน Internet Communications Engine (ICE) และการรวมกันของเทคโนโลยีอื่น ๆ อีกมากมายในอนาคต
  • บางครั้งนักพัฒนาอาจจะพบว่าไพธอนไม่สามารถทำงานบางอย่างได้ แต่นักพัฒนาต้องการให้มันทำงานได้ ก็สามารถพัฒนาเพิ่มได้ในรูปแบบของ extension modules ซึ่งอยู่ในรูปแบบของโค้ด C หรือ C++ หรือใช้ SWIG หรือ Broost.Python
  • ภาษาไพธอนเป็นสามารถพัฒนาเป็นภาษาประเภท Server side Script คือการทำงานของภาษาไพธอนจะทำงานด้านฝั่ง Server แล้วส่งผลลัพธ์กลับมายัง Client ทำให้มีความปลอดภัยสูง และยังใช้ภาษาไพธอนนำมาพัฒนาเว็บเซอร์วิสได้อีกด้วย
  • ใช้พัฒนาระบบบริหารการสร้างเว็บไซต์สำเร็จรูปที่เรียกว่า Content Management Systems (CMS) ซึ่ง CMS ที่มีชื่อเสียงมาก และเบื้องหลังทำงานด้วยไพธอนคือ Plone http://www.plone.org/

การติดตั้ง Python

    ก่อนอื่นเราต้องทำการ Download ตัวโปรเเกรมก่อนน่ะครับโดยสามารถที่จะ Download จากเว็บได้เลยโดยเข้าไปที่ www.python.org ได้เลยครับ ในทีนี้ผมใช้ Windows น่ะครับ

  • จากนั้นกดที่ Download ครับในขั้นตอนนี้ผมใช้ Python 3.6.0 น่ะครับ
  • จากนั้นให้ทำการติดตั้งตามปกติครับเเละเมื่อเปิดโปรเเกรมมาจะได้หน้าตาประมาณนี้น่ะครับ
  • รอจนเสร็จกด Close ครับ
  • หน้าตาของโปรเเกรม IDLE ครับ
  • หน้าตาของโปรเเกรม IDLE เลือก File -> New File ครับ

เเนวทางในการเขียนโปรเเกรม

    ทำการอ่านไฟล์ csv ออกมาในรูปเเบบของ DictReader เพื่อให้ง่ายต่อการเรียกใช้งานในการคำนวณ เมื่อทำการอ่าน ไฟล์ csv ได้เเล้วก็นำมาคำนวณ GPA โดยการอ่านที่ละเเถวจากนั้น เก็บไว้ในตัวเเปร เเละเมื่ออ่านครบก็คำนวณตามปกติ

ขั้นตอนการดำเนินการ

  • จากนั้นทำการ Export ไฟล์ออกมาให้อยู่ในรูปของ csv
  • ไฟล์ csv ที่ได้จากการ Export "เปิดด้วยโปรเเกรม Notepad++"

โปรเเกรมที่ได้เขียนขึ้น


  import csv
  import os
  point_sum = 0.0; creDits_sum = 0 ## เก็บค่าตัวเเปรเพื่อใช้ในการคำนวณ
  with open('Data_csv_file/data.csv') as csvfile: ## เปิดไฟล์ csv
      readCSV = csv.DictReader(csvfile) ## อ่านไฟล์ csv ในรูปเเบบ Dict 
      for row in readCSV: ## Loop เพื่อหาผลรวมของ Point เเละ Credits
          if row['Year'] != '': ## เเสดงปีการศึกษา
              print("---------------------\n"+"---- YEAR "+row['Year']+" ----\n"+"---------------------") 
          print(row['ID']+"  "+row['Name']+" Credits : "+row['Credits']+" Grade : "+row['Grade']) ## เเสดงรหัส เเละชื่อวิชา    
          point_sum += float(row['Credits'])*float(row['Grade']) ## คำนวณ Point รวม
          creDits_sum += int(row['Credits']) ## เก็บ Credits รวม
      print("\n#####################\n"+"#   GPA IS : "+str(round(point_sum/creDits_sum,2))+"   #\n"+"#####################\n") ## คำนวณ GPA
       

  • ผลลัพธ์ที่ได้


วันพุธที่ 18 มกราคม พ.ศ. 2560

ทดลองใช้งาน Google Spreadsheets

ทดลองใช้งาน Google Spreadsheets

    


    Google Documents หรือ Google Docs คือ เว็บไซต์ที่ให้บริการพิมพ์งานทางออนไลน์ ให้เราสามารถจัดการเอกสารได้ฟรี ไม่มีค่าใช้จ่ายใดๆทั้งสิ้น เพียงแค่คุณมีบัญชี Google บัญชีเดียวก็สามารถใช้งานบริการ Google Docs ได้ โดยปัจจุบัน Google Docs 
  • มีโปรแกรมย่อยอยู่ 4 ตัวได้เเก่ 
    Google Spreadsheet ที่มีคุณสมบัติเหมือนโปรแกรมตารางของ Microsoft อย่าง Excel เมื่อเดือนมิถุนายน 2006 ซึ่งแต่เดิมพัฒนาจาก บริษัท 2Web Technologies ก่อนที่ Google ซื้อมาเป็นของตัวเอง เมื่อเดือนมิถุนายน 2005

  • สิ่งที่ต้องมีสำหรับผู้ใช้ Google Docs คือ
    • ต้องมีบัญชี Google Accounts หากไม่มีก็สมัครผ่านทาง gmail.com หรือบนมือถือ Android ก็สมัครได้เช่นกัน ฟรี
    • สำหรับผู้ใช้คอมพิวเตอร์ โน๊ตบุ๊ต ระบบปฏิบัติการ Windows,Mac OS X, GNU/Linux ฯลฯ ต้องมีเว็บเบราว์เซอร์ในการรันเว็บไซต์ Google Docs ด้วย เช่น Internet Explorer , Microsoft Edge , Opera , Firefox , Safari และแนะนำอย่างยิ่งที่สุดคือ Chrome เพราะ Chrome จะมีปลั๊กอินบางส่วนเข้ากับการทำงานของ Google Docs ได้
    • ต้องเชื่อมต่ออินเทอร์เน็ต ผ่านทางช่องทางใดทางหนึ่ง เช่น Hi-Speed Internet , Wi-Fi , 3G , 4G
    • อุปกรณ์ Mobile Device อื่นๆ ทั้งบน iOS อย่างเช่น iPhone , iPod Touch , iPad และ โทรศัพท์มือถือ แท็บเล็ต ระบบปฏิบัติการ Android ทุกรุ่น  ซึ่งคุณสามารถโหลดแอพที่เกี่ยวข้องกับ Google docs ได้ฟรี เช่น Google Docs , Google , Sheet Google Slide ได้ทาง App Store และ Play Store ซึ่งตัวแอพจะออกแบบเข้ากับมือถือ iOS และ Android ให้คุณพิมพ์งานได้สะดวกยิ่งขึ้น

ทดลองใช้งานในการคํานวณ GPA

รูปเเสดง หน้าเเรกของ google sheets

  • เริ่มต้นสร้าง Google Spreadsheets ของเราครับ "กดตรงเครื่องหมาย + ตรงมุมล่างด้าน ขวา"
รูปเเสดง การสร้าง Google Spreadsheets เพื่อใช้งาน

  • เมื่อทำการสร้าง Sheets เสร็จเเล้วเราก็จะได้ sheets ของเราในการใช้งาน
รูปเเสดง Google Sheets ที่สร้างเสร็จเเล้ว

เเนวทางในการออกเเบบ 

  • เริ่มต้นจะทำการออกเเบบตารางก่อนครับ ในที่นี้ผมจะทำเป็น 8 column โดยจะไว้เก็บข้อมูลดังนี้
    • ปีการศึกษา : เเสดงถึงปีการศึกษา
    • รหัสวิชา : เเสดงถึงรหัสวิชานั้น
    • ชื่อวิชา : เเสดงชื่อวิชา
    • หน่วยกิต : เเสดงหน่วยกิจในรายวิชานั้น
    • เกรด : เเสดงเกรดที่ได้ในรายวิชานั้น
    • เเต้มคะเเนน : เเสดงถึงคะเเนนที่ได้จากการเอา เกรด*หน่วยกิต
    • ประจำภาค : เเสดงเกรดที่ได้ประจำภาคเรียนนั้นๆ
    • GPA : เเสดงคะเเนนสะสมของทุกภาคเรียน

รูปเเสดง การออกเเบบ column
  • ทำการกำหนดเกรดให้เป็นตัวเลขเพื่อที่จะใช้ในการคำนวณดังนี้
      • A = 4
      • B+ = 3.5
      • B = 3
      • C+ = 2.5
      • C = 2
      • D+ = 1.5
      • D = 1
      • F = 0

ปัญหาที่พบ และการแก้ไขปัญหา

  • ปัญหาที่พบคือ
    • ไม่สามารถที่จะใส่เลข "0" นำหน้าได้ คือ รหัสวิชาที่จริงจะเป็น 010123101 เเต่เมื่อใส่ข้อมูลเข้าไปจะกลายเป็น 10123101 นั้นเอง
    • คะเเนนที่ได้หลังจากคำนวณจะเป็นเลขทศนิยมหลายตำเเหน่ง เเต่ที่จริงต้องการเเค่ 2 ตำเเหน่ง 
รูปเเสดง ปัญหาที่พบ
  • การเเก้ปัญหาคือ
    • การที่เราจะใส่ 0 นำหน้านั้นเราจะต้องใส่ ' ด้านหน้าเลข 0 ครับ นั้นคือเราต้องใส่ '010123101 เเทนที่จะเป็น 010123101 ครับ 
    • การที่เราต้องการจะได้ผลการคำนวณที่มีเลขทศนิยม 2 ตำเเหน่งนั้นจะมี ฟังก์ชัน ROUND เข้ามาเป็นตัวช่วยกำหนดครับโดยจะมีการใช้งานคือ ROUND(ผลลัพธ์ที่ได้จากการคำนวณ,จำนวนทศนิยมที่เราต้องการ)
รูปเเสดง ผลจากการเเก้ปัญหาเเล้ว