Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

ภาษาซีและคอมไพเลอร์

No description
by

Nattapong Senvo

on 5 September 2016

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of ภาษาซีและคอมไพเลอร์

ความเป็นมาของภาษาซี
ภาษา C เกิดขึ้นในปี ค.ศ .1972 ผู้คิดค้นคือนายเดนนิส ริตชี
(Dennis Ritchi) แห่งห้องทดลองเบลล์ (Bell laboratories)
นายเดนนีสได้ใช้หลักการมาจากภาษา บีซีพีแอล
ของนายเคน ทอมสัน (Ken tomson) เดนนิสริตชีมีจุดมุ่งหมายให้ภาษา C ที่เขาพัฒนาขึ้นเป็นภาษาสำหรับใช้เขียนโปรแกรม
ปฏิบัติการระบบยูนิกซ์ และได้ตั้งชื่อว่า ซี (C) เพราะเห็นว่า ซี (C) เป็นตัวอักษรต่อจากบี (B) ของภาษา BCPL ภาษาซีถือว่าเป็นภาษาระดับสูงและภาษาระดับต่ำ
การศึกษาภาษาซีถือว่าเป็นพื้นฐานในการศึกษาภาษาใหม่ ๆ ได้
โทเคนในภาษาซี
สัญลักษณ์พิเศษ ทั้งสัญลักษณ์ที่ไม่ใช่ A-Z, a-z และ 0-9
คอมไพเลอร์ (Compiler)
กระบวนการแปลภาษา
ภาษาซีเป็นภาษาชั้นสูงและเป็นภาษาที่มนุษย์เข้าใจ แต่เครื่องคอมพิวเตอร์เข้าใจเฉพาะภาษาเครื่อง
ท่านั้น ดังนั้นหากต้องการให้คอมพิวเตอร์ทำงานภาษาซีที่สร้างขึ้น จำเป็นต้องมีตัวแปลภาษาที่สร้างขึ้นให้เป็นภาษาเครื่องก่อนจึงจะทำงานได ซอฟต์แวร์สำหรับแปลภาษาซีให้เป็นภาษาเครื่องคือ ตัวแปลภาษาซี (C Compiler)
ขั้นตอนการพัฒนาโปรแกรมภาษา C
จุดเด่นของภาษาซี
ภาษาซีและคอมไพเลอร์
ภาษาซี ที่คิดขึ้นโดยเดนนิสวิตซ์

- ตัวอักษรตัวเดียว

# ~ & ‘ “ * / % + - ^ . , ; : ? = ! { }
[ ] < >
- ตัวอักษรสองตัวติดกัน

= -z *= /= +- -- ++ == %= <= >= <>
- > && || |* */ //

การพัฒนาโปรแกรมภาษา C มีขั้นตอนดังนี้
1) เขียนโปรแกรมต้นฉบับ (source program) ด้วยภาษา C
ใช้โปรแกรม Turbo C/ C++ เพื่อเขียนโปรแกรมต้นฉบับด้วยภาษา C จากนั้นบันทึกโปรแกรมพร้อมกับตั้งชื่อแฟ้มไว้ แฟ้มที่ได้จะมีนามสกุล *.c หรือ *.cpp เช่น simple.c หรือ simple.cpp เป็นต้น
2) แปลโปรแกรมภาษา C ไปเป็นโปรแกรมภาษาเครื่อง (object program)
ใช้คำสั่ง compile เพื่อแปลโปรแกรมภาษา C ไปเป็นโปรแกรมภาษาเครื่อง แฟ้มที่ได้จะมีนามสกุล *.obj ซึ่งในขั้นตอนนี้โปรแกรมต้นฉบับอาจเกิดความผิดพลาดทางไวยกรณ์ภาษา
(syntax error) ขึ้นได้ จึงต้องย้อนกลับไปแก้ไขโปรแกรมต้นฉบับในข้อ 1. ให้ถูกต้องเสียก่อน
3) เชื่อมโยง (link) โปรแกรมภาษาเครื่องเข้ากับ library function ของ
ภาษา C จะได้เป็น execute program โดยใช้คำสั่ง link แฟ้มที่ได้จะมีนามสกุล *.exe
4) สั่งให้ execute program แสดงผลลัพธ์ออกมา โดยใช้คำสั่ง run
**ในขั้นตอนนี้ผู้เขียนโปรแกรม ควรตรวจสอบผลลัพธ์ที่ได้จากโปรแกรมว่าตรงกับความต้องการของเราหรือไม่ ถ้าผลลัพธ์ที่ได้ไม่ตรงกับความต้องการให้กลับไปแก้ไขโปรแกรมต้นฉบับในข้อ 1. เสร็จแล้วทำขั้นตอน ข้อ 2. ถึง ข้อ 4. ซ้ำอีก ทำซ้ำเช่นนี้จนกว่าจะได้ผลลัพธ์ที่ต้องการ
1.เป็นภาษาที่มีลักษณะเป็นโครงสร้างจึงเขียนโปรแกรมง่าย โปรแกรมที่เขียนขึ้นจะทำงานได้อย่างมีประสิทธิภาพสูง สั่งงานคอมพิวเตอร์ได้รวดเร็วกว่าภาษาระดับสูงอื่น ๆ
2.สั่งงานอุปกรณ์ในระบบคอมพิวเตอร์ได้เกือบทุกส่วนของฮาร์ดแวร์ซึ่งภาษาระดับสูงภาษาอื่นทำงานดังกล่าวได้น้อยกว่า
3.คอมไพเลอร์ภาษาซีทุกโปรแกรมในท้องตลาดจะทำงานอ้างอิงมาตรฐาน(ANSI= American National Standards Institute) เกือบทั้งหมด จึงทำให้โปรแกรมที่เขียนขึ้นด้วยภาษาซีสามารถนำไปใช้กับคอมพิวเตอร์
ได้ทุกรุ่นที่มาตรฐาน ANSI รับรอง
คอมไพเลอร์ (Compiler) เป็นโปรแกรมแปลภาษาที่ทำหน้าที่แปลภาษาระดับสูงมาเป็นภาษาเป้าหมาย
(Object Program) ซึ่งอาจหมายถึง ภาษาเครื่อง หรือภาษาแอสแซมบลี ถ้ามีข้อ ผิดพลาดเกิดขึ้น Compiler จะหยุดการแปล
ในการพัฒนาซอฟต์แวร์คอมพิวเตอร์นั้น
โปรแกรมเมอร์ (Programmer) จะเขียนโปรแกรม
ในภาษาคอมพิวเตอร์แบบต่างๆ ตามความชำนาญของแต่ละคน โปรแกรมที่ได้จะเรียกว่า โปรแกรมต้นฉบับ หรือ Source Code ซึ่งมนุษย์จะอ่านโปรแกรมต้นฉบับนี้ได้ แต่เครื่องคอมพิวเตอร์จะไม่สามารถเข้าใจคำสั่งเหล่านั้น เนื่องจากคอมพิวเตอร์เข้าใจแต่ภาษาเครื่อง
ซึ่งมีลักษณะเป็นชุดของบิทที่สร้างขึ้นจากรหัส
ของระบบเลขฐานสอง (เลข 0 และ 1 เท่านั้น) ที่หมายถึงสถานะของไฟฟ้าที่มีสองสถานะ
คือ เปิดและปิด นั่นทำให้การเขียนโปรแกรมเป็นเรื่องไม่สะดวก เนื่องจากจะต้องจำรหัสคำสั่งผู้เขียนจะเข้าใจได้ยาก
ทำการตรวจสอบหาข้อผิดพลาดของโปรแกรมได้ยากฉะนั้น
จึงต้องอาศัยโปรแกรม ตัวแปลภาษาคอมพิวเตอร์
ในการแปลภาษาคอมพิวเตอร์ภาษาต่างๆไป
เป็นภาษาเครื่อง โปรแกรมที่แปลจาก Source Code
แล้วจะเรียกว่า Object Code ซึ่งจะประกอบด้วย รหัสคำสั่งที่คอมพิวเตอร์สามารถเข้าใจ และนำไปปฏิบัติต่อได้
ลักษณะการทำงานของ Compiler
ถ้าต้องการรันโปรแกรม ต้องสั่งงาน Compiler ให้ทำการแปลภาษานั้น แล้วทำการ Execute โปรแกรม Source Code
การทำงานของ Compiler จะ
ประกอบด้วย 5 ขั้นตอนหลัก
1. Lexical Analyzer: เป็นขั้นตอนในการตรวจจับ และจัดเรียงคำของ
Source Code ที่ต้องการแปลภาษา
2. Syntax Analyzer: เป็นขั้นตอนในการตรวจสอบไวยกรณ์ของภาษาว่า
ถูกต้องตาม รูปแบบของภาษานั้นๆ หรือไม่
3. Semantic Analyzer: เป้นขั้นตอนในการตรวจสอบชนิดของข้อมูล
ที่จะนำมาประมวลผลและทำการเปลี่ยนรูปแบบของภาษาให้อยู่ในรูปของ
Intermediate Form เพื่อรอการแปลงให้เป็น Object Program
4. Code Generation: เป็นการแปล Intermediate Form
ให้เป็น Object Program ซึ่ง ส่วนใหญ่จะเป็นภาษาแอสแซมบลี

5. Code Optimization: เป็นการลดขั้นตอนการทำงานที่ซ้ำซ้อนกันของภาษาเครื่อง เพื่อให้การประมวลผลโดยเครื่องคอมพิวเตอร์ทำงานได้เร็วขึ้น
การคอมไพล์และลิงค์โปรแกรมในภาษาซี
การสร้างโปรแกรมที่สามารถใช้งานได้ขึ้นมาโปรแกรมหนึ่งในภาษาซีมีขั้นตอนดังนี้
1) สร้างตัวโปรแกรมที่เป็นตัวอักษรหรือเรียกว่า ซอร์สไฟล์ (Source file) โดยมีนามสกุลเป็น .c หรือ .cpp ขึ้นมาก่อน โดยใช้โปรแกรมที่สามารถเขียนไฟล์ที่เก็บอักขระ ใดๆก็ได้อักษรหรือ
อักขระใดๆ นั้น จะต้องอยู่ในรูปแบบของการโปรแกรมภาษา (ขั้นตอนนี้คือการสร้างโปรแกรมที่เป็นภาษามนุษย์นั่นเอง)
2) คอมไพล์เลอร์ของภาษาซี (C Compiler) จะทําการแปลงซอร์สไฟล์จากอักขระใดๆให้เป็นรหัสที่เครื่องคอมพิวเตอร์
สามารถเข้าใจได้เก็บไว้ในอีกไฟล์หนึ่งเรียกว่าไฟล์วัตถุประสงค์ (Object file)
ที่มีนามสกุล .obj (ขั้นตอนนี้เรียกว่าการคอมไพล์เป็นการแปลงภาษามนุษย์เป็นภาษาเครื่องนั่นเอง)
3) ตัวเชื่อม (Linker) จะทําการตรวจสอบว่าในโปรแกรมที่เขียนขึ้นนั้น มีการเรียกใช้งานฟังก์ชันมาตรฐานใดจากห้องสมุดของภาษาซี (C Library) บ้างหรือไม่ถ้ามีตัวเชื่อมจะทําการรวมเอาฟังก์ชัน
เหล่านั้นเข้ากับไฟล์วัตถุประสงค์แล้วจะได้ไฟล์ที่สามารถทํางานได้โดยมีนามสกุล
เป็น .exe (ขั้นตอนนี้เรียกว่าการลิงค์เป็นการรวมฟังก์ชันสําเร็จรูปเข้าไป แล้วสร้างไฟล์ที่ทํางานได้)
Full transcript