แสดงบทความที่มีป้ายกำกับ ภาษา C แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ ภาษา C แสดงบทความทั้งหมด

วันเสาร์ที่ 2 พฤษภาคม พ.ศ. 2563

ทำไมถึงเขียน ภาษา C และ Gtk+ 2.0

หลังจากที่เริ่มเขียนโปรแกรมภาษา C และ Gtk+ 2.0 มาได้ประมาณ 2 สัปดาห์ ก็มีหยุดบ้างทำบ้าง มีหายไปประมาณ 3-4 วัน และบางทีก็ทำสลับกับงานอื่นๆ ไป แต่บางครั้งก็นั่งหน้าจอมากกว่า 12 ชั่วโมง เพื่อค้นหาข้อมูล คิดหาวิธีการเขียนโปรแกรม บางทีเมื่อคิดไม่ออกก็เปลี่ยนไปนั่งทำอย่างอื่นบ้าง ไปหาข้อมูลเกี่ยวกับ Micro-controller หรือไม่ก็ไปไสไม้ทำกล่อง ทำชั้นเรื่อยเปื่อย

เดิมทีจะเขียนระบบ Digital Designage

ถึงตอนนี้การเขียนภาษา C โดยใช้ Gtk+ ก็ถือว่าก้าวหน้าไประดับหนึ่ง สามารถเขียนได้เป็นเรื่องเป็นราว แต่ก็ยังติดขัดปัญหาอยู่บ้าง บางทีก็ติดเรื่องหาตัวอย่างและข้อมูลไม่ได้ทันที กว่าจะเจอก็ใช้เวลานานพอควร

การเรียนรู้ก็เทียบเคียงกับการเขียนโปรแกรมอื่นๆ ในเรื่องหลักการโดยรวม เช่น สร้างหน้าจอรับข้อมูล หลักการก็ต้องมีช่องรับ เมื่อพิมพ์ก็สามารถตรวจสอบการกดปุ่มคีย์บอร์ดได้ด้วย ว่าพิมพ์ถูกหรือผิด มีการดักอีเวนท์ต่างๆ ของคีย์บอร์ด เมื่อกดปุ่ม enter ก็ให้เลื่อนไปอีกช่องหนึ่งหรือคอนโทรลอื่น เป็นต้น

ใน Gtk+ ก็มีสิ่งเหล่านี้รองรับหมดแล้ว และเหนือกว่าบางโปรแกรมด้วยซ้ำไป แต่ปัญหา คือ ตัวอย่างและเอกสารต่างๆ บางทีก็ยากที่จะเรียนรู้ หากเมื่อเทียบกับการเรียนรู้ FoxPro ในอดีต สิ่งหนึ่งที่ผู้เขียนชอบมาก คือ กดปุ่ม F1 เพื่ออ่าน Help ของโปรแกรม และแต่ละส่วนก็จะมีตัวอย่างให้เราพิมพ์ตาม จนแทบไม่ต้องหาจากหนังสือเลย (สมัยนั้นไม่มีแหล่งเรียนรู้ใน www ต้องหาจากหนังสือหรือ Help นี่แหละ และสมัยนั้นลงทุนซื้อหนังสือต่างประเทศราคา 2-3 พันบาทก็มี)

วันพุธที่ 5 กันยายน พ.ศ. 2561

ทำไมใน main() ต้อง return 0;

ทำไมต้อง return 0 ใน main( )

คำถามยอดฮิตแต่คำตอบมีนิดเดียว หายากเหมือนกันครับ แต่เอาง่ายๆ เลย คือ

"เป็นกฏที่เพิ่มเข้ามาในมาตรฐานภาษา C ในปี 1999 หรือ C99"

โดยกำหนดให้มีการคืนค่าเป็นตัวเลขเสมอ จะไม่สามารถคืนค่าอื่นได้

ในสมัยก่อนการเขียนโปรแกรมภาษา C จะเขียนฟังค์ชัน main( ) ดังนี้

void main(){

}

บางคนบอกว่าไม่ส่งค่าอะไรกลับ จริงๆ แล้วก็ ส่งค่า void นั่นแหละครับ ต่อมาจึงมีกำหนดมาตรฐานใหม่ให้ส่งค่า int กลับคืน ดังนั้น ก่อนจบฟังค์ชัน main() จึงต้องส่งค่า 0 กลับไป หมายถึง โปรแกรมทำงานเสร็จสิ้นโดยสมบูรณ์แล้ว ไม่มี error

การทำงานลักษณะนี้คนที่คุ้นเคยกับ Linux ที่เขียนสคริปส์บ่อยๆ จะไม่ค่อยแปลกใจสักเท่าใดนั

สำหรับคนที่สอนเขียนภาษา C ส่วนหนึ่งจะเพิ่ม int main( ) และ return 0; เสมอ เพราะกลัวว่าบางคนใช้ ide บางรุ่นแล้วจะคอมไพล์ไม่ผ่าน แต่ปัจจุบันหลายโปรแกรมไม่มีปัญหาแบบนี้แล้ว อย่างไรก็ตามใส่ไว้ก็ไม่เสียหายครับ


 

มาตรฐานที่ออกปี 1990 ยังไม่มีข้อกำหนดให้ return 0 หากไม่ได้ส่งค่าอะไรกลับ โปรแกรมจะส่งค่า undefined กลับไป
 
 

มาตรฐานที่ออกปี 1999 กำหนดไว้ในข้อ 5.1.2.2.3 ให้ส่งค่า return 0 กลับไปด้วย
 
 

เอกสารอ้างอิง gnc-c Manual
http://studenti.fisica.unifi.it/~carla/manuali/gnu-c-manual.pdf

Gtk4 ตอนที่ 6 Defining a Child object

Defining a Child object A Very Simple Editor ในบทความที่ผ่านมาเราสร้างโปรแกรมอ่านไฟล์ชนิดข้อความ และในบทความนี้ก็จะมาปรับแต่งโปรแกรมกันสักหน...