บทที่ 2
DESCRIPTION
บทที่ 2. เริ่มต้นใช้งานภาษาซี. Outline. องค์ประกอบของภาษาซี ชื่อ ชนิดข้อมูล เครื่องหมายคณิตศาสตร์ นิพจน์คณิตศาสตร์ เครื่องหมายเปรียบเทียบ กำหนดตัวแปร. ภาษาซี. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/1.jpg)
บทท่ี 2
เริม่ต้นใชง้านภาษาซี
![Page 2: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/2.jpg)
Outline– องค์ประกอบของภาษาซี– ชื่อ– ชนิดขอ้มูล– เครื่องหมายคณิตศาสตร์– นิพจน์คณิตศาสตร์– เครื่องหมายเปรยีบเทียบ– กำาหนดตัวแปร
![Page 3: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/3.jpg)
ภาษาซี
• ภาษาซไีด้พฒันาขึ้นในปี ค.ศ.1972 โดย เดนิส รชิชี ่(Dennis Ritchie) นักคณิตศาสตร์ประจำาหอ้งปฏิบติัการเบลล์ (Bell Laboratories) มลรฐันิวเจอรซ์ ี(New Jersey) ประเทศสหรฐัอเมรกิา
• ภาษาซ ีรวบรวมจุดเด่นของภาษาระดับสงูผนวกเขา้กับภาษาระดับตำ่า โดยใชต้ัวแปรภาษาชนิด Compiler จงึมคีวามสามารถในการใช้งานสงูมาก โปรแกรมมคีวามกะทัดรดั และ ท่ีสำาคัญ มกีารนำาภาษาซไีปเขยีนโปรแกรมประยุกต์ต่าง ๆ ขึ้นมาใชง้านอีกเป็นจำานวนมาก
![Page 4: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/4.jpg)
องค์ประกอบของภาษาซี#include <stdio.h>main(){
int a;a = 30;printf(“a = %d”, a)
}
Header fileFunction’s name
Declaration
Program
![Page 5: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/5.jpg)
ภาษา 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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/6.jpg)
สำาหรบัเฮดเดอรไ์ฟล์ท่ีใชง้านประจำา • ctype.h ใชส้ำาหรบัการประกาศฟงัก์ชนัเก่ียวกับ
ตัวอักษร• conio.h ใชส้ำาหรบัการประกาศฟงัก์ชนัเก่ียวกับ
การแสดงผล• math.h ใชส้ำาหรบัการประกาศฟงัก์ชนั
คณิตศาสตร์• stdio.h ใชส้ำาหรบัการประกาศฟงัก์ชนัสำาหรบั
รบัและแสดงผลขอ้มูลมาตรฐาน• stdlib.h ใชส้ำาหรบัการประกาศฟงัก์ชนัสำาหรบั
จดัการหน่วยความจำา ควบคมุกระบวนการทำางาน และการแปลงค่าต่าง ๆ
• string.h ใชส้ำาหรบัการประกาศใชฟ้งัก์ชนัสำาหรบัขอ้มูลชนิดขอ้ความ
![Page 7: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/7.jpg)
ชื่อ (Identifiers)• กฎการตัง้ชื่อ
– ประกอบด้วยอักษร ตัวเลข และเครื่องหมาย underscore ( _ )
– ตัวแรกต้องเป็นตัวอักษร– underscore ต้องอยูร่ะหวา่งตัวอักษร หรอื
ตัวเลข– ความยาว 1-32 ตัวอักษร (ในเทอรโ์บซ)ี– หา้มมเีครื่องหมายอ่ืนยกเวน้ $– Case sensitive ชื่อท่ีเขยีนด้วยตัวอักษรตัวเล็ก
และตัวใหญ่ ถือวา่เป็นชื่อคนละตัวกัน– หา้งตัง้ชื่อซำ้ากับคำาสงวน (Reserve words)
![Page 8: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/8.jpg)
คำาสงวนในภาษา 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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/9.jpg)
ตัวแปร (Variable)
• ตัวอยา่งชื่อตัวแปรท่ีถกู ชื่อตัวแปรท่ี
ผิดcount 1counttest123 hi !High_balance high…balance
![Page 10: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/10.jpg)
ชนิดขอ้มูล (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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/11.jpg)
ขอ้มูลชนิดจำานวนเต็ม
ชนิดขอ้มูลจำานวนบติท่ี
ใช้ชว่งของขอ้มูล
การกำาหนดชนิดขอ้มูล
เลขจำานวนเต็ม (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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/12.jpg)
ขอ้มูลชนิดจำานวนเต็ม
ชนิดขอ้มูลจำานวนบติท่ีใช้
ชว่งของขอ้มูลการกำาหนดชนิดขอ้มูล
เลขจำานวนเต็มยาวคิดเครื่องหมาย(signed long integer)
32 -214748364
8 ถึง214748364
8
signed long int
เลขจำานวนเต็มยาวไมคิ่ดเครื่องหมาย(unsigned long integer)
32 0 ถึง 429496729
6
unsigned long int
![Page 13: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/13.jpg)
ขอ้มูลชนิดทศนิยมและทศนิยมละเอียดสองเท่า
ชนิดขอ้มูลจำานวนบติ
ท่ีใช้ชว่งของ
ขอ้มูล
การกำาหนดชนิด
ขอ้มูล
เลขจำานวนจรงิ (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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/14.jpg)
ขอ้มูลชนิดตัวอักษร
• ตัวอักษร A-Z, 0-9 และสญัลักษณ์ต่าง ๆ ขอ้มูล ชนิดตัวอักษรจะใชจ้ำานวน 8 บติในการเก็บตัวอักษร 1 ตัว ซึ่งในภาษาซไีมม่ขีอ้มูลชนิดขอ้ความ หรอื สตรงิ (String) ขอ้มูลชนิดขอ้ความจะประกอบด้วยตัวอักษรหลาย ๆ ตัวเรยีงติดกันเป็นขอ้ความ โดยใชอ้ารเ์รย ์(Array) ในการจดัเก็บ ซึ่งเราเรยีกวา่ Array of Character อารเ์รยท์ี่ใชเ้ก็บขอ้มูลชนิดขอ้ความ จะต้องมจีำานวนมากกวา่ความยาวของขอ้ความ หรอืสตรงิอยา่งน้อย 1 ตัวอักษร เพื่อใชเ้ก็บสตรงิศูนย ์(Null String) เพื่อบอกใหท้ราบวา่ สิน้สดุความยาวของขอ้ความ ซึ่งในภาษาซจีะใช ้\0 แทนสตรงิศูนย์
![Page 15: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/15.jpg)
เครื่องหมายคณิตศาสตร์• เครื่องหมายคณิตศาสตร ์(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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/16.jpg)
นิพจน์คณิตศาสตร ์(Expression)
• นิพจน์คณิตศาสตรป์ระกอบด้วย ตัวแปร หรอื ค่าคงท่ี ที่เชื่อมกันด้วยเครื่องหมายคณิตศาสตร ์การเขยีนนิพจน์คณิตศาสตรจ์ะคล้ายกับสมการคณิตศาสตร ์ เชน่
x = (n1 + n2) x10• เมื่อเขยีนเป็นนิพจน์คณิตศาสตรจ์ะได้ดังนี้
x = (n1 + n2) * 10• นิพจน์ที่อยูช่ัน้ในสดุจะถกูประมวลผลก่อน
เครื่องหมายคณิตศาสตรท่ี์มลีำาดับเดียวกันจะถกูประมวลผลจากซา้ยไปขวา
![Page 17: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/17.jpg)
ลำาดับการประมวลผลเครื่องหมายคณิตศาสตร ์
เครื่องหมายทางคณิตศาสตร์
ลำาดับการประมวลผล
++, -- 1
- (เครื่องหมายลบหน้าตัวเลข)
2
* / % 3
+ - 4
![Page 18: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/18.jpg)
ตัวอยา่ง เชน่• 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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/19.jpg)
ตัวอยา่งโปรแกรม
#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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/20.jpg)
จะได้ผลลัพธ ์คือ
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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/21.jpg)
เครื่องหมายเปรยีบเทียบ (Relational Operators) – เป็นเครื่องหมายท่ีใชใ้นการเปรยีบเทียบและตัดสนิ
ใจ ผลของการเปรยีบเทียบจะเป็นไปได้ 2 กรณี คือ จรงิ (1) และเท็จ (0)เครื่องหมาย ความหมายตัวอยา่ง
> มากกวา่ A > B
>= มากกวา่หรอืเท่ากับ A >= B
< น้อยกวา่ A < B
<= น้อยกวา่หรอืเท่ากับ A <= B
== เท่ากับ A == B
!= ไมเ่ท่ากับ A != B
![Page 22: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/22.jpg)
เครื่องหมายตรรก (Logical Operators)– เป็นเครื่องหมายที่ใชใ้นการเปรยีบเทียบและตัดสนิ
ใจ โดยเอาเง่ือนไขตัง้แต่ 2 เง่ือนไขมาเปรยีบเทียบกัน ผลท่ีเป็นไปได้ม ี2 กรณี คือ จรงิ (1) และ เท็จ (0)
– && (AND)P Q P && Q0 0 00 1 01 0 01 1 1
![Page 23: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/23.jpg)
เครื่องหมายดำาเนินการ• เครื่องหมายตรรก (ต่อ)
– || (OR)
P Q P || Q0 0 00 1 11 0 11 1 1
![Page 24: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/24.jpg)
เครื่องหมายดำาเนินการ• เครื่องหมายตรรก (ต่อ)
– ! (NOT)
P !P0 11 0
![Page 25: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/25.jpg)
กำาหนดตัวแปร (Declaration of Variable) • รูปแบบการประกาศชนิดตัวแปร
– variable-list หมายถึงชื่อตัวแปรท่ีต้องการประกาศ ถ้ามี มากกวา่ 1 ตัว แยกกันด้วยเครื่องหมายคอมมา่ ( , )
– type หมายถึงชนิดของตัวแปร– value หมายถึงค่าเริม่ต้นท่ีต้องการกำาหนด
ใหกั้บตัวแปร
type variable-list [= value] ;
![Page 26: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/26.jpg)
ชนิดของตัวแปร (Type of Variable)
• ตัวอยา่งint a;short int lower;float man, ratio;double point;char ch, c, name;
![Page 27: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/27.jpg)
ตัวอยา่ง• int x; หมายถึง การกำาหนดตัวแปร
ชื่อ x เป็นชนิดขอ้มูลเลขจำานวนเต็ม• int a,b; หมายถึง กำาหนดตัวแปรชื่อ a และ
b เป็นชนิดขอ้มูลเลขจำานวนเต็ม• float area; หมายถึง กำาหนดตัวแปรชื่อ
area เป็นชนิดขอ้มูลเลขจำานวนจรงิ• char ch; หมายถึง การกำาหนดตัวแปรชื่อ
ch เป็นชนิดขอ้มูลตัวอักษร• char name[30]; หมายถึง การกำาหนด
ตัวแปรชื่อ name เป็นขอ้มูลชนิดขอ้ความที่เก็บตัวอักษรได้ 29 ตัวอักษร
![Page 28: บทที่ 2](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/28.jpg)
ตัวแปรชุด (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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/29.jpg)
ตัวแปรชุด (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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/30.jpg)
แบบฝึกหัดท้ายบท
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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/31.jpg)
แบบฝึกหัดท้ายบท
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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/32.jpg)
แบบฝึกหัดท้ายบท
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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/33.jpg)
แบบฝึกหัดท้ายบท
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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/34.jpg)
แบบฝึกหัดท้ายบท
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](https://reader036.vdocuments.us/reader036/viewer/2022062305/56815b47550346895dc9261a/html5/thumbnails/35.jpg)
แบบฝึกหัดท้ายบท
6. จงเขยีนนิพจน์ตามคำาสัง่ต่อไปนี้6.1 ใหเ้พิม่ค่า x ขึ้นอีก 16.2 ใหล้ดค่าของ a ลงอีก 56.3 หาค่าผลคณูของ p กับ q แล้วนำาค่าผลคณูนัน้มาลบด้วยค่าของ r + 1