35
อ.พิศิษฐ์ นาคใจ คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยราชภัฎอุตรดิตถ์ 1 โครงสร้าง ภาษาซี

โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

อ.พศษฐ นาคใจคณะวทยาศาสตรและเทคโนโลยมหาวทยาลยราชภฎอตรดตถ

•1

โครงสราง ภาษาซ

Page 2: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

วตถประสงค

• สามารถเขยนโปรแกรมภาษาซอยางงาย ๆ ได

• สามารถแสดงขอความออกทางจอภาพได

• สามารถแสดงขอมลชนดตางๆ ออกทางจอภาพได

• สามารถก าหนดรปแบบการแสดงขอมลออกทางจอภาพได

•2

Page 3: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

โครงสรางโปรแกรมภาษาซ (1)

#include<ชอไฟลชดค าสงภายนอก (library).h>type variable;int main(){

type variable;statement ท 1;...statement ท n;return 0;

}

•3

พรโปรเซสเซอรไดเรคทฟ

ตวแปรชนดโกบอล

ฟงกชนหลก สวนตวโปรแกรม

สวนหวโปรแกรม

ตวแปรชนดโลคอล

ชดค าสง

Page 4: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

โครงสรางโปรแกรมภาษาซ (2)

• สวนหวโปรแกรม (Header Program)

พรโปรเซสเซอรไดเรคทฟ (Preprocessor Directive)

ตวแปรชนดโกบอล (Global Variable Declaration)

•4

Page 5: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

โครงสรางโปรแกรมภาษาซ (3)

• สวนตวโปรแกรม (Body Program)

ฟงกชนหลก (Main Function)

ตวแปรชนดโลคอล (Local Variable Declaration)

ค าสง (Statement)

ฟงกชนอน ๆ (Functions)

• ค าอธบายโปรแกรม (Comment Program)

•5

Page 6: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ฟรโปรเซสเซอรไดเรคทฟ• สวนประมวลผลกอน เปนสวนทสงใหคอมไพเลอรเตรยมการท างานทก าหนดไว กอนทจะท างานใน

ฟงกชนหลก

ใหโปรแกรมดงค าสงจาก file-name.h ใน Include Directory (แฟมมาตรฐานของชดค าสง)

ใหโปรแกรมดงค าสงจาก file-name.h ใน Current Directory (แฟมปจจบนทโปรแกรมอย)

file-name คอชอไฟลนามสกล h

•6

#include <file-name.h>

#include "file-name.h"

Page 7: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ตวอยางค าสงฟรโปรเซสเซอรไดเรคทฟ#include<stdio.h>

ท าการเรยกไฟล stdio.h เพอท าใหสามารถใชค าสงทวไปได

#include<conio.h>

ท าการเรยกไฟล conio.h เพอท าใหสามารถใชค าสงจดการหนาจอ และค าสงรบและแสดงผลเพมเตม

#include<math.h>

ท าการเรยกไฟล math.h เพอท าใหสามารถใชค าสงเกยวกบคณตศาสตรได

#include<string.h>

ท าการเรยกไฟล string.h เพอท าใหสามารถใชค าสงจดการเกยวกบขอความได

•7

Page 8: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ฟงกชนหลก• ฟงกชนหลกเปนฟงกชนทโปรแกรมภาษาซตองมอยเสมอ เพราะคอมไพเลอร

ของภาษาซจะเรมตนการท างานจากฟงกชนหลก

• ตวอยางการเขยนฟงกชนหลกทไมมการท างานใดๆ

•8

int main(void)

{

return(0);

}

int main()

{

return 0;

}

Page 9: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

กฎเกณฑการใชค าสงในภาษาซ• ใชเครองหมาย semi colon ; เปนจดสนสดค าสง

• ใชอกษรตวเลกส าหรบเรยกใชค าสง (statement)

• ใชเครองหมาย comma , ส าหรบคนตวแปร และพารามเตอร

• หากค าสงใดมค าสงสวนยอยภายในหลาย ๆ ค าสง ใหใชเครองหมายปกกา { } ส าหรบก าหนดขอบเขต

•9

Page 10: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

การแสดงผลดวยค าสง printf

• การเขยนโปรแกรมจ าเปนตองมการแสดงผล เพอใหผใชงานทราบวาโปรแกรมสามารถท างานอะไร จ าเปนตองปอนคาอะไรบาง และเมอโปรแกรมท างานเสรจ ผลลพธทไดเปนอยางไร

• ค าสงทใชส าหรบการแสดงผลในภาษาซมหลายค าสง แตทสามารถใชงานไดครอบคลมและนยมใชกน คอ ค าสง printf

•10

Page 11: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

รปแบบของค าสง printf

format-string คอรปแบบของขอความซงจะประกอบดวย ขอความธรรมดา, คารหส ASCII และ สวนแสดงชนดขอมล โดย format-string จะอยในเครองหมาย Double quote " "

data-list คอชอขอมล หรอตวแปรทจะท าการแสดงผลตามสวนแสดงชนดขอมลใน format-string

•11

printf (format-string, data-list);

หมายเหต ค าสง printf ตองเรยกใช Preprocessor Directive #include<stdio.h>

Page 12: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ตวอยางการใชงานค าสง printf ทไมถกตอง

•12

int main()

{

printf ("Hello World!");

return 0;

}

Page 13: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ตวอยางการใชงานค าสง printf ทถกตอง

•13

#include<stdio.h>

int main()

{

printf ("Hello World!");

return 0;

}

Hello World!

Page 14: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

รปแบบของขอความในค าสง printf

• ขอความธรรมดา เปนสวนทแสดงตวอกษร ตวเลขออกโดยตรง

• คารหส ASCII เปนสวนทควบคมรปแบบการแสดงผล เชน การจดยอหนา การขนตนบรรทดใหม เปนตน

• สวนแสดงชนดขอมล เปนการก าหนดรปแบบของชนดขอมลทจะแสดงผลขอมล หรอตวแปรสวนแสดงชนดขอมลแบบปกต

สวนแสดงชนดขอมลทก าหนดรปแบบการแสดงผล

•14

Page 15: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ขอความธรรมดา• การแสดงขอความธรรมดาเปนการใชค าสง printf ใหแสดงขอความทตองการ

ออกทางจอภาพ โดยจะอยในสวนของ format-string ในค าสง (อยในเครองหมาย Double quote " ")

• เชน ค าสงในตวอยางโปรแกรมทผานมา

จะท าการแสดงขอความ Hello World! ออกทางจอภาพหลงจากสง Run โปรแกรม

•15

printf (format-string, data-list);

printf ("Hello World!");

Page 16: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ตวอยางการใชงานค าสง printf หลายๆค าสง

•16

Hello World!

This is my first Program.

I am a programmer.

Hello World!This is my first Program.I am a programmer.

#include<stdio.h>

int main()

{

printf ("Hello World!");

printf ("This is my first Program.");

printf ("I am a programmer.");

return 0;

}

Page 17: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

คารหส ASCII• คารหส ASCII เปนอกขระพเศษทใชงานในภาษาซ ซงใชควบคมการแสดงผลใน

ค าสง printf ในสวนของ format-string

•17

คารหส ASCII การใชงาน\t เวนชองวางทก 1 แทป (8 ชองตวอกษร)

\n ขนบรรทดใหม

\0 เปนอกขระวาง

\' แสดง single quote ออกทางจอภาพ

\" แสดง double quote ออกทางจอภาพ

\\ แสดง backslash ออกทางจอภาพ

Page 18: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ตวอยางการใชงานค าสง printf โดยใชคารหส ASCII

•18

#include<stdio.h>

int main()

{

printf ("Hello World!\n");

printf ("This is my first Program.");

printf ("\n\tI\'m a programmer.");

return 0;

}

Hello World!

This is my first Program.

I'm a programmer.

Page 19: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

สวนแสดงชนดขอมล• ในการเขยนโปรแกรมทมการประยกตขน เชนโปรแกรมค านวณเลข จะตองม

การแสดงผลลพธของคาทท าการค านวณ ซงค าสง printf สามารถแสดงผลคาตวแปรได แตจะตองเขยนโปรแกรมใหมความสมพนธกนในสวนของ format-string และ data-list

โดยทใน format-string จะมสวนแสดงชนดขอมล

และใน data-list จะมขอมล หรอตวแปรทจะแสดงผล

•19

printf (format-string, data-list);

Page 20: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

การก าหนดสวนแสดงชนดขอมลแบบตางๆ

สวนแสดงชนดขอมล การใชงาน%d แสดงผลขอมลชนดจ านวนเตม%u แสดงผลขอมลชนดจ านวนเตมบวก (ไมคดเครองหมาย)%o แสดงผลขอมลเปนเลขฐานแปด%x แสดงผลขอมลเปนเลขฐานสบหก%f แสดงผลขอมลชนดจ านวนทศนยม (6 ต าแหนง)%e แสดงผลขอมลเปนจ านวนทศนยมและอยในรปยกก าลง%c แสดงผลขอมลชนดอกขระ%s แสดงผลขอมลชนดขอความ%p แสดงผลขอมลชนดตวชต าแหนง

•20

Page 21: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ตวอยางการใชงานค าสง printf แสดงผลขอมล

•21

#include<stdio.h>

int main()

{

printf ("My name is : %s\n",“Pisit");

printf ("My point : %d\n",10+40+49);

printf ("Grade : %c\n",'A');

printf ("GPA : %f",3.99);

return 0;

}

My name is :Kmitl

My point : 99

Grade : A

GPA : 3.990000

Page 22: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

การก าหนดรายชอตวแปรในค าสง printf• การแสดงผลตวแปรโดยใชค าสง printf สามารถใชงานโดยการใสขอมล หรอ

ชอตวแปรในสวนของ data-list

• หากไมตองการแสดงผลตวแปร ไมตองมสวนของ data-list

• หากตองการแสดงผลขอมล หรอตวแปรมากกวาหนงตวในค าสงใหใช เครองหมาย comma , ส าหรบคนชอตวแปร โดยจะท าการแสดงผลตามล าดบตวแปร และสวนการแสดงชนดขอมล

•22

Page 23: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

รายชอตวแปรในค าสง printf

•23

printf ("...%?...", data);

printf ("%? %? ... %?", data-1, data-2, ..., data-n);

...data...

data-1 data-2 ... data-n

printf ("...%d...",19);

...19...

printf ("%d-%d-%d",19,1,1980);

19-1-1980

ตวอย

างตว

อยาง

Page 24: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ตวอยางการใชงานค าสง printf แสดงผลขอมลหลายตว-1

•24

#include<stdio.h>

int main()

{

printf ("Age = %d, GPA = %f\n",17,3.75);

printf ("Programming: %f\nMechanics: %f",4.0,3.5);

return 0;

}

Age = 17, GPA = 3.750000

Programming: 4.000000

Mechanics: 3.5000000

Page 25: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ตวอยางการใชงานค าสง printf แสดงผลขอมลหลายตว-2

•25

#include<stdio.h>

int main()

{

printf ("Subject : %s(%d)\n","Programming",2554);

printf ("Point : %d\nGrade : %c",99,'A');

return 0;

}

Subject : Programming(2552)

Point : 99

Grade : A

Page 26: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

สวนแสดงชนดขอมลทก าหนดรปแบบการแสดงผล (1)

• เปนการจองพนทหนาจอจ านวน m ตวอกษร แลวแสดงผล data ชดดานขวาของพนทสวนทจองไว โดยชนดขอมลตาม ? (หากความยาวเกนสวนทจองไวกจะเลอนออกไป)

• เปนการจองพนทหนาจอขนาด m ตวอกษร แลวแสดงผล data ชดดานซายของพนทสวนทจองไว โดยชนดขอมลตาม ?

•26

printf ("%m?",data);

printf ("%-m?",data);

Page 27: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ตวอยางการใชงานค าสง printf โดยมการก าหนดรปแบบ-1

•27

#include<stdio.h>

int main()

{

printf ("123456789012345678901234567890");

printf ("\n%20d*",46);

printf ("\n%-20d*",46);

printf ("\n%3d*",46);

printf ("\n%3d*",2550);

return 0;

}

Page 28: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ตวอยางการใชงานค าสง printf โดยมการก าหนดรปแบบ-2

•28

#include <stdio.h>

int main()

{

printf ("123456789012345678901234567890");

printf ("\n%20c*",'c');

printf ("\n%-20c*",'c');

printf ("\n%10s*","Pro");

printf ("\n%10s*","Programming");

return 0;

}

Page 29: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

สวนแสดงชนดขอมลทก าหนดรปแบบการแสดงผล (2)

• เปนการก าหนดใหแสดงจ านวนทศนยม n ต าแหนง ส าหรบ %f หรอแสดงอกขระจ านวน n ตว ส าหรบ %s

• เปนการจองพนทหนาจอขนาด m ตวอกษรแลวแสดงผล data จ านวนทศนยม n ต าแหนง ส าหรบ %f หรอแสดงอกขระจ านวน n ตว ส าหรบ %s

•29

printf ("%.n?",data);

printf ("%m.n?",data);

Page 30: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ตวอยางการใชงานค าสง printf โดยมการก าหนดรปแบบ-3

•30

printf ("123456789012345678901234567890");

printf ("\n%20s*","programming");

printf ("\n%-20s*","programming");

printf ("\n%.3s*","programming");

printf ("\n%20.3s*","programming");

printf ("\n%-20.3s*","programming");

Page 31: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ตวอยางการใชงานค าสง printf โดยมการก าหนดรปแบบ-4

•31

printf ("123456789012345678901234567890");

printf ("\n%20f*", 1234.56789);

printf ("\n%-20f*", 1234.56789);

printf ("\n%.3f*", 1234.56789);

printf ("\n%20.3f*", 1234.56789);

printf ("\n%-20.3f*", 1234.56789);

Page 32: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

ค าอธบายโปรแกรม Comment

• ค าอธบายโปรแกรมเปนสวนทเพมในโปรแกรมเพอชวยใหผทเขยน หรอผทอานโปรแกรมสามารถเขาใจกบตวโปรแกรมไดงายขน

• โดยทค าอธบายโปรแกรมนจะไมมผลตอการท างานของโปรแกรม คอเวลาทท าการคอมไพล จะขามขอความทอยในสวนอธบายโปรแกรมไป

•32

Page 33: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

รปแบบค าอธบายโปรแกรม

•33

/* Comment Sentence 1

Comment Sentence 2

...

Comment Sentence n */

/* Comment Sentence */

// Comment Sentence

Page 34: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

แบบฝกหด

• ใหนกศกษาเขยนโปรแกรมเพมแสดงชอ และ นามสกล ออกทางจอภาพ โดยใหชอ และนามสกลอยคนละบรรทดกน

• ใหท าการเขยนโปรแกรมโดยใหผลการท างานแสดงรปดอกจนทรเรยงตวเปนตวอกษรชอเลนของนสตเอง

•34

Page 35: โครงสร้าง ภาษาซีmathcom.uru.ac.th/~beebrain/Slide/4121305A/lec02_new.pdf · โครงสร้าง ภาษาซี วัตถุประสงค์

Reference

• ปรบปรงจาก อ.จระศกด สทธกร ภาควชาวศวกรรมคอมพวเตอร คณะวศวกรรมศาสตร สถาบนเทคโนโลยพระจอมเกลาเจาคณทหารลาดกระบง

•35