No Slide Title

Download Report

Transcript No Slide Title

วิชา การเขียนโปรแกรมคอมพิวเตอร์ ข้นั สู ง
4123305
เอกสารสาหรับ การเรียนใน
สั ปดาห์ ที่ 1
โดย อ.นัฐพงศ์ ส่งเนี ยม
ภาคเรียนที่ 1/2550
[email protected]
http://www.siam2dev.com
ภาษาโปรแกรมคอมพิวเตอร์
ภาษาโปรแกรม ( Programming Language ) คือ
ภาษาคอมพิวเตอร์ ท่ ใี ช้ ในการเขียนโปรแกรม
 ปั จจุบันมีภาษาโปรแกรมมากมาย การจะเลือกใช้ ภาษาใด
นัน้ ต้ องดูท่ จี ุดประสงค์ และความถนัดเป็ นหลัก
 ภาษาส่ วนมากจะมีโครงสร้ างที่คล้ ายกัน ดังนัน
้ ถ้ าเราเข้ าใจ
ปั ญหาและสามารถเขียนโครงสร้ างควบคุมได้ เราก็จะ
สามารถเขียนโปรแกรมโดยใช้ ภาษาได้ เกือบทุกภาษา

วิวัฒนาการของภาษาคอมพิวเตอร์

ภาษาคอมพิวเตอร์ มีการพัฒนามาเป็ นลาดับเช่ นเดียวกับ
เครื่ องคอมพิวเตอร์ โดยภาษายุคใหม่ ก็ย่ งิ มีความสะดวกใน
การอ่ านและการเขียนมากว่ ายุคแรก เพราะมีโครงสร้ างภาษา
คล้ ายภาษาอังกฤษมากขึน้





ภาษาเครื่ อง ( Machine Language )
ภาษาแอสเซมบลี ( Assembly Language )
ภาษาชัน้ สูง ( High-level Language )
ภาษาชัน้ สูงมาก ( Very high-level Language )
ภาษาธรรมชาติ ( Natural Language )
ภาษาเครื่ อง ( Machine Language )




ภาษาเครื่ อง ( Machine Language ) เป็ นภาษาที่เกิดในยุคแรกและเป็ น
ภาษาเดียวที่เครื่ องคอมพิวเตอร์ เข้ าใจ
ภาษาเครื่ องจะแทนข้ อมูลและคาสั่งด้ วยกลุ่มของเลขฐานสอง
เครื่ องแต่ ละเครื่องจะมีภาษาเครื่ องของตัวเอง ไม่ สามารถนา
ภาษาเครื่ องที่ใช้ กับเครื่องประเภทหนึ่งไปใช้ กับเครื่ องประเภทอื่นได้
( Machine Dependent )
ภาษาเครื่ องจะประกอบด้ วยเลขสองส่ วน 01011010 000100001111001110110010


โอเปอเรชันโคด ( Operation Code )
โอเปอแรนด์ ( Operands )
โอเปอเรชันโคด
โอเปอแรนด์
ภาษาเครื่ อง ( Machine Language )
01011010 000100001111001110110010
โอเปอเรชันโคด
โอเปอแรนด์
ภาษาแอสเซมบลี ( Assemby
Language )

ภาษาแอสเซมบลี ( Assembly Language ) จะแทนข้ อมูลและคาสั่งด้ วย
สัญลักษณ์ ข้อความ ( Mnemonic Codes )







A ย่ อมาจาก Add หมายถึงบวก
S ย่ อมาจาก Subtract หมายถึงลบ
ST ย่ อมาจาก Store หมายถึงเก็บค่ าลงหน่ วยความจา
เช่ น
A
2,Y หมายถึงบวกค่ าของ Y กับค่ าใน R2 แล้ วเก็บใน R2
ST
2,W หมายถึงเก็บค่ าใน R2 ไว้ ใน W
ภาษาแอสเซมบลี 1 คาสั่งจะสามารถแปลเป็ นภาษาเครื่ องโดยใช้ แอสเซม
เบลอร์ ( Assembler ) ได้ 1 คาสั่งเช่ นกัน ดังนัน้ ภาษาแอสเซมบลีจึงเป็ น
ภาษาที่ขนึ ้ อยู่กับเครื่ อง
ผู้เขียนต้ องมีความรู้ เรื่ องฮาร์ ดแวร์ เป็ นอย่ างดี
ภาษาชัน้ สูง ( High-level Language )



ภาษาชัน้ สูง ( High-level Language ) หรือภาษารุ่ นที่ 3 ( 3GLs ) มีลักษณะคล้ าย
ภาษาอังกฤษทั่วไปทาให้ อ่านและเขียนง่ าย
ผู้เขียนไม่ จาเป็ นต้ องรู้เรื่ องระบบฮาร์ ดแวร์ มากนัก
แต่ ละภาษาจะต้ องมีตัวแปลภาษาเฉพาะตัว เพื่อแปลงให้ เป็ นภาษาเครื่อง



คอมไพเลอร์ ( Compiler )
 จะทาการแปลโปรแกรมทัง้ โปรแกรมให้ เป็ นเอ็กซ์ ซค
ี ิวท์ โปรแกรม ( Execute Program )
 ตัวอย่ างเช่ นภาษาซี ( C ) ภาษาปาสคาล ( Pascal )
อินเตอร์ พรีเตอร์ ( Interpreter )
 จะทาการแปลโปรแกรมภาษาชัน
้ สูงทีละคาสั่งให้ เป็ นภาษาเครื่องแล้ วทาการรันทันที
 ตัวอย่ างเช่ นภาษาเบสิก ( BASIC ) ภาษาเพิร์ล ( Perl )
เป็ นภาษาที่ไม่ ขนึ ้ อยู่กับเครื่อง ( Machine Independent )
อินเทอร์ พรีเตอร์ (Interpreter)
แปลโปรแกรมทีละคาสั่งและ
ทางานตามคาสั่งนัน้ ทันที
- ใช้ เนือ้ ที่ในหน่ วยความจาน้ อย
- ถ้ าโปรแกรมมีการทางานแบบ
วน
ซา้ Loop จะต้ องแปลคาสั่งซา้
แล้ วซา้ อีกทาให้ การทางานช้ า
-
คอมไพเลอร์ (Compiler)
แปลทัง้ โปรแกรมแล้ วจึงทางานตาม
คาสั่งในโปรแกรมนัน้
- ใช้ เนือ
้ ที่ในหน่ วยความจามาก
- ถ้ าโปรแกรมมีการทางานแบบวนซา้
(Loop) เครื่องจะนาออบเจ็คโปรแกรม
ไปใช้ งานเลยโดยไม่ ต้องแปลซา้ ทาให้
ทางานได้ เร็วกว่ า
-
รูปแบบของคาสัง่ ทีม่ อี ยู่ในภาษาโปรแกรม



การประกาศชนิดข้ อมูลตัวแปร
คาสั่งกาหนดค่ าข้ อมูลให้ กับตัวแปร
คาสั่งควบคุม



คาสั่งการประมวลผล



คาสั่งเงื่อนไข ( IF-THEN-ELSE )
คาสั่งวนซา้ ( DO WHILE , DO UNTIL )
คาสั่งการคานวณทางคณิตศาสคร์
คาสั่งในการแสดงผลข้ อมูล
คาสั่งจบการทางาน
ตัวอย่างของภาษาชัน้ สูง

ฟอร์ แทรน ( FORTRAN , FORmula TRANslator )





พัฒนาในปี 1954 โดย IBM
เหมาะกับงานด้ านวิทยาศาสตร์ วิศวกรรมศาสตร์ และคณิตศาสตร์
คาสั่งจะง่ ายและสัน้
ไม่ เหมาะกับงานธุรกิจที่ต้องสร้ างรายงานมากๆ
โคบอล ( COBOL , COmmon Business-Oriented Language )




พัฒนาในปี 1959 โดยตัวแทนจากหน่ วยงานต่ างๆ ( CODASYL )
เหมาะกับงานด้ านธุรกิจที่มีข้อมูลมากๆ หรื อออกรายงานที่ซับซ้ อน
คาสั่งใกล้ เคียงกับภาษาอังกฤษมากทาให้ เข้ าใจง่ าย
โปรแกรมจะค่ อนข้ างยาวและเยิ่นเย้ อ ไม่ เหมาะกับงานที่ต้องมีการคานวณมาก
ตัวอย่ างของภาษาชัน้ สูง ( ต่ อ )

เบสิก ( BASIC , Beginner’s All-purpose Symbolic Instruction Code )





พัฒนาในปี 1965 โดย John Kemeny และ Thomas Kurtz แห่ ง Dartmouth Uni.
เหมาะกับผู้เริ่ มต้ นหัดเขียนโปรแกรม
ง่ ายต่ อการเรี ยนรู้
ไม่ เหมาะในการใช้ พัฒนางานที่มีขนาดใหญ่
ปาสคาล ( PASCAL , Blaise Pascal )

พัฒนาจากภาษา ALGOL-60 โดย Dr. Niklaus Wirth จากซูริค สวิสเซอร์ แลนด์
เหมาะกับผู้เริ่ มต้ นเขียนโปรแกรมที่มีโครงสร้ าง
เป็ นภาษาที่มีโครงสร้ างดีมาก

ไม่ เหมาะกับงานด้ านธุรกิจเพราะยังจัดการกับข้ อมูลปริมาณมากๆ ได้ ไม่ ดี


ตัวอย่ างของภาษาชัน้ สูง ( ต่ อ )

ซี ( C )




พัฒนาในปี 1972 โดย Dennis Ritchie แห่ งศูนย์ วจิ ยั เบลล์ ( Bell )
เหมาะกับงานทั่วไป
มีประสิทธิภาพในการทางานใกล้ เคียงกับภาษาแอสเซมบลี
ยากที่จะเรี ยนรู้ เพราะคาสั่งไม่ มีรูปแบบที่แน่ นอน
ภาษาชัน้ สูงมาก ( Very high-level Language )

ภาษาชัน้ สูงมาก ( Very high-level Language ) หรื อภาษารุ่ นที่ 4 ( 4GLs ) มี
ลักษณะคล้ ายภาษาพูดของมนุษย์



ส่ วนประกอบของภาษา 4GLs




เป็ นภาษาแบบ Nonprocedural คือเวลาเขียนโปรแกรมผู้เขียน เพียงบอกว่ าต้ องการ
อะไร ( What ) แต่ ไม่ ต้องบอกว่ าทาอย่ างไร ( How )
ส่ วนมาก 4GLs จะควบคู่กับระบบฐานข้ อมูล
เครื่ องมือช่ วยสร้ างรายงาน ( Report Generators )
ภาษาข่ วยค้ นหาข้ อมูล ( Query Languages )
เครื่ องมือช่ วยสร้ างโปรแกรม ( Application Generators )
ตัวอย่ างเช่ นภาษา SQL
ภาษาธรรมชาติ ( Natural Language )

ภาษาธรรมชาติ ( Natural Language ) หรื อภาษารุ่ นที่ 5 ( 5GLs ) มีลักษณะ
เป็ นภาษาพูดของมนุษย์




งานที่เหมาะกับภาษาประเภทนี ้ มักยุ่งเกี่ยวกับข้ อมูลเป็ นจานวนมาก




เป็ นภาษาแบบ Nonprocedural
ถูกพัฒนาขึน้ มาจากเทคโนโลยีด้านระบบผู้เชี่ยวชาญ ( Expert System ) ซึ่งเป็ นงานที่อยู่
ในสาขาปั ญญาประดิษฐ์ ( Artificial Intelligence )
จาเป็ นต้ องมีการรวบรวมข้ อมูลเพื่อสร้ างเป็ นฐานความรู้ ( Knowledge Base )
การแพทย์
การพยากรณ์ อากาศ
การวิเคราะห์ ทางเคมี
ตัวอย่ างเช่ น ภาษา LISP , PROLOG
ภาษาแบบเชิงวัตถุ ( Object-Oriented Languages )



การเขียนโปรแกรมแบบเชิงวัตถุ ( OOP , Object-Oriented Programming )
เป็ นแนวคิดที่จะสร้ างวัตถุ ( Object ) แต่ ละชิน้ ให้ ทางานเฉพาะอย่ างและ
สามารถนาออบเจ็กต์ ย่อยๆเหล่ านัน้ มารวมกันเป็ นโปรแกรมขนาดใหญ่
ต่ อไป
ออบเจ็กต์ แต่ ละชิน้ ผู้ใช้ ไม่ จาเป็ นต้ องสร้ างเอง เพียงแต่ ใช้ ให้ เป็ นก็พอ
คุณสมบัตทิ ่ ีสาคัญของ OOP





รี ยูส ( Reuse ) คือการนาออบเจ็กต์ ท่ เี ขียนขึน้ กลับมาใช้ ใหม่
เอนเคปซูเลชัน ( Encapsulation ) เป็ นการซ่ อนคุณสมบัตบิ างอย่ างไว้ ภายใน
อินเฮริ ท ( Inherit ) เป็ นการสืบทอดคุณสมบัตบิ างอย่ างของบรรพบุรุษ
โพลีมอร์ ฟิซึม ( Polymorphism ) คือคาสั่งบางคาสั่งของออบเจ็กต์ มีการใช้ อาร์ กรู เมนต์
หลายรู ปแบบ
ตัวอย่ างเช่ น ภาษา Java , C++
ภาษาแบบวิชวล ( Visual Languages )

ภาษาแบบวิชวล ( Visual Languages ) เป็ นภาษาที่เขียนได้
ง่ ายยิ่งกว่ าภาษายุคที่ 4



ใช้ แนวคิดของ OOP แต่ ไม่ เน้ นที่การเขียนโปรแกรม
เน้ นการสร้ างงานบนวินโดว์ ท่ มี ีลักษณะเป็ น GUI
ออบเจ็กต์ ของ Visual Languages นีอ้ าจเรี ยกว่ า Components




ปุ่ มกด ( Button )
แถบเลื่อน ( Scroll Bar )
เมนู ( Menu )
ตัวอย่ างเช่ น ภาษา Delphi , Visual Basic