โครงสร้างภาษาซี

Page 1

โครงสร้ างภาษาซีเบือ้ งต้ น ใช้ สาหรับ Turbo C++ Version 3.0


โปรแกรมภาษา ในการเขียนโปรแกรมคอมพิวเตอร์ ด้วยภาษาระดับต่าหรื อ ระดับสูง จะต้องเปลี่ยนภาษานั้นให้เป็ นภาษาเครื่ อง เพื่อให้เครื่ อง คอมพิวเตอร์ทางานได้ โปรแกรมต้นฉบับ (Source Program) โปรแกรมที่เครื่ องทางานได้ (Executable Program)  การเขียนโปรแกรมด้วยแอสเซมบลี (ภาษาระดับต่า) เป็ นภาษาเครื่ อง

ขั้นตอนการแปลงภาษาแอสเซมบลีเป็ นภาษาเครื่อง


โปรแกรมภาษา  การเขียนโปรแกรมด้วยภาษาระดับสู งเป็ นภาษาเครื่ อง 

อินเทอร์พรี เตอร์ (Interpreter) interpreter

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

ขั้นตอนการแปลภาษาโปรแกรม


ขัน้ ตอนพัฒนาโปรแกรม การเขียนโปรแกรมคอมพิวเตอร์ให้ทางานได้ตามเราต้องการ ผูเ้ ขียน โปรแกรมจะต้องรู ้วา่ จะให้โปรแกรมทาอะไร มีขอ้ มูลอะไร และต้องการอะไร จากโปรแกรม รวมทั้งรู ปแบบการแสดงผลด้วย โดยทัว่ ไปจะมีข้ นั ตอนการ พัฒนาโปรแกรม ดังนี้  การกาหนดและวิเคราะห์ปัญหา  การเขียนผังงานและซูโดโค๊ด  การเขียนโปรแกรม  การทดสอบและแก้ไขโปรแกรม  การทาเอกสารและบารุ งรักษาโปรแกรม


แนะนาภาษาซี  ภาษาที่เป็ นโครงสร้าง  คาสัง่ ประกอบด้วยพจน์ (term) ซึ่ งจะมีลกั ษณะเหมือนกับนิพจน์ทางพีชคคณิ ต

 มีส่วนขยายเป็ นคาหลัก (keyword) ในภาษาอังกฤษ เชค่น if, else, for, do และ while  สามารถใชค้งานในระดับต่า (low-level) ได้

 สามารถใชค้ก ับ งานด้า นโปรแกรมระบบ (system

programming) เชค่ น เขี ย น โปรแกรมระบบปฏิบตั ิการ (operating system) หรื อใชค้กบั งานทัว่ ๆ ไป  สามารถย้ายไปทางานในเครื่ องอื่นได้


ประวัติภาษาซี  ภาษาซี พฒ ั นาขึ้นมาในปี 1970 โดย Dennis Ritchie แห่ ง Bell Telephone

Laboratories, Inc. (ปัจจุบนั คือ AT&T Bell Laboratories)  ต้นกาเนิดมาจากภาษา 2 ภาษา คือ ภาษา BCPL และ ภาษา B  ภาษาซี น้ นั ถูกใชค้งานอยู่ เพียงใน Bell Laboratories จนกระทัง่ ปี 1978 Brian Kernighan และ Ritchie นั้นเป็ นที่รู้จกั กันในชคื่อของ "K&R C"  ในกลางปี 1980 ภาษาซี กก็ ลายเป็ นภาษาที่ได้รับความนิยม


โครงสร้างโปรแกรมภาษาซี Preprocessor directive

void main(void) {

Global Declarations

Local Declarations

main function

Statements ;

User define functions

} int function () {

User define functions

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

Local Declarations Statements ; }


การใช้ Preprocessor Directive     

ทุกโปรแกรมต้องมี ใชค้เรี ยกไฟล์ที่โปรแกรมใชค้ในการทางานร่ วมกัน ใชค้กาหนดค่าคงที่ให้กบั โปรแกรม เริ่ มต้นด้วยเครื่ องหมาย # ที่เราจะใชค้กนั มี 2 directives คือ  

#include ใชค้สาหรับเรี ยกไฟล์ที่โปรแกรมใชคในการทางาน #define ใชค้สาหรับกาหนดมาโครที่ให้กบั โปรแกรม #include

#define

#undef

#if

#ifdef

#ifndef

#else

#elif

#endif

#line

#error

#pragma


การใช้ #include วิธีการใชค้งาน

#include <ชคื่อไฟล์> หรื อ #include “ชคื่อไฟล์” ตัวอย่าง #include <stdio.h> (เป็ นการเรี ยกใชค้ไฟล์ stdio.h เข้ามาในโปรแกรม) #include <mypro.h> (เป็ นการเรี ยกใชค้ไฟล์ mypro.h เข้ามาในโปรแกรม)

< > จะเรี ยกไฟล์ใน directory ที่กาหนดโดยตัวคอมไพล์เลอร์ “ ” จะเรี ยกไฟล์ใน directory ทีทางานอยูใ่ นปั จจุบนั


การใช้ #define วิธีการใชค้งาน

#define ชคื่อ ค่าที่ตอ้ งการ ตัวอย่าง #define START 10 (กาหนดค่า START = 10) #define A 3*5/4 (กาหนดค่า A=3*5/4) #define pi 3.14159 (กาหนดค่า pi = 3.14159) #define sum(a,b) a+b (กาหนดค่า sum(ตัวแปรที่1, ตัวแปรที่2) = ตัวแปรที่1+ตัวแปรที่2


ส่วนประกาศ (Global Declarations)  เป็ นการประกาศตัว แปรเพื่ อ ใชค้งานในโปรแกรม โดยตัว แปรนั้นสามารถ

ใชค้ได้ในทุกที่ในโปรแกรม  เป็ นส่ วนที่ใชค้ในการประกาศ Function Prototype ของโปรแกรม  ส่ วนนี้ในบางโปรแกรมอาจจะไม่มีกไ็ ด้

ตัวอย่าง int summation(float x, float y) ; int x,y ; float z=3;

(ประกาศ function summation) (กาหนดตัวแปร x,y เป็ นจานวนเต็ม) (กาหนดตัวแปร z เป็ นจานวนจริ ง)


ส่วนประกาศ (Global Declarations) ตัวอย่าง #include <stdio.h> int feet,inches; void main() { feet = 6; inches = feet * 12; printf("Height in inches is %d",inches); }

ผลการทางาน Height in inches is 72


ฟั งก์ชนั หลักของโปรแกรม (Main Function)  ส่ วนนี้ ทุกโปรแกรมจะต้องมี โดยโปรแกรมหลักจะเริ่ มต้นด้วย main() และ

ตามด้วยเครื่ องหมายปี กกาเปิ ด ‘{’ และปี กกาปิ ด ‘}’  ระหว่างปี กกาจะประกอบไปด้วยคาสั่ง(Statement) ต่างๆ ที่ จะให้โปรแกรม ทางาน  แต่ละคาสั่งจะต้องจบด้วยเซมิโคลอน ‘;’ (Semicolon) #include <stdio.h> void main(void) { ... Statement ; }


ฟั งก์ชนั หลักของโปรแกรม (Main Function) ตัวอย่าง #include <stdio.h> int feet,inches; void main() { feet = 6; inches = feet * 12; printf("Height in inches is %d",inches); }

ผลการทางาน Height in inches is 72


การสร้างฟั งก์ชนั ใช้งานเอง (User Define Function)  สร้างฟังก์ชคนั หรื อคาใหม่ ขึ้นมาใชค้งานตามที่เราต้องการ  ระหว่างปี กกาจะประกอบด้วยคาสั่ง(Statement) ต่างๆ ที่จะให้ฟังก์ชคนั ทางาน

 สามารถเรี ยกใชค้ภายในโปรแกรมได้ทุกที่ #include <stdio.h> int function() void main(void) { ... Statement ; } int function() { Statement ; ... return (int value); }


การสร้างฟั งก์ชนั ใช้งานเอง (User Define Function) ตัวอย่าง #include <stdio.h> int Feet2Inch(int); int feet,inches; void main() { feet = 6; inches = Feet2Inch(feet); printf("Height in inches is %d",inches); } int Feet2Inch(int f) { ผลการทางาน return f*12; } Height in inches is 72


การใช้คาอธิบาย (Program Comments)  ใชค้เขียนส่ วนอธิ บายโปรแกรม (คอมเมนต์)  ชค่วยให้ผศู ้ ึกษาโปรแกรมภายหลังเข้าใจการทางานของโปรแกรม

 ส่ วนของคาอธิ บายจะถูกข้ามเมื่อคอมไพล์โปรแกรม

การเขียนส่ วนอธิบายโปรแกรม (comments)ทาได้ 2 วิธีคือ

// สาหรับคาอธิบายไปจนถึงท้ายบรรทัด และ /* คาอธิบาย */ ลักษณะการใชค้เหมือนวงเล็บนั้นเอง


การใช้คาอธิบาย (Program Comments) ตัวอย่าง #include <stdio.h> // void main() // { // int feet,inches; feet = 6; // inches = feet * 12; // printf("Height in inches // } //

ผลการทางาน Height in inches is 72

Change Feet to Inches main function Start feet  6 inches  feet * 12 is %d", inches); write inches Stop


การใช้ printf() เป็ นคาสั่งที่ใชค้ในการแสดงผลออกทางจอภาพ โดยมีรูปแบบการใชค้งานดังนี้ printf(“control หรือ format string”, variable list …);

control หรือ format string เป็ นส่ วนที่ ใ ส่ ข้ อ ความที่ จ ะแสดงผล และส่ วนควบคุ ม ลั ก ษณะการ แสดงผล รวมทั้งบอกตาแหน่ งที่ตวั แปรจะแสดงผล variable list เป็ นตัวแปรที่ต้องการจะแสดงผล ในกรณี ที่ต้องการแสดงข้ อ ความ ไม่ จาเป็ นต้ องมีส่วนนี้


โปรแกรมที่ 1  สร้าง folder ชคื่อ 517111/รหัสนักศึกษา  สร้างไฟล์ hello.c โดยให้พิมพ์คาว่า hello world  การใชค้งาน turbo c

F2 Alt+F9 Ctrl+F9 Alt+F5  พิมพ์ชคื่อตัวเองเพิ่มอีกหนึ่ งบรรทัด

Save Compile Compile & Run Output


ตัวอย่ างโปรแกรม โปรแกรม #include <stdio.h> Backslash n

void main() { ขึ้นบรรทัดใหม่ printf(“Hello world\n"); printf(“Welcome to Computer Programming 1"); return ; }

ผลการทางาน Hello world Welcome to Computer Programming 1


คาแนะนา โปรแกรม #include <stdio.h> main () { clrscr(); …. getch(); }

เคลียร์หน้าจอ รอรับค่าจากคียบ์ อร์ ด


การใช้ Control ด้วย Backslash จากตัวอย่ างที่ 3 จะเห็นได้วา่ หากต้องการให้แสดงผลข้ามบรรทัดจะต้องเพิ่ม \n ลงไป เรี ยกว่า backslash นอกจากนี้ยงั มีตวั อื่นๆ เชค่น \n

ขึ้นบรรทัดใหม่

\t

เว้นระยะ 1 tab

\xhh

ใส่ ตวั อักษร hh เมื่อ hh เป็ นเลขฐานสิ บหก เชค่น 41 = 'A', 42 = 'B'

\a

ส่ งเสี ยงปิ้ บ

\\

แสดง \

\"

แสดง "


ตัวอย่ างโปรแกรม โปรแกรม #include <stdio.h> main() { printf("%d }

%5.2f

%s", 12, 20.3, "Example");

ผลการทางาน 12

%d

20.30

Example

%5.2f

%s คือ รหัสควบคุม


รหัสควบคุมลักษณะ (Format String) %d

พิมพ์จานวนเต็มฐานสิ บ

%u

พิมพ์เลขไม่มีเครื่ องหมาย

%f

พิมพ์เลขทศนิยม

%e

พิมพ์ในรู ปจานวนจริ งยกกาลัง

%c

พิมพ์ตวั อักษรตัวเดียว

%s

พิมพ์ชคุดตัวอักษร (String)

%%

พิมพ์เครื่ องหมาย %

%o

พิมพ์เลขฐานแปด

%x

พิมพ์เลขฐานสิ บหก


ตัวอย่ างโปรแกรม โปรแกรม #include <stdio.h> #define x 65 main() { printf("%d %c %o %x\n", x, x, x, x); printf(“x = %d”, x); }

ผลการทางาน 65 A 101 X = 65

41


การจัดการหน้าจอด้วยรหัสควบคุมลักษณะ ในกรณี ที่ ต ้ อ งการจั ด การหน้ า จอแสดงผลสามารถใชค้ ต ั ว เลขร่ วมกั น กั บ รหัสควบคุมได้ เชค่น %5d หมายถึง แสดงตัวเลขจานวนเต็ม 5 หลักอย่างต่า %5.2f หมายถึง แสดงตัวเลขจานวนจานวน 5 หลักอย่างต่า และ ทศนิยม 2 ตาแหน่ง ค่ า

%d

%5d

ค่ า

%f

%5.2f

12

12

___12

1.2

1.200000

_1.20

123

123

__123

1.234

1.234000

_1.23

1234

1234

_1234

12.345

12.345000

12.35

12345

12345

12345

123.456 123.456000

123.46


โปรแกรมที่ 2  สร้างไฟล์ print.c โดย  กาหนด #define ดังต่อไปนี้

X in decimal = 65 X in octadecimal = 101 X in Hexadecimal = 41 Y = 1.234 Y = 1.23e+00 CH = %C SU = “Sipakorn university”

มีค่า 65  จานวนจริ ง Y มีค่า 1.23456  ตัวอักษร CH มีค่า ‘C’  ชคุดตัวอักษร SU มีค่า “Silpakorn university”  จานวนเต็ม X

 พิมพ์ค่าต่างๆ ที่กาหนด ให้แสดงผลดังรู ป


การเก็บค่าในภาษา C  ทาได้ 2 ลักษณะ คือ  แบบค่าคงที่ (Constant)  แบบตัวแปร (Variable)  การสร้างตัวแปร  ต้องรู ้วา่ จะใชค้ตวั แปรเก็บค่าอะไร  ประกาศตัวแปรให้เหมาะสมกับค่าที่จะเก็บ  ชคนิดของตัวแปรหลักในภาษา C  ตัวแปรที่ใชค้เก็บอักขระ (Character variable)  ตัวแปรที่ใชค้เก็บเลขจานวนเต็ม (Integer variable)  ตัวแปรที่ใชค้เก็บเลขจานวนจริ ง (Float variable)


การประกาศตัวแปร รู ปแบบของการประกาศตัวแปร ชนิดตัวแปร

int i; float realnum; char ch;

ชื่อตัวแปร;

ประกาศ i ให้ชคนิดเป็ น integer ประกาศ realnum ให้มีชคนิดเป็ น float ประกาศ ch ให้ชคนิดเป็ น character


ชนิดของตัวแปร ประเภท ข้ อมูล char short int

คาอธิบาย ตัวอักษร 1 ตัว ตัวเลข จานวนเต็ม ตัวเลข จานวนเต็ม ตัวเลข

ค่ าที่เก็บได้

ขนาด (ไบต์ )

-128 ถึง 127

1

-128 ถึง 127

1

-32768 ถึง 32767

2

32

32


การประกาศตัวแปรชนิดเดียวกัน  เราสามารถประกาศตัวแปรหลายๆตัว ที่มีชนิดเดียวกันโดยใชค้เพียง

ประโยค(statement) เดียวได้ โดยใชค้รูปแบบ 1. การประกาศทีละตัว เช่ น int i; int j; int k; 2. การประกาศพร้ อมกันหลายตัว เช่ น int i, j, k;


การประกาศตัวแปรพร้ อมให้ ค่าเริ่มต้ น  ในภาษา C ประโยค (statement) ของการประกาศตัวแปร สามารถ

กาหนดค่าเริ่มต้ นให้ กบั ตัวแปรได้ ทนั ที โดยใช้ รูปแบบ ชนิดตัวแปร ชื่อตัวแปร = ค่ าเริ่มต้ น;

เชค่น int i = 5;  นอกจากนี ้ยังสามารถประกาศ หลายๆ ตัวแปรในบรรทัดเดียว

กันได้ อีก เชค่น

int i = 5, k = 3, y;


หลักการตัง้ ชื่อ (Identifier) ชื่อ (Identifier) ไอเดนติ ฟ ายเออร์ เป็ นชคื่ อ ที่ ผูใ้ ชค้ก าหนดขึ้ น ในโปรแกรม เชค่ น ชคื่ อ ค่ า คงที่ ชคื่อตัวแปร ชคื่อฟังก์ชคนั เป็ นต้น      

ต้องขึ้นต้นด้วยตัวอักษรภาษาอังกฤษ (ตัวใหญ่หรื อเล็กก็ได้) หรื อขีดล่าง ‘_’ ตามด้วยตัวอักษรภาษาอังกฤษ ตัวเลข หรื อขีดล่าง (Underscore) ‘_’ ไม่มีชค่องว่างหรื อตัวอักษรพิเศษอื่นๆ เชค่น ‘!’, ‘@’, ‘#’, ‘$’, ‘%’, ‘^’ เป็ นต้น ตัวพิมพ์ใหญ่และเล็กจะเป็ นคนละตัวกันเชค่น NAME, name, Name, NamE ห้ามซ้ ากับคาสงวน Reserve Words ของภาษา C ห้ามตั้งชคื่อซ้ ากับ Function ที่อยูใ่ น Library ของภาษา C


คาสงวน Reserve Words ของภาษา C auto

double

int

struct

break

else

long

switch

case

enum

register

typedef

char

extern

return

union

const

float

short

unsigned

continue

for

signed

void

default

goto

sizeof

volatile

do

if

static

While

asm

_cs

_ds

_es

_ss

cdecl

far

huge

interrupt

near

pascal

_export


วีธีการสร้างตัวแปรและกาหนดค่า #include <stdio.h> void main () { int age; char sex; float grade;

#include <stdio.h> void main () { int age = 20; char sex = ‘ f ’; float grade = 3.14; char name[10] = “malee”

age = 20; sex = ‘ f ’; grade = 3.14; }

printf(“you are %s\n”,name); ... }


นิพจน์  นิพจน์ อาจประกอบด้ วย  ตัวแปร  ค่ าคงที่  การเรียกใช้ ฟังก์ ชัน

 หรือมีตวั ดาเนินการร่ วมอยู่กไ็ ด้

a + b x = y c = a + b x == y ++i


ตัวดาเนินการ กลุ่มของตัวดาเนินการ ลาดับความสาคัญมาก ตัวดาเนินการยูนารี คูณ หาร และหาเศษเหลือ บวกและลบ ตัวดาเนินการเปรียบเทียบ ตัวดาเนินการเทียบเท่า AND OR ตัวดาเนินการเงื่อนไข ลาดับความสาคัญน้อย ตัวดาเนินการกาหนดค่า

ตัวดาเนินการ - ++ -- ! sizeof (type) * / % + < <= > >= == != && || ?: = += -= *= /= %=


โปรแกรมที่ 3  สร้างไฟล์ triangle.c โดยให้  รับค่าฐานเป็ นเลขจานวนจริ ง  รับค่าความสู งเป็ นเลขจานวนจริ ง  คานวนหาค่าพื้นที่ของสามเหลี่ยม 

Area = ½ * ฐาน * สูง


การใช้ scanf() เป็ นคาสั่งที่ใชค้ในการรับค่า โดยมีรูปแบบการใชค้งานดังนี้ scanf(“format string”, address list …);

format string เป็ นส่ วนทีใ่ ช้ ในการใส่ รูปแบบของการรับข้ อมูล address list เป็ นตาแหน่ งของตัวแปรทีต่ ้ องการจะเก็บข้ อมูล


ตัวอย่ างโปรแกรม โปรแกรม #include <stdio.h>

void main() { int x ; scanf("%d",&x); printf("%d %c", x, x); return ; }

ผลการทางาน 66 66

B

65 65

A


ตัวอย่ างโปรแกรม โปรแกรม #include <stdio.h>

void main() { char s1[80], s2[80] ; scanf("%[0-9]%[a-zA-Z]", s1, s2); printf("%s %s", s1, s2); return ; }

ผลการทางาน 1234test 1234 test

test1234 test


ตัวอย่ างโปรแกรม Input Base = 12.0 Input Height = 6.0 Area of triangle is 36.00

Input Base = 3.2 Input Height = 1.2 Area of triangle is 1.92

#include <stdio.h> void main() { float b,h,area ; printf("Input Base = "); scanf("%f",&b); printf("Input Height = "); scanf("%f",&h); area = 0.5*b*h ; printf("Area of triangle is %5.2f",area); return ; }


โปรแกรมที่ 4  สร้างไฟล์ circle.c โดยให้  รับค่ารัศมีเป็ นเลขจานวนจริ ง  

กาหนดค่าคงที่ PI มีค่า 3.14159 คานวนหาค่าพื้นที่ของวงกลม 

Area = PI* (รัศมี)2


ตัวอย่ างโปรแกรม Input Radias = 12.0 Area of circle is 452.39

/* program to calculate area of a circle */ #include <stdio.h> #define PI 3.14159 main() { float radius, area; printf(“Input Radius = ?"); scanf("%f", &radius); area = PI * radius * radius; printf("Area of circle is %7.2f ", area); }


โปรแกรมที่ 5  สร้างไฟล์ donut.c โดยให้ 

 

รับค่ารัศมีของวงกลม 2 วง กาหนดค่าคงที่ PI มีค่า 3.14159 คานวนหาค่าพื้นที่ของวงกลมส่ วนสี เทา


ตัวอย่ างโปรแกรม #include <stdio.h> #define PI 3.14159 main() { float radius1,radius2, area1, area2; printf("Input outer radius ="); scanf(%f, &radius1); printf("Input inner radius ="); scanf(%f, &radius2); if (radius2 < radius1) { area1 = PI * radius1 * radius1; area2 = PI * radius2 * radius2; printf("Area of donut is %5.2f", area1-area2); } }


จบโครงสร้างภาษาซีเบื้องต้น

Question ?


คาถามเกี่ยวกับ printf() จากส่ วนของโปรแกรม yards = 8; feet = yards * 3; printf(“%d yards is \n”, yards); Printf(“%d feet”, feet);

ผลการทางาน คือ ? 8 yards is 24 feet


ตัวอย่ างโปรแกรม โปรแกรม #include <stdio.h>

void main() { char s1[80], s2[80] ; scanf("%[^0-9]%[^a-zA-Z\n]", s1, s2); printf("%s %s", s1, s2); return ; }

ผลการทางาน test1234 test 1234

1234test 1234


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.