The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by ราชา แมว, 2019-12-06 05:21:41

2555_lec02_c (1)

2555_lec02_c (1)

บทท่ี 2
บทที่ 2 ภาษาซี การเขยี นโปรแกรมเบือ้ งต้น

และคาํ ส่ังแสดงผล

อ.จริ ะศักด์ิ สิทธิกร
สาขาวชิ าวศิ วกรรมคอมพวิ เตอร์ คณะวศิ วกรรมศาสตร์
สถาบนั เทคโนโลยพี ระจอมเกล้าเจ้าคุณทหารลาดกระบัง

1
01006012 Computer Programming

วตั ถุประสงค์
01006012 Computer Programming

• สามารถเขียนโปรแกรมภาษาซีอยา่ งง่าย ๆ ได้
• สามารถแสดงขอ้ ความออกทางจอภาพได้
• สามารถแสดงขอ้ มูลชนิดต่างๆ ออกทางจอภาพได้
• สามารถกาํ หนดรูปแบบการแสดงขอ้ มลู ออกทางจอภาพได้

2

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

01006012 Computer Programming

#include<file.h> พรีโปรเซสเซอร์ไดเร็คทีฟ ส่ วนหัวโปรแกรม
type function_name(type);ฟังกช์ นั โพรโทรไทพ์
ตวั แปรชนิดโกบอล
type variable;

int main()

{ type variable; ตวั แปรชนิดโลคอล ฟังกช์ นั หลกั

statement-1; คาํ สง่ั
...

statement-n;

return 0; ส่วนตวั โปรแกรม
}

type function_name(type variable)

{

statement-1; ฟังกช์ นั ยอ่ ย
...

statement-n;

return(var);

}

3

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

• ส่วนหวั โปรแกรม (Header Program) 01006012 Computer Programming

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

#include

#define

– ฟังกช์ นั โพรโทรไทพ์ (Function Prototype Declaration)

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

4

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

• ส่วนตวั โปรแกรม (Body Program) 01006012 Computer Programming

– ฟังกช์ นั หลกั (Main Function)

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

• คาํ สงั่ (Statement)

– ฟังกช์ นั อ่ืน ๆ (Functions)

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

5

2.2 ฟรีโปรเซสเซอร์ไดเร็คทฟี
01006012 Computer Programming

• ส่วนประมวลผลก่อน เป็นส่วนท่ีสงั่ ใหค้ อมไพเลอร์เตรียมการ
ทาํ งานท่ีกาํ หนดไว้ ก่อนที่จะทาํ งานในฟังกช์ นั หลกั

#include<file-name.h>

ใหโ้ ปรแกรมดึงคาํ สงั่ จาก file-name.h ใน Include Directory

#include"file-name.h"

ใหโ้ ปรแกรมดึงคาํ สง่ั จาก file-name.h ใน Current Directory
file-name คือชื่อไฟลน์ ามสกลุ h

6

ตวั อย่างคาํ ส่ังฟรีโปรเซสเซอร์ไดเร็คทฟี
01006012 Computer Programming

#include<stdio.h>

ทาํ การเรียกไฟล์ stdio.h เพ่อื ทาํ ใหส้ ามารถใชค้ าํ สงั่ ทวั่ ไปได้

#include<conio.h>

ทาํ การเรียกไฟล์ conio.h เพือ่ ทาํ ใหส้ ามารถใชค้ าํ สง่ั จดั การหนา้ จอ และคาํ สง่ั
รับและแสดงผลเพิ่มเติม

#include<math.h>

ทาํ การเรียกไฟล์ math.h เพื่อทาํ ใหส้ ามารถใชค้ าํ สง่ั เกี่ยวกบั คณิตศาสตร์ได้

#include<string.h>

ทาํ การเรียกไฟล์ string.h เพ่ือทาํ ใหส้ ามารถใชค้ าํ สงั่ จดั การเก่ียวกบั ขอ้ ความได้

7

ฟังก์ชันหลกั
01006012 Computer Programming

• ฟังก์ชันหลักเป็ นฟังก์ชันที่โปรแกรมภาษาซีต้องมีอยู่เสมอ
เพราะคอมไพเลอร์ของภาษาซีจะเร่ิมตน้ การทาํ งานจากฟังกช์ นั
หลกั

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

int main(void) int main()
{ {

return(0); return 0;
} }

8

กฎเกณฑ์การใช้คาํ ส่ังในภาษาซี 01006012 Computer Programming

• ใชเ้ คร่ืองหมาย semi colon ; เป็นจุดสิ้นสุดคาํ สงั่

• ใชอ้ กั ษรตวั เลก็ สาํ หรับเรียกใชค้ าํ สง่ั (statement)

• ใชเ้ ครื่องหมาย comma , สาํ หรับคนั่ ตวั แปร และพารามิเตอร์

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

9

2.3 การแสดงผลด้วยคาํ สั่ง printf
01006012 Computer Programming

• การเขียนโปรแกรมจาํ เป็ นตอ้ งมีการแสดงผล เพื่อให้ผูใ้ ช้งาน
ทราบว่าโปรแกรมสามารถทาํ งานอะไร จาํ เป็ นต้องป้ อนค่า
อะไรบ้าง และเม่ือโปรแกรมทํางานเสร็จ ผลลัพธ์ท่ีได้เป็ น
อยา่ งไร

• คาํ ส่ังท่ีใช้สําหรับการแสดงผลในภาษาซีมีหลายคาํ ส่ัง แต่ท่ี
สามารถใชง้ านไดค้ รอบคลุมและนิยมใชก้ นั คือ คาํ สง่ั printf

10

รูปแบบของคาํ ส่ัง printf 01006012 Computer Programming

printf (format-string, data-list);

format-string คือรูปแบบของขอ้ ความซ่ึงจะประกอบดว้ ย
data-list ขอ้ ความธรรมดา, ค่ารหสั ASCII และ ส่วน
แสดงชนิดขอ้ มูล โดย format-string จะอยใู่ น
เคร่ืองหมาย Double quote " "

คือช่ือขอ้ มูล หรือตวั แปรท่ีจะทาํ การแสดงผล
ตามส่วนแสดงชนิดขอ้ มูลใน format-string

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

11

ตวั อย่างการใช้งานคาํ ส่ัง printf ทไ่ี ม่ถูกต้อง
01006012 Computer Programming
12

ตวั อย่างการใช้งานคาํ ส่ัง printf ทถ่ี ูกต้อง
01006012 Computer Programming

#include<stdio.h>
int main()
{

printf ("Hello World!");
return 0;
}
Hello World!

13

รูปแบบของข้อความในคาํ สั่ง printf
01006012 Computer Programming

• ขอ้ ความธรรมดา เป็นส่วนท่ีแสดงตวั อกั ษร ตวั เลขออกโดยตรง
• ค่ารหสั ASCII เป็นส่วนท่ีควบคุมรูปแบบการแสดงผล เช่น การ

จดั ยอ่ หนา้ การข้ึนตน้ บรรทดั ใหม่ เป็นตน้
• ส่วนแสดงชนิดขอ้ มูล เป็นการกาํ หนดรูปแบบของชนิดขอ้ มลู ท่ี

จะแสดงผลขอ้ มูล หรือตวั แปร
– ส่วนแสดงชนิดขอ้ มูลแบบปกติ
– ส่วนแสดงชนิดขอ้ มลู ที่กาํ หนดรูปแบบการแสดงผล

14

ข้อความธรรมดา
01006012 Computer Programming

• การแสดงขอ้ ความธรรมดาเป็นการใชค้ าํ สงั่ printf ใหแ้ สดง
ขอ้ ความที่ตอ้ งการออกทางจอภาพ โดยจะอยใู่ นส่วนของ
format-string ในคาํ สงั่ (อยใู่ นเคร่ืองหมาย Double quote " ")

printf (format-string, data-list);

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

printf ("Hello World!");

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

15

ตวั อย่างการใช้งานคาํ สั่ง printf หลายๆคาํ ส่ัง
01006012 Computer Programming

#include<stdio.h>
#include<conio.h>
int main()
{

printf ("Hello World!");
printf ("This is my first Program.");
printf ("I am a programmer.");
return 0;
}

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

16

ค่ารหัส ASCII
01006012 Computer Programming

• ค่ารหสั ASCII เป็นอกั ขระพิเศษที่ใชง้ านในภาษาซี ซ่ึงใชค้ วบคุม
การแสดงผลในคาํ สงั่ printf ในส่วนของ format-string

ค่ารหัส ASCII การใช้งาน

\t เว้นช่องว่างทุก 1 แทป็ (8 ช่องตวั อกั ษร)

\n ขนึ้ บรรทดั ใหม่

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

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

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

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

17

ตวั อย่างการใช้งานคาํ ส่ัง printf โดยใช้ค่ารหัส ASCII
01006012 Computer Programming
#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.

18

ส่ วนแสดงชนิดข้ อมูล
01006012 Computer Programming

• ในการเขียนโปรแกรมที่มีการประยกุ ตข์ ้ึน เช่นโปรแกรมคาํ นวณ
เลข จะตอ้ งมีการแสดงผลลพั ธ์ของค่าท่ีทาํ การคาํ นวณ ซ่ึงคาํ สั่ง
printf สามารถแสดงผลค่าตวั แปรได้ แต่จะตอ้ งเขียนโปรแกรม
ใหม้ ีความสมั พนั ธ์กนั ในส่วนของ format-string และ data-list

printf (format-string, data-list);

– โดยที่ใน format-string จะมีส่วนแสดงชนิดขอ้ มูล
– และใน data-list จะมีขอ้ มูล หรือตวั แปรท่ีจะแสดงผล

19

การกาํ หนดส่วนแสดงชนิดข้อมูลแบบต่างๆ
01006012 Computer Programming

ส่ วนแสดงชนิดข้ อมูล การใช้งาน

%d แสดงผลขอ้ มลู ชนิดจาํ นวนเตม็

%u แสดงผลขอ้ มลู ชนิดจาํ นวนเตม็ บวก (ไม่คิดเคร่ืองหมาย)

%o แสดงผลขอ้ มลู เป็นเลขฐานแปด

%x แสดงผลขอ้ มลู เป็นเลขฐานสิบหก

%f แสดงผลขอ้ มูลชนิดจาํ นวนทศนิยม (6 ตาํ แหน่ง)

%e แสดงผลขอ้ มลู เป็นจาํ นวนทศนิยมและอยใู่ นรูปยกกาํ ลงั

%c แสดงผลขอ้ มูลชนิดอกั ขระ

%s แสดงผลขอ้ มลู ชนิดข้อความ

%p แสดงผลขอ้ มูลชนิดตวั ชี้ตาํ แหน่ง

20

ตวั อย่างการใช้งานคาํ สั่ง printf แสดงผลข้อมูล
01006012 Computer Programming

#include<stdio.h>
int main()
{

printf ("My name is : %s\n","Kmitl");
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

21

การกาํ หนดรายชื่อตวั แปรในคาํ สั่ง printf
01006012 Computer Programming

• การแสดงผลตวั แปรโดยใชค้ าํ สง่ั printf สามารถใชง้ านโดยการ
ใส่ขอ้ มูล หรือชื่อตวั แปรในส่วนของ data-list

• หากไม่ตอ้ งการแสดงผลตวั แปร ไม่ตอ้ งมีส่วนของ data-list
• หากต้องการแสดงผลข้อมูล หรือตัวแปรมากกว่าหน่ึงตัวใน

คาํ สง่ั ใหใ้ ช้ เคร่ืองหมาย comma , สาํ หรับคน่ั ช่ือตวั แปร โดยจะ
ทาํ การแสดงผลตามลาํ ดบั ตวั แปร และส่วนการแสดงชนิดขอ้ มูล

22

รายชื่อตวั แปรในคาํ ส่ัง printf 01006012 Computer Programming

ตัวอ ่ยางprintf ("...%?...", data);
...data...

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

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

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

ตัวอ ่ยาง printf ("%d-%d-%d",19,1,1980);
19-1-1980

23

ตวั อย่างการใช้งานคาํ ส่ัง printf แสดงผลข้อมูลหลายตวั -1
01006012 Computer Programming

#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

24

ตวั อย่างการใช้งานคาํ สั่ง printf แสดงผลข้อมูลหลายตวั -2
01006012 Computer Programming

#include<stdio.h>
int main()
{

printf ("Subject : %s(%d)\n","Programming",2552);
printf ("Point : %d\nGrade : %c",99,'A');
return 0;
}

Subject : Programming(2552)
Point : 99
Grade : A

25

ส่วนแสดงชนิดข้อมูลทก่ี าํ หนดรูปแบบการแสดงผล (1)
01006012 Computer Programming

printf ("%m?",data);

• เป็นการจองพ้นื ท่ีหนา้ จอจาํ นวน m ตวั อกั ษร แลว้ แสดงผล data

ชิดด้านขวาของพ้ืนท่ีส่วนที่จองไว้ โดยชนิดขอ้ มลู ตาม ? (หาก
ความยาวเกินส่วนท่ีจองไวก้ จ็ ะเล่ือนออกไป)

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

• เป็นการจองพ้ืนท่ีหนา้ จอขนาด m ตวั อกั ษร แลว้ แสดงผล data
ชิดด้านซ้ายของพ้ืนที่ส่วนท่ีจองไว้ โดยชนิดขอ้ มูลตาม ?

26

ตวั อย่างการใช้งานคาํ ส่ัง printf โดยมกี ารกาํ หนดรูปแบบ-1
01006012 Computer Programming

#include<stdio.h> 27
int main()
{

printf ("123456789012345678901234567890");
printf ("\n%20d*",46);
printf ("\n%-20d*",46);
printf ("\n%3d*",46);
printf ("\n%3d*",2550);
return 0;
}

123456789012345678901234567890
46*

46 *
46*

2550*

ตวั อย่างการใช้งานคาํ ส่ัง printf โดยมกี ารกาํ หนดรูปแบบ-2
01006012 Computer Programming

#include <stdio.h> 28
int main()
{

printf ("123456789012345678901234567890");
printf ("\n%20c*",'c');
printf ("\n%-20c*",'c');
printf ("\n%10s*","Pro");
printf ("\n%10s*","Programming");
return 0;
}

123456789012345678901234567890
c*

c*
Pro*

Programming*

2.4 ส่วนแสดงชนิดข้อมูลทกี่ าํ หนดรูปแบบการแสดงผล (2)
01006012 Computer Programming

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

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

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

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

29

ตวั อย่างการใช้งานคาํ ส่ัง printf โดยมกี ารกาํ หนดรูปแบบ-3
01006012 Computer Programming

printf ("123456789012345678901234567890");
printf ("\n%20s*","programming");
printf ("\n%-20s*","programming");
printf ("\n%.3s*","programming");
printf ("\n%20.3s*","programming");
printf ("\n%-20.3s*","programming");

123456789012345678901234567890

programming*

programming *

pro*

pro*

pro *_

30

ตวั อย่างการใช้งานคาํ สั่ง printf โดยมกี ารกาํ หนดรูปแบบ-4
01006012 Computer Programming

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

123456789012345678901234567890

1234.567890*

1234.567890 *

1234.568*

1234.568*

1234.568 *_

31

2.5 คาํ อธิบายโปรแกรม
01006012 Computer Programming

• คาํ อธิบายโปรแกรมเป็ นส่วนที่เพ่ิมในโปรแกรมเพ่ือช่วยให้ผูท้ ี่
เขียน หรือผูท้ ่ีอ่านโปรแกรมสามารถเขา้ ใจกบั ตวั โปรแกรมได้
ง่ายข้ึน

• โดยท่ีคําอธิบายโปรแกรมน้ีจะไม่มีผลต่อการทํางานของ
โปรแกรม คือเวลาท่ีทาํ การคอมไพล์ จะขา้ มขอ้ ความท่ีอยู่ใน
ส่วนอธิบายโปรแกรมไป

32

รูปแบบคาํ อธิบายโปรแกรม 01006012 Computer Programming

/* Comment Sentence 1
Comment Sentence 2
...
Comment Sentence n */

/* Comment Sentence */

// Comment Sentence

33

โจทย์ : โปรกรมแสดงผลข้อมูลส่วนตวั
01006012 Computer Programming

• จงเขียนโปรแกรมแสดงผล ช่ือ-นามสกลุ อายุ
– ตวั อยา่ งการแสดงผล

Name : Kmitl
Surname : Engineering
Age : 46

34

โจทย์ : โปรแกรมรายได้

• จงเขียนโปรแกรมแสดงรายไดต้ ่อเดือน แล0ว1้ 0แ06ส01ด2 งCoวmา่ pตut่อerสPrปั ogดraาmหm์ ing
คิดเป็นเท่าใด (ทศยนิยม 2 ตาํ แน่ง) ต่อวนั คิดป็นเท่าใด (ทศนิยม
3 ตาํ แหน่ง)

– ตวั อยา่ งการแสดงผล

Salary : 6500

Money/Week : 1625.00

Money/Day : 232.143

35

โจทย์ : โปรแกรมแสดงเกรด

• จงเขียนโปรแกรมแสดงผล เกรดวชิ า Prog0r1a0m060m12inCogm,pDutreraPwroignrgam,ming
Mechanics, Math1 พร้อมแสดงเกรดเฉล่ีย (ทศนิยม 2 ตาํ แหน่ง)

– ตวั อยา่ งการแสดงผล

Programming : A

Drawing : B+

Mechanics : B+

Math :B

GPS : 3.50

36

คาํ ถามท้ายบท 01006012 Computer Programming

1. แสดงผลของโปรแกรมต่อไปนี้

#include<stdio.h>

int main()

{

/* float radius, pi, area;

pi = 22/7; // pi = 3.14;

printf ("Enter Radius of Circular : ");

scanf ("%f",&radius);

area = pi * radius * radius; */

printf (“Programming Language”,2008);

return 0;

}

37

คาํ ถามท้ายบท (ต่อ) 01006012 Computer Programming

2. จงเขยี นส่วนของโปรแกรมให้แสดงผลดงั ต่อไปนี้

12\06\2008
King Mongkut’s Institute of Technology Ladkrabang
Bangkok, Thailand.

3.จงเขยี นส่วนของโปรแกรมให้แสดงผลตามเงอ่ื นไขต่อไปนี้ 38
บรรทดั ท่ี 1 แสดง รหัสประจาํ ตวั นศ.
บรรทดั ท่ี 2 แสดง ช่ือ นามสกลุ
บรรทดั ที่ 3 แสดง วนั /เดอื น/ปี เกดิ
บรรทดั ที่ 8 แสดงข้อความ http://www.ce.kmitl.ac.th
ชิดขอบขวาของบรรทดั
บรรทดั ท่ี 10 แสดงข้อความ bye bye ตรงกลางบรรทดั


Click to View FlipBook Version