+ All Categories
Home > Documents > บทที่ 2

บทที่ 2

Date post: 08-Feb-2016
Category:
Upload: derora
View: 35 times
Download: 0 times
Share this document with a friend
Description:
บทที่ 2. เริ่มต้นใช้งานภาษาซี. Outline. องค์ประกอบของภาษาซี ชื่อ ชนิดข้อมูล เครื่องหมายคณิตศาสตร์ นิพจน์คณิตศาสตร์ เครื่องหมายเปรียบเทียบ กำหนดตัวแปร. ภาษาซี. - PowerPoint PPT Presentation
Popular Tags:
35
บบบบบ 2 บบบบบบบบบบบบบบ บบบบบบ
Transcript
Page 1: บทที่  2

บทท่ี 2

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

Page 2: บทที่  2

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

Page 3: บทที่  2

ภาษาซี

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

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

Page 4: บทที่  2

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

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

}

Header fileFunction’s name

Declaration

Program

Page 5: บทที่  2

ภาษา 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

Page 6: บทที่  2

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

ตัวอักษร• conio.h ใชส้ำาหรบัการประกาศฟงัก์ชนัเก่ียวกับ

การแสดงผล• math.h ใชส้ำาหรบัการประกาศฟงัก์ชนั

คณิตศาสตร์• stdio.h ใชส้ำาหรบัการประกาศฟงัก์ชนัสำาหรบั

รบัและแสดงผลขอ้มูลมาตรฐาน• stdlib.h ใชส้ำาหรบัการประกาศฟงัก์ชนัสำาหรบั

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

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

Page 7: บทที่  2

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

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

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

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

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

Page 8: บทที่  2

คำาสงวนในภาษา 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

Page 9: บทที่  2

ตัวแปร (Variable)

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

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

Page 10: บทที่  2

ชนิดขอ้มูล (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)

Page 11: บทที่  2

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

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

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

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

เลขจำานวนเต็ม (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

Page 12: บทที่  2

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

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

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

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

32 -214748364

8 ถึง214748364

8

signed long int

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

32 0 ถึง 429496729

6

unsigned long int

Page 13: บทที่  2

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

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

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

ขอ้มูล

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

ขอ้มูล

เลขจำานวนจรงิ (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

Page 14: บทที่  2

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

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

Page 15: บทที่  2

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

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

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

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

A = A+1

Page 16: บทที่  2

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

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

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

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

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

Page 17: บทที่  2

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

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

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

++, -- 1

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

2

* / % 3

+ - 4

Page 18: บทที่  2

ตัวอยา่ง เชน่• 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

Page 19: บทที่  2

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

#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();

}

Page 20: บทที่  2

จะได้ผลลัพธ ์คือ

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

Page 21: บทที่  2

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

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

> มากกวา่ A > B

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

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

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

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

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

Page 22: บทที่  2

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

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

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

Page 23: บทที่  2

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

– || (OR)

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

Page 24: บทที่  2

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

– ! (NOT)

P !P0 11 0

Page 25: บทที่  2

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

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

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

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

type variable-list [= value] ;

Page 26: บทที่  2

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

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

Page 27: บทที่  2

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

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

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

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

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

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

Page 28: บทที่  2

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

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

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

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

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

Page 29: บทที่  2

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

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

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

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

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

Page 30: บทที่  2

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

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++

Page 31: บทที่  2

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

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

Page 32: บทที่  2

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

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

Page 33: บทที่  2

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

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

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

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

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

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

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

Page 34: บทที่  2

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

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)

Page 35: บทที่  2

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

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


Recommended