ความรู้พืน้ฐานของภาษาซีwcalab.com/course/wp-content/uploads/2015/01/chapter2.pdf1.2...

Post on 22-Jul-2020

6 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

บทท 2

ความรพนฐานของภาษาซ

จดประสงคการเรยนร

1 รเกยวกบประวตและความเปนมาของภาษาซ 1.1 บอกระดบของภาษาคอมพวเตอร 1.2 บอกความเปนมาของภาษาซ 1.3 บอกความหมายของการแปลภาษา

2 มทกษะสวนประกอบและการท างานของภาษาซ 2.1 เขยนค าสง Preprocessor directive header file 2.2 เขยนค าสงสวน Body block 2.3 เขยนค าสงสวน Comment block

เนอหาสาระ

1. ประวตความเปนมา

• ระดบของภาษา • ความเปนมาของภาษาซ • ความหมายของการแปลภาษา 2. สวนประกอบและการท างานของภาษาซ

• Preprocessor directive header file • Body block • Comment block

1.1 ระดบของภาษาคอมพวเตอร

• ภาษาระดบสง (High Level Language) เปนภาษาทใกลเคยงกบภาษามนษยมากทสด ท าใหสามารถท าความเขาใจ ไดงาย เชน ภาษา BASIC, Pascal, FORTRAN, C ฯลฯ

• ภาษาระดบต า (Low Level Language) เปนภาษาทใกลชดกบเครองคอมพวเตอรมาก เครองคอมพวเตอรสามารถเขาใจค าสงในภาษานนไดงาย ซงอาจจะมการแปลเปนภาษาเครองหรอไมกได

1.1 ระดบของภาษาคอมพวเตอร

ภาษาเครอง (machine Language) อยในรปเลขฐานสอง ซงคอมพวเตอร

สามารถเขาใจไดทนท

เชน 01011100 10100110 01110111

ภาษา Assembly (Assembly Language) หรอภาษาสญลกษณ (Symbolic language) จะอยในรปของสญลกษณซงเขาใจไดงายกวาภาษาเครอง เชน

MOV L,M

PUSH H

1.2 ความเปนมาของภาษาซ

• ภาษาซไดรบการพฒนาขนโดย เดนนส รทช (Dennis Ritchie) ขณะทท างานอยทเบลแลบบอราทอร (Bell Laboratories) โดยพฒนาขนจากหลกการพนฐานของภาษาบ (B) และบซพแอล (BCPL) ในชวงป ค.ศ.1971 ถง 1973 โดยไดเพมชนดขอมลและความสามารถอน ๆ ใหมากขน

1.2 ความเปนมาของภาษาซ

ภาษาซเปนภาษาเชงโครงสรางทมการออกแบบโปรแกรมในลกษณะโมดลคอมการแบงออกเปนสวนยอยๆ เรยกวา ฟงกชน โดยมจดเดนในเรอง

• ประสทธภาพดานความเรวของการท างาน

• ความยดหยนสงในการเขยนโปรแกรม

1.2 ความเปนมาของภาษาซ ภาษา C จดเปนภาษาระดบสง เพราะตวค าสงตางๆสวนใหญจะใกลเคยงกบภาษามนษย แตกมจะมบางค าส งทมลกษณะคลายกบสญลกษณคอ ท าความเขาใจไดคอนขางยาก ดงนนเราอาจจดไดวา ภาษา C เปนภาษาระดบสงทอยต าทสด

หมายเหต ในต าราบางเลมอาจจดใหภาษา C เปนภาษาระดบกลาง (Medium Level Language หรอ High-Low Level Language)

1.3 การแปลภาษา

ในการเขยนโปรแกรมคอมพวเตอร ดวยภาษาระดบต าหรอระดบสง จะตองเปลยนภาษานนใหเปนภาษาเครอง เพอใหเครองคอมพวเตอรท างานได

โปรแกรมตนฉบบ (Source Program)

โปรแกรมทเครองท างานได (Executable Program)

การเขยนโปรแกรมดวยแอสเซมบล (ภาษาระดบต า) เปนภาษาเครอง

ขนตอนการแปลงภาษาซเปนภาษาเครอง

Source Program

Compile Machine Language

1.3 การแปลภาษา

การเขยนโปรแกรมดวยภาษาระดบสงเปนภาษาเครอง

อนเทอรพรเตอร (Interpreter)

คอมไพเลอร (Compiler)

Source Program Interpreter Machine Language

แปลทละบรรทด

Source Program Compiler Machine Language

แปลททงโปรแกรม

1.3 การแปลภาษา

การท างานของภาษาซ

• จดท าโปรแกรมตนฉบบ(Source Program) โดยบนทกไฟลเปนนามสกล .c

• แปลงรหสค าสงเปนภาษาเครอง(Compile) ซงจะไดไฟลนามสกล . obj

• การเชอมโยงโปรแกรม(Link) เปนการเชอมโยงโปรแกรมกบไลบราร ซงจะเปนผลใหเกดไฟล .exe SOURCE FILE

COMPILE

LINK

RUN

1.3 การแปลภาษา

SourceFile Compile Link Run

Test.c Test.obj Test.ilk Test.exe

กระบวนการแปลรหส

2. สวนประกอบของภาษาซ

/*Program : FirstProgram.CPP Written by: Miss.Wimolsree

Date : 05/2014 */

หมายเหตหรอค าอธบาย

#include <stdio.h>

Preprocessor,Directive,header file

void main() Function main()

{ printf (“test my first program”); printf(“”); }

Statement

2.1 Preprocessor Directive Header File • Preprocessor,Directive,Header File

ใชระบ ไฟล header ทควบคมการท างานของฟงกชนมาตรฐานไฟล header จะมนามสกลเปน .h

#include<stdio.h>

Preprocessor Directive

Header File

2.1 Preprocessor Directive Header File

• รปแบบการเขยน

#include <stdio.h>

#include “stdio.h”

หรอ

คนหาไฟลจากไดเรคทอรทใชส าหรบเกบเฮดเดอรไฟล

โดยเฉพาะ (ปกตชอ include)

คนหาไฟลจากไดเรคทอรเดยวกนกบ SourceCode ถาไมพบจะไป

หาทไดเรคทอรทเกบเฮดเดอรไฟลโดยเฉพาะ

2.1 Preprocessor Directive Header File

• การสงให Compiler น า สงทอยในไฟลทก าหนดชอมาให คอไฟล stdio.h มารวมกบ source file ขณะท าการ link เพอใหได Executable file นนหมายความวา ในโปรแกรมทเราสรางขน ไดมการเรยกใชฟงกชนทถกเกบไวใน Header File นน

Library

stdio.h

iostream.h

math.h

Firstprogram.c

include

2.1 Preprocessor Directive Header File • FOLDER “include”

2.1 Preprocessor Directive Header Fileตวอยาง header

ถามการเรยกใชฟงกชน getch() ในโปรแกรม จะตองเขยน preprocessor directive เรยกใช header file ทชอ conio.h

เนองจากฟงกชน getch() ถกเกบไวในไฟล conio.h ซงเปนคลงค าสง (Library) ของ C

#include <conio.h>

2.1 Preprocessor Directive Header Fileขอสงเกต

• การเขยน preprocessor directive จะตองเขยนรายการละ 1 บรรทด

• ไมตองมเครองหมาย ; ททายประโยค

#include<stdio.h>

2.2 Body Block

• void main()

เปนฟงกชนหลกของโปรแกรม ทกโปรแกรมจะตองม

• สวนประกอบ

int main()

{

return 0;

}

void main()

{

}

หรอ

Function

Call

0

Function

Call

2.3 Comment Block Comment การอธบายหรอหมายเหตในโปรแกรม เขยนอธบายไวในเครองหมาย

/*………*/ หรอเขยนตามหลงเครองหมาย // กได ในขณะทแปล Compiler ของ C จะไมน า ไปแปลดวย แตตองเขยน Comments อยภายในเครองหมายใหถกตอง โดยท

1. /*…..*/ Comment หลาย ๆ บรรทด

2. // ใช Comment หลง Statement

2.3 Comment Block (ตวอยาง)

Comment

/*Program : FirstProgram.C Written by: Miss Wimolsree Date : 05/2014*/

printf (“test my first program”); //display text to screen

2.3 Comment Block (ขอสงเกต)

• ไมควรเขยนคอมเมนตซอนคอมเมนต

/*Comment 1*/ /*Comment 2*/ /*Comment 3*/

/*Comment 1 /*Comment 2*/ Comment 3*/

แบบท 1

แบบท 2

ตวอยาง

#include < stdio.h >

void main()

{ int money; float money_tax,TAX; money = 1000; TAX = 0.07; money_tax = money * TAX; printf("value of money = %d\n",money); printf("value of tax = %.2f\n",money_tax ); }

top related