30
DATA TYPE AND DISPLAY 030523300- Computer Programming Asst. Prof. Dr. Choopan Rattanapoka

Data Type and Display

Embed Size (px)

DESCRIPTION

Data Type and Display. 030523300- Computer Programming Asst. Prof. Dr. Choopan Rattanapoka. โครงสร้างของภาษาซี. ส่วนเรียกใช้ฟังก์ชัน (Preprocessor Directives). เป็นส่วนที่เรียกใช้ไฟล์ที่มีชื่อขยาย .h ซึ่งเป็นไฟล์เก็บฟังก์ชัน (คำสั่งของภาษาซีเป็นฟังก์ชันทั้งหมด) - PowerPoint PPT Presentation

Citation preview

DATA TYPE AND DISPLAY

030523300- Computer Programming

Asst. Prof. Dr. Choopan Rattanapoka

โครงสร�างของภาษาซี

ส่�วนเรี�ยกใช้�ฟั�งก�ช้�น (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 ควรจั%าไว�ว�าช้��อของฟ#งก�ช้$นที่$&งหมีดในภาษาซี จัะเป็�นต้$วเล์!กที่$&งหมีด

ต้$วอย�างโป็รแกรมีภาษาซี

ต้$วเล์!ก

เก0น

มี ;

ปรีะเภทของข�อม!ลในภาษาซี� ป็ระเภที่พื้�&นฐานมี 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ต้แรกเพื้��อเก!บเคร��องหมีาย

จำ$านวนเตั%ม (4)

จำ$านวนจำรี&ง (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ต้

ต้ามีล์%าด$บ

จำ$านวนจำรี&ง (2)

ตั�วอ�กขรีะ (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)

ตั�วอ�กขรีะ (2)

ต้$วอ$กขระพื้0เศูษในภาษาซี

การีปรีะกาศตั�วแปรีในภาษาซี� (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