บทที่ 2

Post on 08-Feb-2016

35 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

Transcript

บทท่ี 2

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

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

ภาษาซี

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

• ภาษาซ ีรวบรวมจุดเด่นของภาษาระดับสงูผนวกเขา้กับภาษาระดับตำ่า โดยใชต้ัวแปรภาษาชนิด Compiler จงึมคีวามสามารถในการใช้งานสงูมาก โปรแกรมมคีวามกะทัดรดั และ ท่ีสำาคัญ มกีารนำาภาษาซไีปเขยีนโปรแกรมประยุกต์ต่าง ๆ ขึ้นมาใชง้านอีกเป็นจำานวนมาก

องค์ประกอบของภาษาซี#include <stdio.h>main(){

int a;a = 30;printf(“a = %d”, a)

}

Header fileFunction’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 ใชส้ำาหรบัการประกาศฟงัก์ชนัสำาหรบั

จดัการหน่วยความจำา ควบคมุกระบวนการทำางาน และการแปลงค่าต่าง ๆ

• string.h ใชส้ำาหรบัการประกาศใชฟ้งัก์ชนัสำาหรบัขอ้มูลชนิดขอ้ความ

ชื่อ (Identifiers)• กฎการตัง้ชื่อ

– ประกอบด้วยอักษร ตัวเลข และเครื่องหมาย underscore ( _ )

– ตัวแรกต้องเป็นตัวอักษร– underscore ต้องอยูร่ะหวา่งตัวอักษร หรอื

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

และตัวใหญ่ ถือวา่เป็นชื่อคนละตัวกัน– หา้งตัง้ชื่อซำ้ากับคำาสงวน (Reserve words)

คำาสงวนในภาษา Cauto double int structbreak else long switchcase enum register

typedefchar extern return union

const float short unsignedcontinue for signed voiddefaultgoto sizeof volatiledo if static while

ตัวแปร (Variable)

• ตัวอยา่งชื่อตัวแปรท่ีถกู ชื่อตัวแปรท่ี

ผิดcount 1counttest123 hi !High_balance high…balance

ชนิดขอ้มูล (Data Type) • ภาษาซจีะมชีนิดของขอ้มูล 5 ชนิด ดังนี้

–ขอ้มูลชนิดจำานวนเต็ม (Integer Type) เชน่ 17, 500, -80, +755

–ขอ้มูลชนิดทศนิยม (Floating Point Type) เชน่ 15.00, -85.23, .1E05, 15.55E-50

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

–ขอ้มูลชนิดตัวอักษร (Character Type)–ขอ้มูลชนิดไมม่ค่ีา (Valueless Type)

ขอ้มูลชนิดจำานวนเต็ม

ชนิดขอ้มูลจำานวนบติท่ี

ใช้ชว่งของขอ้มูล

การกำาหนดชนิดขอ้มูล

เลขจำานวนเต็ม (integer)

16 -32768 ถึง 32767

int

เลขจำานวนเต็มไมคิ่ดเครื่องหมาย

(unsigned integer)

16 0 ถึง 65535 unsigned int

เลขจำานวนเต็มคิดเครื่องหมาย

(signed integer)

16 -32768 ถึง 32768

signed int

เลขจำานวนเต็มสัน้ (short integer)

16 -32768 ถึง 32768

short int

เลขจำานวนเต็มสัน้ไมคิ่ดเครื่องหมาย

(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

เลขจำานวนเต็มยาวไมคิ่ดเครื่องหมาย(unsigned long integer)

32 0 ถึง 429496729

6

unsigned long int

ขอ้มูลชนิดทศนิยมและทศนิยมละเอียดสองเท่า

ชนิดขอ้มูลจำานวนบติ

ท่ีใช้ชว่งของ

ขอ้มูล

การกำาหนดชนิด

ขอ้มูล

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

32 1.x 1038 ถึง

3.4 x 1038

float

เลขจำานวนจรงิละเอียด 2 เท่า

(double precision floating point)

64 1.7 x 10-

308 ถึง1.7 x 10308

double

เลขจำานวนจรงิยาวละเอียด 2 เท่า

(long double precision floating point)

80 3.4 x 10-

4932 ถึง1.1 x 104932

long doubl

e

ขอ้มูลชนิดตัวอักษร

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

เครื่องหมายคณิตศาสตร์• เครื่องหมายคณิตศาสตร ์(Arithmetic Operators)

เครื่องหมาย ความหมาย ตัวอยา่ง+ การบวก A + B- การลบ A - B* การคณู A * B/ การหาร A / B% การหารเอาแต่เศษไว้ 5%3 = 2

(Modulus)-- การลดค่าลงครัง้ละ 1 A-- มค่ีาเท่ากับ

A = A-1++ การเพิม่ค่าขึ้นครัง้ละ 1 A++ มค่ีาเท่ากับ

A = A+1

นิพจน์คณิตศาสตร ์(Expression)

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

x = (n1 + n2) x10• เมื่อเขยีนเป็นนิพจน์คณิตศาสตรจ์ะได้ดังนี้

x = (n1 + n2) * 10• นิพจน์ที่อยูช่ัน้ในสดุจะถกูประมวลผลก่อน

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

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

เครื่องหมายทางคณิตศาสตร์

ลำาดับการประมวลผล

++, -- 1

- (เครื่องหมายลบหน้าตัวเลข)

2

* / % 3

+ - 4

ตัวอยา่ง เชน่• 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 หมายถึง เพิม่ค่า n อีก 1• -- n หมายถึง ลดค่า n ลง 1• y = x+1 หมายถึง การเพิม่ค่า y อีก 1 หรอืมค่ีา

เท่ากับ y = x++ หรอื ++x

• y = x-1 หมายถึง การลดค่า y ลง 1 หรอืมค่ีาเท่ากับ y = x-- หรอื --x

ตัวอยา่งโปรแกรม

#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

จากโปรแกรม กำาหนดค่าเริม่ต้นให ้n1 เท่ากับ 2 และ n2 = 3 เมื่อดำาเนินการตามนิพจน์s = n1*n2++;

จะดำาเนินการนำา 2 คณูกับ 3 แล้วจงึเพิม่ค่าของ n2 อีก 1 ซึ่งมผีลใหตั้วแปร s มค่ีาเป็น 6.00 และเมื่อประมวลผลตามนิพจน์ขา้งต้นแล้ว ค่าของตัวแปร n2 จะเพิม่เป็น 4

เครื่องหมายเปรยีบเทียบ (Relational Operators) – เป็นเครื่องหมายท่ีใชใ้นการเปรยีบเทียบและตัดสนิ

ใจ ผลของการเปรยีบเทียบจะเป็นไปได้ 2 กรณี คือ จรงิ (1) และเท็จ (0)เครื่องหมาย ความหมายตัวอยา่ง

> มากกวา่ A > B

>= มากกวา่หรอืเท่ากับ A >= B

< น้อยกวา่ A < B

<= น้อยกวา่หรอืเท่ากับ A <= B

== เท่ากับ A == B

!= ไมเ่ท่ากับ A != B

เครื่องหมายตรรก (Logical Operators)– เป็นเครื่องหมายที่ใชใ้นการเปรยีบเทียบและตัดสนิ

ใจ โดยเอาเง่ือนไขตัง้แต่ 2 เง่ือนไขมาเปรยีบเทียบกัน ผลท่ีเป็นไปได้ม ี2 กรณี คือ จรงิ (1) และ เท็จ (0)

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

เครื่องหมายดำาเนินการ• เครื่องหมายตรรก (ต่อ)

– || (OR)

P Q P || Q0 0 00 1 11 0 11 1 1

เครื่องหมายดำาเนินการ• เครื่องหมายตรรก (ต่อ)

– ! (NOT)

P !P0 11 0

กำาหนดตัวแปร (Declaration of Variable) • รูปแบบการประกาศชนิดตัวแปร

– variable-list หมายถึงชื่อตัวแปรท่ีต้องการประกาศ ถ้ามี มากกวา่ 1 ตัว แยกกันด้วยเครื่องหมายคอมมา่ ( , )

– type หมายถึงชนิดของตัวแปร– value หมายถึงค่าเริม่ต้นท่ีต้องการกำาหนด

ใหกั้บตัวแปร

type variable-list [= value] ;

ชนิดของตัวแปร (Type of Variable)

• ตัวอยา่งint a;short int lower;float man, ratio;double point;char ch, c, name;

ตัวอยา่ง• int x; หมายถึง การกำาหนดตัวแปร

ชื่อ x เป็นชนิดขอ้มูลเลขจำานวนเต็ม• int a,b; หมายถึง กำาหนดตัวแปรชื่อ a และ

b เป็นชนิดขอ้มูลเลขจำานวนเต็ม• float area; หมายถึง กำาหนดตัวแปรชื่อ

area เป็นชนิดขอ้มูลเลขจำานวนจรงิ• char ch; หมายถึง การกำาหนดตัวแปรชื่อ

ch เป็นชนิดขอ้มูลตัวอักษร• char name[30]; หมายถึง การกำาหนด

ตัวแปรชื่อ name เป็นขอ้มูลชนิดขอ้ความที่เก็บตัวอักษรได้ 29 ตัวอักษร

ตัวแปรชุด (Array Variable)• เป็นการประกาศตัวแปรหลายๆ ตัวภายใต้ชื่อเดียวกัน

และใชตั้วเลข กำากับเพื่อบอกตำาแหน่งของตัวแปรแต่ละตัว (Subscript หรอื index)–ตัวแปรชุดชนิด 1 มติิ (One Dimension)

• ตัวแปรชุดท่ีมตัีวเลขแสดงตำาแหน่งเพยีงตัวเดียว• รูปแบบ

• ตัวอยา่ง char name[80];char test[4] = {‘a’, ‘b’, ‘c’, ‘d’};

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

ตัวแปรชุด (Array Variable)

–ตัวแปรชุด 2 มติิ (Two-Dimension)• ตัวแปรท่ีเก็บขอ้มูลเป็นตาราง ซึ่งมลัีกษณะขอ้มูลเป็น

แถว และคอลัมน์ จะมตัีวเลขแสดงตำาแหน่ง 2 ตัว• รูปแบบ

• ตัวอยา่ง int twodim[3][4];int twodim2[2][2] = {1, 2, 3, 4};

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

แบบฝึกหัดท้ายบท

1 .จงหาผลลัพธข์องนิพจน์ต่อไปนี้ เมื่อกำาหนดให ้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++

แบบฝึกหัดท้ายบท

2. จงหาค่าของนิพจน์ต่อไปนี้ ถ้ากำาหนดให ้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. จงหาผลลัพธข์องการเปรยีบเทียบต่อไปนี้ เมื่อกำาหนดให ้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

แบบฝึกหัดท้ายบท

4. ใหก้ำาหนดชนิดตัวแปร และชื่อตัวแปร ตามเง่ือนไขต่อไปน้ี

4.1 กำาหนดใหตั้วแปร x เป็นชนิดขอ้มูลเลขจำานวนเต็มยาว4.2 กำาหนดใหตั้วแปร x และ y เป็นชนิดขอ้มูลเลขจำานวน

เต็ม และมค่ีาเริม่ต้นเป็น 100 และ 200 ตามลำาดับ

4.3 กำาหนดใหตั้วแปร check เป็นชนิดขอ้มูลตัวอักษร โดยกำาหนดค่าเริม่ต้นเป็น ‘Y’

4.4 กำาหนดใหตั้วแปร book เป็นชนิดขอ้มูลขอ้ความ โดยกำาหนดค่าเริม่ต้นเป็น “Thailand”

4.5 กำาหนดใหตั้วแปร n เป็นชนิดขอ้มูลค่าคงท่ีเลขจำานวนเต็ม และมค่ีาเริม่ต้นเป็น 10

แบบฝึกหัดท้ายบท

5. จงเขยีนนิพจน์ต่อไปนี้ใหเ้ป็นนิพจน์ภาษา C5.1 a + b

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

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

แบบฝึกหัดท้ายบท

6. จงเขยีนนิพจน์ตามคำาสัง่ต่อไปนี้6.1 ใหเ้พิม่ค่า x ขึ้นอีก 16.2 ใหล้ดค่าของ a ลงอีก 56.3 หาค่าผลคณูของ p กับ q แล้วนำาค่าผลคณูนัน้มาลบด้วยค่าของ r + 1

top related