บทที่ 2

35
บบบบบ 2 บบบบบบบบบบบบบบ บบบบบบ

Upload: roanna-abbott

Post on 01-Jan-2016

29 views

Category:

Documents


0 download

DESCRIPTION

บทที่ 2. เริ่มต้นใช้งานภาษาซี. Outline. องค์ประกอบของภาษาซี ชื่อ ชนิดข้อมูล เครื่องหมายคณิตศาสตร์ นิพจน์คณิตศาสตร์ เครื่องหมายเปรียบเทียบ กำหนดตัวแปร. ภาษาซี. - PowerPoint PPT Presentation

TRANSCRIPT

บทท�� 2

เริ่��มต้นใช้งานภาษาซี�

Outline

– องค์�ประกอบของภาษาซี�– ชื่��อ– ชื่นิ�ดข�อมู�ล– เค์ร��องหมูายค์ณิ�ตศาสตร�– นิ�พจนิ�ค์ณิ�ตศาสตร�– เค์ร��องหมูายเปร�ยบเที�ยบ– ก$าหนิดต%วแปร

ภาษาซี�

• ภาษาซี�ได�พ%ฒนิาข*+นิในิป- ค์.ศ.1972 โดย เดนิ�ส ร�ชื่ชื่�� (Dennis Ritchie) นิ%กค์ณิ�ตศาสตร�ประจ$าห�องปฏิ�บ%ต�การเบลล� (Bell Laboratories) มูลร%ฐนิ�วเจอร�ซี� (New Jersey) ประเทีศสหร%ฐอเมูร�กา

• ภาษาซี� รวบรวมูจ2ดเด3นิของภาษาระด%บส�งผนิวกเข�าก%บภาษาระด%บต$�า โดยใชื่�ต%วแปรภาษาชื่นิ�ด Compiler จ*งมู�ค์วามูสามูารถในิการใชื่�งานิส�งมูาก โปรแกรมูมู�ค์วามูกะที%ดร%ด และ ที��ส$าค์%ญ มู�การนิ$าภาษาซี�ไปเข�ยนิโปรแกรมูประย2กต�ต3าง ๆ ข*+นิมูาใชื่�งานิอ�กเป8นิจ$านิวนิมูาก

องค์�ปริ่ะกอบของภาษาซี�#include <stdio.h>

main()

{

int a;

a = 30;

printf(“a = %d”, a)

}

Header file

Function’s name

Declaration

Program

ภาษา C จะม�เฮดเดอริ่�ท��ใช้งานปกต้�ท��งหมด 15 ไฟล์� ด�งต้$อไปน��

assert.h ctype.h errno.h float.h

limits.h locale.h math.h setjmp.h

signal.h stdarg.h stddef.h stdio.h

stdlib.h string.h time.h

สำ&าหริ่�บเฮดเดอริ่�ไฟล์�ท��ใช้งานปริ่ะจ&า • ctype.h ใชื่�ส$าหร%บการประกาศฟั:งก�ชื่%นิเก��ยวก%บ

ต%วอ%กษร• conio.h ใชื่�ส$าหร%บการประกาศฟั:งก�ชื่%นิเก��ยวก%บ

การแสดงผล• math.h ใชื่�ส$าหร%บการประกาศฟั:งก�ชื่%นิ

ค์ณิ�ตศาสตร�• stdio.h ใชื่�ส$าหร%บการประกาศฟั:งก�ชื่%นิส$าหร%บ

ร%บและแสดงผลข�อมู�ลมูาตรฐานิ• stdlib.h ใชื่�ส$าหร%บการประกาศฟั:งก�ชื่%นิส$าหร%บ

จ%ดการหนิ3วยค์วามูจ$า ค์วบค์2มูกระบวนิการที$างานิ และการแปลงค์3าต3าง ๆ

• string.h ใชื่�ส$าหร%บการประกาศใชื่�ฟั:งก�ชื่%นิส$าหร%บข�อมู�ลชื่นิ�ดข�อค์วามู

ช้'�อ (Identifiers)

• กฎการต%+งชื่��อ– ประกอบด�วยอ%กษร ต%วเลข และเค์ร��องหมูาย

underscore ( _ )– ต%วแรกต�องเป8นิต%วอ%กษร– underscore ต�องอย�3ระหว3างต%วอ%กษร หร�อ

ต%วเลข– ค์วามูยาว 1-32 ต%วอ%กษร (ในิเทีอร�โบซี�)– ห�ามูมู�เค์ร��องหมูายอ��นิยกเว�นิ $– Case sensitive ชื่��อที��เข�ยนิด�วยต%วอ%กษรต%วเล<ก

และต%วใหญ3 ถ�อว3าเป8นิชื่��อค์นิละต%วก%นิ– ห�างต%+งชื่��อซี$+าก%บค์$าสงวนิ (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

defaultgoto sizeof volatile

do if static while

ต้�วแปริ่ (Variable)

• ต%วอย3างช้'�อต้�วแปริ่ท��ถู+ก ช้'�อต้�วแปริ่ท��

ผิ�ดcount 1count

test123 hi !

High_balance high…balance

ช้น�ดขอม+ล์ (Data Type)

• ภาษาซี�จะมู�ชื่นิ�ดของข�อมู�ล 5 ชื่นิ�ด ด%งนิ�+–ข�อมู�ลชื่นิ�ดจ$านิวนิเต<มู (Integer Type) เชื่3นิ

17, 500, -80, +755–ข�อมู�ลชื่นิ�ดทีศนิ�ยมู (Floating Point Type)

เชื่3นิ 15.00, -85.23, .1E05, 15.55E-50

–ข�อมู�ลชื่นิ�ดทีศนิ�ยมูละเอ�ยดสองเที3า (Double Precision Floating Point)

–ข�อมู�ลชื่นิ�ดต%วอ%กษร (Character Type)–ข�อมู�ลชื่นิ�ดไมู3มู�ค์3า (Valueless Type)

ขอม+ล์ช้น�ดจ&านวนเต้-ม

ช้น�ดขอม+ล์จ&านวนบ�ต้ท��

ใช้ช้$วงของขอม+ล์

การิ่ก&าหนดช้น�ดขอม+ล์

เลขจ$านิวนิเต<มู (integer)

16 -32768 ถ*ง 32767

int

เลขจ$านิวนิเต<มูไมู3ค์�ดเค์ร��องหมูาย

(unsigned integer)

16 0 ถ*ง 65535 unsigned int

เลขจ$านิวนิเต<มูค์�ดเค์ร��องหมูาย

(signed integer)

16 -32768 ถ*ง 32768

signed int

เลขจ$านิวนิเต<มูส%+นิ (short integer)

16 -32768 ถ*ง 32768

short int

เลขจ$านิวนิเต<มูส%+นิไมู3ค์�ดเค์ร��องหมูาย

(unsigned short integer)

16 0 ถ*ง 65535 unsigned short int

เลขจ$านิวนิเต<มูส%+นิค์�ดเค์ร��องหมูาย

(signed short integer)

16 -32768 ถ*ง 32768

signed short int

เลขจ$านิวนิเต<มูยาว(long integer)

32 -2147483648 ถ*ง

2147483648

long int

ขอม+ล์ช้น�ดจ&านวนเต้-ม

ช้น�ดขอม+ล์จ&านวนบ�ต้ท��ใช้

ช้$วงของขอม+ล์การิ่ก&าหนดช้น�ดขอม+ล์

เลขจ$านิวนิเต<มูยาวค์�ดเค์ร��องหมูาย(signed long integer)

32 -214748364

8 ถ*ง214748364

8

signed long int

เลขจ$านิวนิเต<มูยาวไมู3ค์�ดเค์ร��องหมูาย(unsigned long integer)

32 0 ถ*ง 429496729

6

unsigned long int

ขอม+ล์ช้น�ดทศน�ยมแล์ะทศน�ยมล์ะเอ�ยดสำองเท$า

ช้น�ดขอม+ล์จ&านวนบ�ต้

ท��ใช้ช้$วงของ

ขอม+ล์

การิ่ก&าหนดช้น�ด

ขอม+ล์

เลขจ$านิวนิจร�ง (floating point)

32 1.x 1038 ถ*ง

3.4 x 1038

float

เลขจ$านิวนิจร�งละเอ�ยด 2

เที3า(double precision

floating point)

64 1.7 x 10-

308 ถ*ง1.7 x 10308

double

เลขจ$านิวนิจร�งยาวละเอ�ยด 2 เที3า

(long double precision floating point)

80 3.4 x 10-

4932 ถ*ง1.1 x 104932

long doubl

e

ขอม+ล์ช้น�ดต้�วอ�กษริ่

• ต%วอ%กษร A-Z, 0-9 และส%ญล%กษณิ�ต3าง ๆ ข�อมู�ล ชื่นิ�ดต%วอ%กษรจะใชื่�จ$านิวนิ 8 บ�ตในิการเก<บต%วอ%กษร 1 ต%ว ซี*�งในิภาษาซี�ไมู3มู�ข�อมู�ลชื่นิ�ดข�อค์วามู หร�อ สตร�ง (String) ข�อมู�ลชื่นิ�ดข�อค์วามูจะประกอบด�วยต%วอ%กษรหลาย ๆ ต%วเร�ยงต�ดก%นิเป8นิข�อค์วามู โดยใชื่�อาร�เรย� (Array) ในิการจ%ดเก<บ ซี*�งเราเร�ยกว3า Array of Character อาร�เรย�ที��ใชื่�เก<บข�อมู�ลชื่นิ�ดข�อค์วามู จะต�องมู�จ$านิวนิมูากกว3าค์วามูยาวของข�อค์วามู หร�อสตร�งอย3างนิ�อย 1 ต%วอ%กษร เพ��อใชื่�เก<บสตร�งศ�นิย� (Null String) เพ��อบอกให�ทีราบว3า ส�+นิส2ดค์วามูยาวของข�อค์วามู ซี*�งในิภาษาซี�จะใชื่� \0 แทีนิสตร�งศ�นิย�

เค์ริ่'�องหมายค์ณิ�ต้ศาสำต้ริ่�• เค์ร��องหมูายค์ณิ�ตศาสตร� (Arithmetic Operators)

เค์ร��องหมูาย ค์วามูหมูาย ต%วอย3าง+ การบวก A + B

- การลบ A - B

* การค์�ณิ A * B

/ การหาร A / B

% การหารเอาแต3เศษไว� 5%3 = 2

(Modulus)

-- การลดค์3าลงค์ร%+งละ 1 A-- มู�ค์3าเที3าก%บA = A-1

++ การเพ��มูค์3าข*+นิค์ร%+งละ 1 A++ มู�ค์3าเที3าก%บA = A+1

น�พจน�ค์ณิ�ต้ศาสำต้ริ่� (Expression)

• นิ�พจนิ�ค์ณิ�ตศาสตร�ประกอบด�วย ต%วแปร หร�อ ค์3าค์งที�� ที��เชื่��อมูก%นิด�วยเค์ร��องหมูายค์ณิ�ตศาสตร� การเข�ยนินิ�พจนิ�ค์ณิ�ตศาสตร�จะค์ล�ายก%บสมูการค์ณิ�ตศาสตร� เชื่3นิ

x = (n1 + n2) x10• เมู��อเข�ยนิเป8นินิ�พจนิ�ค์ณิ�ตศาสตร�จะได�ด%งนิ�+

x = (n1 + n2) * 10• นิ�พจนิ�ที��อย�3ชื่% +นิในิส2ดจะถ�กประมูวลผลก3อนิ

เค์ร��องหมูายค์ณิ�ตศาสตร�ที��มู�ล$าด%บเด�ยวก%นิจะถ�กประมูวลผลจากซี�ายไปขวา

ล์&าด�บการิ่ปริ่ะมวล์ผิล์เค์ริ่'�องหมายค์ณิ�ต้ศาสำต้ริ่�

เค์ริ่'�องหมายทางค์ณิ�ต้ศาสำต้ริ่�

ล์&าด�บการิ่ปริ่ะมวล์ผิล์

++, -- 1

- (เค์ร��องหมูายลบหนิ�าต%วเลข)

2

* / % 3

+ - 4

ต้�วอย$าง เชื่3นิ• 2+8*2 = 18 นิ$า 8 ค์�ณิ 2 ได� 16 แล�วบวก

ด�วย 2• (2+8)*2 = 20 นิ$า 8 บวก 2 ได� 10 แล�วค์�ณิ

ด�วย 2• 4/2*3 = 6นิ$า 4 หารด�วย 2 ได� 2 แล�วค์�ณิ

ด�วย 3• ++ n หมูายถ*ง เพ��มูค์3า n อ�ก 1• -- n หมูายถ*ง ลดค์3า n ลง 1• y = x+1 หมูายถ*ง การเพ��มูค์3า y อ�ก 1 หร�อมู�ค์3า

เที3าก%บ y = x++ หร�อ ++x

• y = x-1 หมูายถ*ง การลดค์3า y ลง 1 หร�อมู�ค์3าเที3าก%บ y = x-- หร�อ --x

ต%วอย3างโปรแกรมู

#include <stdio.h>#include <conio.h>void main(void) { // BeforePlus

int n1 = 2,n2 = 3;float s;clrscr();printf("n1 = %d n2 = %d\n",n1,n2);s = n1*n2++;printf("s = %.2f\n", s);printf("n1 = %d n2 = %d",n1,n2);getch();

}

จะได�ผลล%พธ์� ค์�อ

n1 = 2 n2 = 3s = 6.00n1 = 2 n2 = 4

จากโปรแกรมู ก$าหนิดค์3าเร��มูต�นิให� n1 เที3าก%บ 2 และ n2 = 3 เมู��อด$าเนิ�นิการตามูนิ�พจนิ�s = n1*n2++;

จะด$าเนิ�นิการนิ$า 2 ค์�ณิก%บ 3 แล�วจ*งเพ��มูค์3าของ n2 อ�ก 1 ซี*�งมู�ผลให�ต%วแปร s มู�ค์3าเป8นิ 6.00 และเมู��อประมูวลผลตามูนิ�พจนิ�ข�างต�นิแล�ว ค์3าของต%วแปร n2 จะเพ��มูเป8นิ 4

เค์ริ่'�องหมายเปริ่�ยบเท�ยบ (Relational Operators) – เป8นิเค์ร��องหมูายที��ใชื่�ในิการเปร�ยบเที�ยบและต%ดส�นิ

ใจ ผลของการเปร�ยบเที�ยบจะเป8นิไปได� 2 กรณิ� ค์�อ จร�ง (1) และเที<จ (0)เค์ริ่'�องหมาย ค์วามหมายต้�วอย$าง

> มูากกว3า A > B

>= มูากกว3าหร�อเที3าก%บ A >= B

< นิ�อยกว3า A < B

<= นิ�อยกว3าหร�อเที3าก%บ A <= B

== เที3าก%บ A == B

!= ไมู3เที3าก%บ A != B

เค์ร��องหมูายตรรก (Logical Operators)

– เป8นิเค์ร��องหมูายที��ใชื่�ในิการเปร�ยบเที�ยบและต%ดส�นิใจ โดยเอาเง��อนิไขต%+งแต3 2 เง��อนิไขมูาเปร�ยบเที�ยบก%นิ ผลที��เป8นิไปได�มู� 2 กรณิ� ค์�อ จร�ง (1) และ เที<จ (0)

– && (AND)P Q P && Q0 0 00 1 01 0 01 1 1

เค์ร��องหมูายด$าเนิ�นิการ• เค์ร��องหมูายตรรก (ต3อ)

– || (OR)

P Q P || Q

0 0 00 1 11 0 11 1 1

เค์ร��องหมูายด$าเนิ�นิการ• เค์ร��องหมูายตรรก (ต3อ)

– ! (NOT)

P !P0 11 0

ก&าหนดต้�วแปริ่ (Declaration of Variable) • ร�ปแบบการประกาศชื่นิ�ดต%วแปร

– variable-list หมูายถ*งชื่��อต%วแปรที��ต�องการประกาศ ถ�ามู� มูากกว3า 1 ต%ว แยกก%นิด�วยเค์ร��องหมูายค์อมูมู3า ( , )

– type หมูายถ*งชื่นิ�ดของต%วแปร– value หมูายถ*งค์3าเร��มูต�นิที��ต�องการก$าหนิด

ให�ก%บต%วแปร

type variable-list [= value] ;

ชื่นิ�ดของต%วแปร (Type of Variable)

• ต%วอย3างint a;

short int lower;

float man, ratio;

double point;

char ch, c, name;

ต%วอย3าง• int x; หมูายถ*ง การก$าหนิดต%วแปร

ชื่��อ x เป8นิชื่นิ�ดข�อมู�ลเลขจ$านิวนิเต<มู• int a,b; หมูายถ*ง ก$าหนิดต%วแปรชื่��อ a และ

b เป8นิชื่นิ�ดข�อมู�ลเลขจ$านิวนิเต<มู• float area; หมูายถ*ง ก$าหนิดต%วแปรชื่��อ

area เป8นิชื่นิ�ดข�อมู�ลเลขจ$านิวนิจร�ง• char ch; หมูายถ*ง การก$าหนิดต%วแปรชื่��อ

ch เป8นิชื่นิ�ดข�อมู�ลต%วอ%กษร• char name[30]; หมูายถ*ง การก$าหนิด

ต%วแปรชื่��อ name เป8นิข�อมู�ลชื่นิ�ดข�อค์วามูที��เก<บต%วอ%กษรได� 29 ต%วอ%กษร

ต%วแปรชื่2ด (Array Variable)

• เป8นิการประกาศต%วแปรหลายๆ ต%วภายใต�ชื่��อเด�ยวก%นิ และใชื่�ต%วเลข ก$าก%บเพ��อบอกต$าแหนิ3งของต%วแปรแต3ละต%ว (Subscript หร�อ index)–ต%วแปรชื่2ดชื่นิ�ด 1 มู�ต� (One Dimension)

• ต%วแปรชื่2ดที��มู�ต%วเลขแสดงต$าแหนิ3งเพ�ยงต%วเด�ยว• ร�ปแบบ

• ต%วอย3าง char name[80];

char test[4] = {‘a’, ‘b’, ‘c’, ‘d’};

type array-name[n] [= {value}];

ต%วแปรชื่2ด (Array Variable)

–ต%วแปรชื่2ด 2 มู�ต� (Two-Dimension)

• ต%วแปรที��เก<บข�อมู�ลเป8นิตาราง ซี*�งมู�ล%กษณิะข�อมู�ลเป8นิแถว และค์อล%มูนิ� จะมู�ต%วเลขแสดงต$าแหนิ3ง 2 ต%ว

• ร�ปแบบ

• ต%วอย3าง int twodim[3][4];

int twodim2[2][2] = {1, 2, 3, 4};

type array-name[n][m] [= {value}];

แบบฝึ3กห�ดทายบท

1 .จงหาผลล%พธ์�ของนิ�พจนิ�ต3อไปนิ�+ เมู��อก$าหนิดให� n1=5 และ n2=10

1.1 x = (n1 + n2) / 31.2 x = n1 + n2 / 31.3 x=n2%n11.4 x=n1--1.5 x=n2++

แบบฝึ3กห�ดทายบท

2. จงหาค์3าของนิ�พจนิ�ต3อไปนิ�+ ถ�าก$าหนิดให� a = 2, b = 3, c = 4, d = 5, e = 6 และ f = 8

2.1 a + e / f -- * c2.2 (f - e) * (c / a)2.3 a * d / a + e / b2.4 a * (d / (a + e)) / b

แบบฝึ3กห�ดทายบท

3. จงหาผลล%พธ์�ของการเปร�ยบเที�ยบต3อไปนิ�+ เมู��อก$าหนิดให� a=5 , b=3 และ c=10

3.1 a>b3.2 a>=b && a>c3.3 a>=b && b<=c3.4 c>=a || c<b3.5 !a>b

แบบฝึ3กห�ดทายบท

4. ให�ก$าหนิดชื่นิ�ดต%วแปร และชื่��อต%วแปร ตามูเง��อนิไขต3อไปนิ�+

4.1 ก$าหนิดให�ต%วแปร x เป8นิชื่นิ�ดข�อมู�ลเลขจ$านิวนิเต<มูยาว4.2 ก$าหนิดให�ต%วแปร x และ y เป8นิชื่นิ�ดข�อมู�ลเลขจ$านิวนิ

เต<มู และมู�ค์3าเร��มูต�นิเป8นิ 100 และ 200 ตามูล$าด%บ

4.3 ก$าหนิดให�ต%วแปร check เป8นิชื่นิ�ดข�อมู�ลต%วอ%กษร โดยก$าหนิดค์3าเร��มูต�นิเป8นิ ‘Y’

4.4 ก$าหนิดให�ต%วแปร book เป8นิชื่นิ�ดข�อมู�ลข�อค์วามู โดยก$าหนิดค์3าเร��มูต�นิเป8นิ “Thailand”

4.5 ก$าหนิดให�ต%วแปร n เป8นิชื่นิ�ดข�อมู�ลค์3าค์งที��เลขจ$านิวนิเต<มู และมู�ค์3าเร��มูต�นิเป8นิ 10

แบบฝึ3กห�ดทายบท

5. จงเข�ยนินิ�พจนิ�ต3อไปนิ�+ให�เป8นินิ�พจนิ�ภาษา C

5.1 a + b c + d

5.2 2xy + 3y2.5.3 z2 – 5xy + y25.4 1 ab

x + y a – b5.5 (p-e) (1-q)

แบบฝึ3กห�ดทายบท

6. จงเข�ยนินิ�พจนิ�ตามูค์$าส%�งต3อไปนิ�+6.1 ให�เพ��มูค์3า x ข*+นิอ�ก 16.2 ให�ลดค์3าของ a ลงอ�ก 56.3 หาค์3าผลค์�ณิของ p ก%บ q แล�วนิ$าค์3าผลค์�ณินิ%+นิมูาลบด�วยค์3าของ r + 1