Upload
amber-petty
View
32
Download
1
Embed Size (px)
DESCRIPTION
Data Type and Display. 030523300- Computer Programming Asst. Prof. Dr. Choopan Rattanapoka. โครงสร้างของภาษาซี. ส่วนเรียกใช้ฟังก์ชัน (Preprocessor Directives). เป็นส่วนที่เรียกใช้ไฟล์ที่มีชื่อขยาย .h ซึ่งเป็นไฟล์เก็บฟังก์ชัน (คำสั่งของภาษาซีเป็นฟังก์ชันทั้งหมด) - PowerPoint PPT Presentation
Citation preview
ส่�วนเรี�ยกใช้�ฟั�งก�ช้�น (Preprocessor Directives)
เป็�นส�วนที่ �เร ยกใช้�ไฟล์�ที่ �มี ช้��อขยาย .h ซี �งเป็�นไฟล์�เก!บ ฟ#งก�ช้$น (ค%าส$�งของภาษาซี เป็�นฟ#งก�ช้$นที่$&งหมีด)
โดยจั$ดเป็�นกล์*�มีๆ ที่ �เหมี�อนก$น เช้�น stdio.h เป็�นไฟล์� เก!บฟ#งก�ช้$นพื้�&นฐานที่$�วไป็
การเร ยกใช้�งานไฟล์� header จัะเร ยกผ่�าน#include ซี �งเป็�น preprocessor directives)
ส่�วนของตั�วโปรีแกรีม (Main Function) ภาษาซี จัะเร0�มีต้�นการที่%างาน ที่ � function ที่ �ช้��อ main ว0ธี การเข ยน function main สามีารถเข ยนได�หล์ายว0ธี
void main(void) void main(int argc, char **argv); int main() int main(void) int main(int argc, char **argv);
void หร�อ int ที่ �อย4�หน�า main เป็�นต้$วก%าหนดการค�นค�าหล์$งจัาก โป็รแกรมีที่%างานจับ ถ�าเป็�น int โป็รแกรมีต้�องมี การค�นค�าด�วยค%าส$�ง
return หร�อ exit เช้�น return 0; หร�อ exit(1); void หร�อ int argc, char **argv ในวงเล์!บหล์$ง main เป็�นต้$ว
ก%าหนดว�าโป็รแกรมีมี parameters หร�อไมี�
ไมี�แนะน%าแล์ะบาง compiler จัะไมี�ให�ผ่�าน
ส่�วนของตั�วโปรีแกรีม (Main Function) ในภาษาซี เมี��อต้$วแป็รมี * อย4�ข�างหน�า หมีายถ ง
pointer ซี �งสามีารถเข ยนเที่นได�ด�วย [ ] เพื้ราะฉะน$&น ต้$ว function main สามีารถเข ยนต้�อ
ไป็ได�อ กหล์ายแบบแต้�ให�ความีหมีายเด ยวก$น เช้�น int main(int argc, char **argv) int main(int argc, char *argv[]) int main(int argc, char argv[][])
ไวยากรีณ์�ของภาษาซี� ไวยากรณ์�ของภาษาซี ไมี�ความีซี$บซี�อนก%ากวมี แต้�ห�ามีเข ยนผ่0ดแมี�แต้�น0ดเด ยว ภาษาซี มี การเข ยนอย4�ในร4ป็แบบของบล์!อก (Block) ที่ �
“เร0�มีด�วยเคร��องหมีายป็8กกาเป็9ด {“ แล์ะจับด�วย ”เคร��องหมีาย ป็8กกาป็9ด }”
ที่*กค%าส$�งที่ �ไมี�ได�ต้ามีด�วยบล์!อกจั%าเป็�นต้�องมี “เคร��องหมีายเซีมี0โคล์อน ;” ป็9ดที่�ายเสมีอ ยกเว�นใน
ส�วนของ Preprocessor directive ควรจั%าไว�ว�าช้��อของฟ#งก�ช้$นที่$&งหมีดในภาษาซี จัะเป็�นต้$วเล์!กที่$&งหมีด
ปรีะเภทของข�อม!ลในภาษาซี� ป็ระเภที่พื้�&นฐานมี 7 ป็ระเภที่ ออกแบบเพื้0�มีเต้0มีไมี�ได�
จั%านวนเต้!มี : short, int, long จั%านวนจัร0ง : float, double, long double อ$กขระ : char
ป็ระเภที่ซี$บซี�อน ( กล์*�มีข�อมี4ล์ ) ออกแบบเองเพื้0�มีเต้0มีได� array structure union enumerate
จำ$านวนเตั%ม (1)
จั%านวนเต้!มีค�อจั%านวนเต้!มีบวก ล์บ หร�อค�าศู4นย� จั%านวนเต้!มีจัะไมี�มี จั*ดที่ศูน0ยมี เช้�น 1024, -50, 0 ในภาษาซี ป็ระเภที่ข�อมี4ล์ที่ �ใช้�ในการเก!บจั%านวนเต้!มีค�อ
int, short, แล์ะ long ข�อแต้กต้�างของป็ระเภที่ข�อมี4ล์ที่$&ง 3 ป็ระเภที่น &ค�อ
ขนาดของหน�วยความีจั%าที่ �ใช้�ในการจั$ดเก!บข�อมี4ล์ ขนาดของข�อมี4ล์ที่ �สามีารถเก!บได�
จำ$านวนเตั%ม (2)
short จัะใช้�เน�&อที่ �ใช้�การเก!บข�อมี4ล์ 2 ไบต้� long จัะใช้�เน�&อที่ �ใช้�การเก!บข�อมี4ล์ 4 ไบต้� int จัะข &นอย4�ก$บสถาป็#ต้ยกรรมีของซี พื้ ย4แล์ะระบบป็ฏิ0บ$ต้0การซี �งจัะมี ขนาด 2 ไบต้�ในสถาป็#ต้ยกรรมี 16-bits 4 ไบต้�ในสถาป็#ต้ยกรรมี 32-bits ช้น0ดข�อมี4ล์ป็ระเภที่ int เป็�นป็ระเภที่ของข�อมี4ล์ที่ �ซี พื้ ย4สามีารถที่%างานด�วยได�เร!วที่ �ส*ดเมี��อเที่ ยบก$บช้น0ดต้$วแป็รพื้�&น
ฐานป็ระเภที่อ��นๆ
จำ$านวนเตั%ม (3)
ข�อมี4ล์จั%านวนเต้!มีที่ �จั$ดเก!บในหน�วยความีจั%า จัะใช้�บ0ต้ แรกส*ดเป็�นต้$วเก!บเคร��องหมีายบวก แล์ะ ล์บ
ถ�าผ่4�พื้$ฒนาซีอฟต้�แวร�ต้�องการเก!บข�อมี4ล์ที่ �มี แต้� จั%านวนเต้!มีบวกเพื้ ยงอย�างเด ยว แต้�มี ค�ามีากกว�าช้น0ด
ข�อมี4ล์น$&นจัะเก!บได� ผ่4�พื้$ฒนาซีอฟต้�แวร�สามีารถเพื้0�มีค%า ว�า unsigned เข�าไป็หน�าป็ระเภที่ข�อมี4ล์ เพื้��อบ�งบอกว�า
ข�อมี4ล์ที่ �ต้�องการจัะจั$ดเก!บมี แต้�จั%านวนเต้!มีบวก ซี �งจัะ เป็�นการขยายเน�&อที่ �ในการเก!บข�อมี4ล์ข &นมีาอ ก 1 บ0ต้
เน��องจัากไมี�จั%าเป็�นต้�องใช้�บ0ต้แรกเพื้��อเก!บเคร��องหมีาย
จำ$านวนจำรี&ง (1)
จั%านวนจัร0งค�อจั%านวนบวก ล์บ หร�อค�าศู4นย� ซี �งสามีารถมี จั*ดที่ศูน0ยมีได� เช้�น 1024.05, -50.55, 0
ในภาษาซี ป็ระเภที่ข�อมี4ล์ที่ �ใช้�ในการเก!บจั%านวนจัร0งค�อfloat, double, แล์ะ long double
ข�อแต้กต้�างของป็ระเภที่ข�อมี4ล์ที่$&ง 3 ป็ระเภที่น &ค�อ ขนาดของหน�วยความีจั%าที่ �ใช้�ในการจั$ดเก!บข�อมี4ล์ซี �งจัะส�งผ่ล์ไป็ถ งขนาดของข�อมี4ล์ที่ �สามีารถเก!บได�
float, double แล์ะ long double จัะใช้�ขนาดของ หน�วยความีจั%าในการจั$ดเก!บข�อมี4ล์ 32, 64 แล์ะ 80 บ0ต้
ต้ามีล์%าด$บ
ตั�วอ�กขรีะ (1)
ถ�าต้�องการจั$ดเก!บข�อมี4ล์ในร4ป็แบบต้$วอ$กษร หร�ออ$กขระ ต้�างๆในภาษาซี ควรเล์�อกใช้�ช้น0ดข�อมี4ล์ป็ระเภที่ char
ช้น0ดข�อมี4ล์ป็ระเภที่น &จัะใช้�เน�&อที่ �ในหน�วยความีจั%า 8 bits เน��องด�วยหน�วยความีจั%าหล์$กแล์ะการเก!บข�อมี4ล์ของ
“คอมีพื้0วเต้อร�อย4�ในร4ป็บ0ต้ หร�อเล์ขฐานสองที่ �มี ค�า 0” แล์ะ“1” ด$งน$&นการเก!บต้$วอ$กษรในระบบคอมีพื้0วเต้อร�น$&นจั%าเป็�นต้�องมี รห$สที่ �ใช้�ในการแป็ล์งค�าต้$วอ$กขระเป็�นเล์ขฐานสองรห$ส
ที่ �ใช้�ในการจั$ดเก!บข�อมี4ล์ต้$วอ$กขระล์งในคอมีพื้0วเต้อร�น$&นใช้� รห$สแอสก & (ASCII : American Standard Code for
Information Interchange)
การีปรีะกาศตั�วแปรีในภาษาซี� (1)
ต้$วแป็รในภาษาซี ใช้�ในการเก!บข�อมี4ล์ช้$�วคราวระหว�างการที่%างานของ โป็รแกรมี
ต้$วแป็รที่*กต้$วจัะต้�องมี การป็ระกาศูช้��อแล์ะป็ระเภที่ของข�อมี4ล์ที่ �ต้�องการเก!บ แล์ะจั%าเป็�นต้�องป็ระกาศูก�อนที่ �จัะน%ามีาใช้�งานที่*กคร$&ง การน%าค�าในต้$วแป็ร
มีาใช้�งานจัะไมี�ที่%าให�ค�าน$&นหายไป็ แต้�สามีารถน%าข�อมี4ล์ใหมี�มีาเก!บที่$บได� หล์$งจัากการป็ระกาศูใช้�งานต้$วแป็รค�าที่ �เก!บในต้$วแป็รจัะเร ยกว�า ค�าขยะ ซี �งจัะเป็�นค�าที่ �อย4�ในหน�วยความีจั%าเก�าแล์ะจัะมี ค�าไมี�เหมี�อนก$นในแต้�ล์ะคร$&งที่ �
ส$�งโป็รแกรมีที่%างาน จั งควรมี การใส�ค�าที่ �ต้�องการให�ถ4กต้�องก�อนน%าต้$วแป็รน$&นไป็ใช้�งาน
การป็ระกาศูต้$วแป็รในภาษาซี จัะอย4�ในร4ป็แบบที่ �ต้ายต้$วค�อ ป็ระเภที่ของ ต้$วแป็ร ต้ามีด�วยช้��อของต้$วแป็ร แล์ะสามีารถก%าหนดค�าเร0�มีต้�นให�ก$บ
ต้$วแป็รได�ซี �งจัะไมี�ก%าหนดก!ได�
การีปรีะกาศตั�วแปรีในภาษาซี� (2)
การป็ระกาศูต้$วแป็รในภาษาซี จัะมี ร4ป็แบบด$งน & ปรีะเภทของข�อม!ล ช้()อตั�วแปรี [ = ค่�าเรี&)มตั�น ] ;
กฏการีตั�,งช้()อตั�วแปรี ช้��อต้$วแป็รจัะต้�องป็ระกอบด�วย ต้$วอ$กษร ต้$วเล์ข แล์ะ ต้$ว
อ$กขระ $ แล์ะ _ เที่�าน$&น ช้��อต้$วแป็รห�ามีข &นต้�นด�วยต้$วเล์ข ช้��อต้$วแป็รห�ามียาวเก0น 32 ต้$วอ$กษรในคอมีไพื้เล์อร�เก�าๆ
แต้�คอมีไพื้เล์อร�ใหมี�ๆ สามีารถรองร$บได�ในความียาวไมี�จั%าก$ด
ต้$วอ$กษรต้$วใหญ่�ไมี�เที่�าก$บต้$วอ$กษรต้$วเล์!ก ช้��อต้$วแป็รห�ามีซี%&าก$บค%าสงวนในภาษาซี ช้��อต้$วแป็รห�ามีซี%&าก$บช้��ออ��นๆในโป็รแกรมี เช้�น ช้��อฟ#งก�ช้$น
ค%าสงวนในภาษาซี
ตั�วอย�างการีตั�,งช้()อตั�วแปรีท�)ผิ&ด• 12monkey เน��องจัากข &นต้�นด�วยต้$วเล์ข• I..Love..U “เน��องจัากมี ต้$วขระ .” ที่ �ภาษาซี ไมี�ยอมีให�ใช้�ในการต้$&งช้��อต้$วแป็ร• ohOh! “เน��องจัากมี ต้$วขระ !” ที่ �ภาษาซี ไมี�ยอมีให�ใช้�ในการต้$&งช้��อต้$วแป็ร
การีแส่ดงผิลในภาษาซี� เมี��อต้�องการแสดงค�าของต้$วแป็รหร�อพื้0มีพื้�ข�อความี
ใดๆ ด�วยภาษาซี จัะต้�องใช้�ฟ#งก�ช้$น printf ซี �งจัะที่%าให�ข�อความีภายในเคร��องหมีายค%าพื้4ด (“……”)
แสดงผ่ล์บนจัอภาพื้ หล์$กการที่%างานของฟ#งก�ช้$น printf น$&นจัะเป็�นการด งข�อมี4ล์ที่ �เก!บในหน�วยความีจั%าหล์$กมีาแสดงบนจัอภาพื้
ต้$วอย�างการใช้�งานค%าส$�ง printf
printf(“Hello World”); แสดงข�อความี Hello World ออกที่างหน�าจัอ
printf(“Hello World\n”); แสดงข�อความี Hello World พื้ร�อมีที่$&งข &นบรรที่$ดใหมี�
Printf(“Hello\tWorld\n”); แสดงข�อความี Hello ช้�องว�างขนาด tab ต้ามีด�วยค%าว�า
World แล์ะข &นบรรที่$ดใหมี�
printf ก$บต้$วแป็ร ถ�าต้�องการแสดงข�อมี4ล์ที่ �เก!บในต้$วแป็รออกที่างหน�าจัอน$&น
ภาษาซี จัะใช้�ช้*ดอ$กขระพื้0เศูษที่ �เร ยกว�า Format Code
การแที่นค�าต้$วแป็รจัาก format code จัะแที่นค�าต้ามีล์%าด$บ ของต้$วแป็รที่ �ก%าหนดไว�ในส�วนของ
printf(“%d %d”, A , B);
ต้$วอย�างโป็รแกรมี 1
#include <stdio.h>#include <stdlib.h>
int main(int argc, char **argv){ int A = 5; float B = 10.05 ; printf(“%f %d”, B, A);}
ต้$วอย�างโป็รแกรมี 2
#include <stdio.h>#include <stdlib.h>int main(int argc, char **argv) { char X = ‘A’, Y = ‘B’; printf(“%c-ANT \n%c-Bird\n”, X, Y);}
การจั$ดหน�าจัอจั%านวนเต้!มีด�วย printf
ฟ#งก�ช้$น printf มี ความีสามีารถในการจั$ดต้%าแหน�งข�อความีในการแสดงผ่ล์ผ่�านจัอภาพื้ได� ต้$วเล์ขบวกต้ามีหล์$ง % เช้�น %10d หมีายถ งการเว�น
ช้�องว�างไว� 10 ช้�องแล์�วใส�ต้$วเล์ขจัากต้%าแหน�งขวาไป็ย$ง ต้%าแหน�งซี�าย
ต้$วเล์ขล์บต้ามีหล์$ง % เช้�น %-10d หมีายถ งการเว�นช้�อง ว�างไว� 10 ช้�องแล์�วใส�ต้$วเล์ขจัากต้%าแหน�งซี�ายไป็ย$ง
ต้%าแหน�งขวา
การจั$ดหน�าจัอจั%านวนจัร0งด�วย printf
จั*ดที่ศูน0ยมี ซี �งจัะใช้�ก$บ %f เช้�น %.2f หมีายถ งการ แสดงค�าของต้$วแป็รให�อย4�ร4ป็ของจั*ดที่ศูน0ยมี 2
ต้%าแหน�ง ซี �งสามีารถใช้�ควบค4�ไป็ก$บค�าบวกแล์ะล์บได�
ต้$วอย�างโป็รแกรมี 2
int main(int argc, char **argv) { int a; float b; a = 25; b = 15.281; printf("A = %d\n", a); printf("B = %f\n", b); printf("A = %8d\n", a); printf("B = %8.2f\n", b);}
ต้$วอ$กขระพื้0เศูษอ��นๆ ส%าหร$บ printf
เมี��อต้�องการให� printf แสดงต้$วขระพื้0เศูษอ��นเช้�น %% แสดงต้$วอ$กษร % \" แสดงต้$วอ$กษร (") \' แสดงต้$วอ$กษร (') \\ แสดงต้$วอ$กษร (\) \nnn แสดงต้$วอ$กษร ASCII ในเล์ขฐานแป็ด เช้�น
041 จัะแสดงผ่ล์เป็�นเคร��องหมีาย "!“ \0xnn เล์ขฐานส0บหก \a เส ยงบ >บ \n ข &นบรรที่$ดใหมี� \t รห$ส TAB