C Programming

Download Report

Transcript C Programming

C Programming
By
Mr. Sanae Sukprung
คำอธิบำยรำยวิชำ
หลักกำรเขียนโปรแกรมภำษำซี ชนิ ด
ของข้ อ มู ล ค ำสั่ ง ควบคุ ม ค ำสั่ ง ลู ป ฟั ง ก์ ชั่ น
แมคโคร พอยต์ เตอร์ อะเรย์ สตริง กำรจัดกำร
แฟ้มข้ อมูล ข้ อมูลแบบโครงสร้ ำง และกำรเขียน
โปรแกรมภำษำซีกบั งำนประยุกต์
C Programing
2
รู้ จักกับภำษำ C
ภำษำ C เป็ นภำษำทีเ่ ก่ำแก่ ซึ่งถูกพัฒนำ
เพือ่ ให้ เป็ นภำษำสำหรับกำรสร้ ำง
ระบบปฏิบัติกำร UNIX เพรำะของเดิมนั้นเขียน
ด้ วยภำษำ Assembly ซึ่งเป็ นภำษำที่ยดึ ติดกับ
H/W จึงทำให้ ย้ำยระบบปฏิบัติกำรไปทำงำนกับ
เครื่องอืน่ ๆ เป็ นเรื่องที่เป็ นไปไม่ ได้
C Programing
3
ดังนั้น ภำษำ C จึงเป็ นภำษำที่ไม่ ยึดติดกับ
H/W และในปัจจุบันยังไม่ ยดึ ติดกับกำรสร้ ำง
ระบบปฏิ บั ติ ก ำรเท่ ำนั้ น แต่ ยั ง น ำไปสร้ ำง
โปรแกรมเพือ่ งำนทุกประเภทได้
C Programing
4
จุดเด่ นของภำษำ C
• เป็ นภำษำที่มีกำรกำหนดมำตรฐำนสำหรับเครื่อง
คอมพิวเตอร์ ทุกรุ่น
• เป็ นภำษำทีร่ ะบบปฏิบัตกิ ำรทุกตัวยอมรับ
• เป็ นภำษำที่มีโครงสร้ ำงที่ดี และควำมชัดเจนของ
เครื่องหมำยสำหรับดำเนินกำร
C Programing
5
• สำมำรถเขียนคำสั่ งภำษำ C เพือ่ ควบคุมกำร
ทำงำนของอุปกรณ์ H/W บำงส่ วนได้
• มี Function สำเร็จรู ป สำหรับงำนประเภทต่ ำง ๆ
ให้ เลือกใช้ มำกมำย
C Programing
6
กำรสั่ งงำนคอมพิวเตอร์ ด้วยภำษำโปรแกรม
MUL R1, D
STO R1, TEMP1
LOD R1 ,B
ADD R1,TEMP1
ตัวกลางสาหรับแปลภาษา
ไปเป็ นภาษาเครื่ อง
C Programing
11001010
00100110
01001101
01101100
10011001
11001011
10001101
11000101
7
กำรแบ่ งระดับตำมลักษณะและกำรทำงำน
1. ภำษำระดับต่ำ (LOW LEVEL Language)
เป็ นภาษที่ใกล้เคียงกับภาษาเครื่ องมากที่สุด สามารถ
เขียนคาสัง่ เพื่อติดต่อสัง่ งานกับอุปกรณ์ H/W ได้
โดยตรง ซึ่งได้แก่ ภาษา Assambly
MUL R1, D
ตัวอย่ ำง ของ Assambly
STO R1, TEMP1
C Programing
LOD R1 ,B
ADD R1,TEMP1
8
กำรแบ่ งระดับตำมลักษณะ และกำรทำงำน (ต่ อ)
2. ภำษำระดับสู ง (High Level Language)
เป็ นภาษาที่ ใ กล้เ คี ย งกับ ภาษามนุ ษ ย์ม ากที่ สุ ด
คาสัง่ ต่าง ๆ จึงมักเป็ นภาษาอังกฤษ ทาให้จดจา
และเขียนได้ง่าย เช่น ภาษา Pascal, Cobol,
Fortran หรื อ Basic เป็ นต้น
C Programing
9
กำรแบ่ งระดับตำมลักษณะ (ต่ อ)
3. ภำษำระดับกลำง (Middle Level language)
ภาษา C ถูกพัฒนาขึ้นโดยเอาข้อดีและข้อเสี ยของ 2
ระดับมาใช้ คือ คาสัง่ ของภาษา C เป็ นคาสัง่ ที่มี
ความหมายใกล้เคียงกับภาษามนุษย์ และยังสามารถ
ติดต่อกับ H/W ได้รวดเร็ ว ดังนั้นภาษา C จึงถูกจัด
ให้เป็ นภาษาระดับกลาง
C Programing
10
หลักในการแปลภาษา
แบ่ งได้ 2 วิธี คือ
1. แปลทีละคำสั่ ง
ตัวแปลลักษณะนี้จะเรี ยกว่า Interpreter
โดยจะทางานแบบเป็ นคาสัง่ ต่อคาสัง่ นัน่ คือจะอ่าน
คาสัง่ จากโปรแกรมมา 1 คาสัง่ และทางานตามคาสัง่
นั้นทันที
Print “Hello Link \n ”;
print “How are you?”;
Interpreter
C Programing
Hello Link
11
หลักในการแปลภาษา (ต่อ)
2. แปลทีเดียวตั้งแต่ ต้นจนจบ
ตัวแปลลักษณะนี้จะเรี ยกว่า Compiler
หลักการทางานเริ่ มจากคอมไพล์เลอร์จะทาการตรวจสอบ
คาสัง่ ทั้งหมดของโปรแกรม เพื่อดูวา่ มีส่วนใดผิดจาก
หลักการของภาษานั้นหรื อไม่ ถ้าไม่พบข้อผิดพลาด
คอมไพเลอร์จะทาการแปลคาสัง่ ทั้งหมดในโปรแกรมให้
เป็ นภาษาเครื่ องแล้วจึงทางาน
Print “Hello Link \n ”;
print “How are you?”;
Compiler
C Programing
Hello Link
How are You
12
ขั้นตอนการทางานของ ภาษา C
ฟังก์ชนั่ จากไลบรารี
ในภาษา C
ไฟล์ชื่อ Test.c
#Include (stdio.h)
main()
{
printf(“Hello
World\n”);
}
Object File
C Compoler
.obj
คอมไพล์
test.obj
C Programing
Linker
Binary File
.exe
ลิงค์
test.exe
13
การนาภาษา C ไปใช้งาน
• สร้างระบบปฏิบตั ิการ
• งานทางด้านการควบคุมอุปกรณ์ H/W
• สร้างโปรแกรมสาหรับจัดพิมพ์เอกสาร
C Programing
14
ต่อ
• สร้างตัวแปรภาษาอื่น ๆ
• สร้างโปรแกรมเพื่อใช้สาหรับงาน
ทัว่ ๆ ไป
• เป็ นรากฐานที่สาคัญของภาษาใหม่
จานวนมาก
C Programing
15
แบบฝึ กหั ด 1
1. ภาษา C คืออะไร ?
2. ภาษา C มีจุดเด่นอะไรบ้าง ?
3. ภาษาการเขียนโปรแกรมแบ่งระดับตาม
ลักษณะและการทางาน? มีท้ งั หมดกี่ระดับ ?
อธิบายมาพอใจ
4. หลักในการแปลภาษามีอะไรบ้าง ?
5. ภาษา C มีข้นั ตอนวิธีการทางานอย่างไร ?
C Programing
16
ภาษา C เบื้องต้น
โครงสร้างของภาษา C
จะแบ่ งออกเป็ น 2 ส่ วนดังนี้
1
ส่ วนหัวของโปรแกรมซึ่งเป็ นส่ วนของ
การกาหนดค่าเริ่ มต้น และประกาศตัวแปร
2
ส่ วนของตัวโปรแกรมซึ่งเริ่ มจาก
Main() ซึ่งอาจจะมีการเรี ยกใช้
Function อื่น ๆ ก็ได้
C Programing
18
ตัวอย่าง การเขียนโปรแกรมภาษา C
#include <stdio.h>
main()
{
printf(“Hello
World\n”);
}
Head
Body
C Programing
19
ส่ วนหัวของโปรแกรม
ส่ ว นหั ว ของโปรแกรมจะเริ่ มต้น ตั้ง แต่
บรรทัดแรกของโปรแกรมจนมาสิ้ นสุ ดที่บรรทัด
ก่อน Main() จะแบ่งออกเป็ น 2 ส่ วนดังนี้
1. คาสัง่ พิเศษ (Preprocessor Directive)
2. การประกาศตัวแปร (Declaration)
C Programing
20
#include <stdio.h>
int x =4;
main()
{
printf(“Hello World\n”);
}
C Programing
1
2
21
Preprocessor
directive
เป็ นคาสั่งรู ปแบบหนึ่ งของภาษา C ที่มีความ
พิ เ ศษ โดยในขั้น ตอนการแปลความหมายของ
โปรแกรม ถ้าตัวแปลภาษา C ตรวจพบว่ามีการใช้
Preprocessor
ภายในโปรแกรม ก็จะถูกแปล
ความหมายเป็ นลาดับแรกก่อนคาสัง่ อื่น ๆ
รู ปแบบของการเขียน Preprocessor จะต้อง
ขึ้นต้นเครื่ องหมาย # แต่ไม่ตอ้ งลงท้ายด้วยเครื่ อง ;
เหมือนคาสัง่ อื่น ๆ ทัว่ ไป
C Programing
22
Preprocessor directive (ต่อ)
คาสัง่ ที่จดั อยูใ่ นกลุ่มของ Preprocessor Directive
#Include
#Elid
#Line
#Define
#Else
#Pragma
#Error
#ifdef
C Programing
#if
#ifndef
#Endfi
#undef
23
การประกาศตัวแปร
#include <Stdio.h>
int a= 5;
int b= 10;
int c;
main()
{
c= a+b;
printf (“sum = %d\n”, c);
}
ตัวแปรจานวนเต็ม
หาผลบวก
แสดงผลบวก
C Programing
24
รู ปแบบการเขียนคาสัง่ ภาษา C
• คำสั่ งในภำษำ C จะต้ องเขียนด้ วยตัวอักษร
พิมพ์เล็ก
• ทุกคำสั่ งต้ องลงท้ ำยด้ วย ;
• สำมำรถเขียนคำสั่ งได้ อย่ ำงอิสระ
เช่ น int a = 5; int b = 10; printf (Sum = %d\n”, a+b);
C Programing
25
คาบรรยายแทรก (Comment)
การเขี ย นค าบรรยายแทรก หรื อ ที่ เ รี ย กว่ า
comment ไว้ภายในโปรแกรมจะช่วยเพิ่มความ
เข้าใจของตัวเรา หรื อเพื่อให้คนที่มาอ่านโปรแกรม
เข้าใจในสิ่ งที่เราเขียนได้มากขึ้น ซึ่ ง รู ปแบบจะใช้
เครื่ องหมาย /* */ ครอบคาบรรยายที่เราต้องการ
แทรกลงไปในโปรแกรม
C Programing
26
#include <stdio.h>
main()
{
printf (“Hello World\n”);
/* Display message Hello world to the Monitor */
}
C Programing
27
ข้ อมูลและตัวแปรในภำษำ C
ชนิดของข้อมูลในภาษา C
• ข้อมูลเลขจานวนเต็ม (Integer)
• ข้อมูลเลขทศนิยม (Float)
• ข้อมูลชนิดเลขฐานแปด (Octal)
• ข้อมูลชนิดเลขฐานสิ บหก (Hexadecimal)
• ข้อมูลชนิดตัวอักขระ (Character)
• ข้อมูลชนิดข้อความ (String)
C Programing
29
ตัวแปรและหน้าที่ของตัวแปร
ตัวแปร (Variable) คือ การจองที่เก็บข้อมูลใน
หน่ วยความจาหลัก (RAM) ของเครื่ องคอมพิวเตอร์
พร้อมกับกาหนดชื่อเรี ยกแทนหน่วยความจาในตาแหน่ ง
นั้น
อย่างเช่น ถ้าเราสร้างตัวแปรขึ้นมา 1 ตัวโดยใช้ชื่อ
num สาหรับเก็บค่าของตัวเลข 16 เมื่อต้องการนาค่า 16
มาใช้ เราก็เพียงแต่เรี ยกชื่อ num ซึ่ งภาษา C จะแปล
ความหมายได้ถกู ต้องว่ามีค่าเท่ากับ 16
C Programing
30
ชนิดของตัวแปรในภาษา C
สามารถแบ่งได้ 2 ประเภทใหญ่ ๆ คือ
1. ตัวแปรแบบพื้นฐาน (Scalar)
ซึ่งหมายถึงที่เก็บข้อมูลได้เพียงค่า
เดียวเช่น
C Programing
31
ชนิดของตัวแปร ขนาด (Bits)
ขอบเขต
ความหมาย
Char
8
-128 ถึง 127 เก็บข้ อมูลชนิดอักขระ ใช้ พืน้ ทีเ่ ก็บในหน่วยความจาประมาณ 8 Bits
unsigned Char
8
int
16
unsigned int
16
0 - 65535 เก็บข้ อมูลขนิดตัวเลขจานวนเต็ม แบบไม่คิดเครื่ องหมาย
short
8
-128 - 127 เก็บข้ อมูลชนิดตัวเลขจานวนเต็มแบบสัน้ ใช้ พืน้ ที่ 8 Bits
unsigned short
8
long
32
-2147483648 เก็บข้ อมูลชนิดเลขจานวนเต็มแบบยาว ใช้ พืน้ ที่ 32 Bits
unsigned long
32
0 - 4294967296 เก็บข้ อมูลชนิดเลขจานวนเต็มแบบยาว แบบไม่คิดเครื่ องหมาย
Float
32
เก็บข้ อมูลชนิดตัวเลขทศนิยม ใช้ พืน้ ที่ 32 Bit เก็บทศนิยม 6 ตัว
double
64
เก็บข้ อมูลชนิดตัวเลขทศนิยม ใช้ พืน้ ที่ Bits เก็บทสนิยม 12 ตัว
long double
128
เก็บข้ อมูลชนิดตัวเลขทศนิยม ใช้ พืน้ ที่ 128 Bit เก็บทศนิยม 24 ตัว
0 - 255
เก็บข้ อมูลชนิดอักขระ แบบไม่คิดเครื่ องหมาย
-32768 - 32767 เก็บข้ อมูลขนิดตัวเลขจานวนเต็ม ใช้ พืน้ ที่ 16 Bits
0 - 255
เก็บข้ อมูลชนิดตัวเลขจานวนเต็มแบบสัน้ แบบไม่คิดเครื่ องหมาย
C Programing
32
รู ปแบบการประกาศตัวแปร
Type variable;
type : ชนิดของตัวแปรที่จะสร้างขึ้น
variable : ชื่อของตัวแปรที่ตอ้ งการจะใช้
ตัวอย่ ำง
int num;
float y;
char c;
double salary;
C Programing
33
รู ปแบบการประกาศตัวแปร (ต่อ)
Type variable = value;
ตัวอย่าง
long million = 1000000;
int oct = 0234;
int hex = 0x45;
float temp = 15.236;
double stat = 1.25e-02;
char ch =‘#’;
C Programing
34
รู ปแบบการประกาศตัวแปร (ต่อ)
Type variable-1, variable-2,... variable-n;
type : ชนิดของตัวแปรที่จะสร้างขึ้น
variable-1... Variable-n : ชื่อของตัวแปรที่ตอ้ งการจะใช้
int num1,num2,num3;
float point1, point2,point3 =
ตัวอย่าง 12.00;
char a,b = ‘B’, c,d =‘D’;
C Programing
35
หลักการตั้งชื่อตัวแปร
• ต้องขึ้นต้นด้วยตัวอักษร A-Z หรื อ a-z หรื อเครื่ องหมาย _
เท่านั้น
• ความยาวต้องไม่เกิน 32 ตัวอักษร
• ภายในชื่อตัวแปรให้ใช้ตวั อักษร A-Z หรื อ a-z หรื อ 0-9
หรื อ _
• ห้ามเว้นช่องว่างภายในตัวแปร หรื อใช้สญ
ั ลักษณ์
นอกเหนือจากข้อ 2
• การใช้ตวั อักษรตัวใหญ่ และตัวเล็ก มีความแตกต่างกัน
• ห้ามตั้งชื่อตัวแปรซ้ ากับคาสงวน (Reserved Word)
C Programing
36
คาสงวน (Reserved Word)
auto
continue
if
short
switch
volatile
break
default
int
signed
typedef
while
case
do
long
sizeof
union
C Programing
char
double
register
static
unsigned
const
else
return
struct
void
37
ตัวอย่างการตั้งชื่อตัวแปร
class_room
hi-tech
9number
_hello123
age#
right!
last name
ถูกต้ อง
ไม่ ถูกต้ อง
ไม่ ถูกต้ อง
ถูกต้ อง
ไม่ ถูกต้ อง
C Programing
ไม่ ถูกต้ อง
ไม่ ถูกต้ อง
38
ตัวแปรสาหรับข้อมูลชนิดข้อความ
char variable[n];
n : คือจานวนของตัวแปรชนิดอักขระ (Char) ที่จะสร้างขึ้น
โดยถ้า ข้อ ความมี อ ัก ขระทั้ง หมด 10 ตัว จะต้อ งใส่ จ านวนเป็ น 11
เนื่ องจากภาษา C มีขอ้ กาหนดว่าจะเก็บข้อมูลชนิ ดข้อความ ตัวสุ ดท้าย
ต้องเป็ นอักขระว่าง ซึ่งจะเขียนแทนด้วย \0 เพื่อบอกให้รู้วา่ เป็ นข้อความ
Variable : ชื่อของตัวแปร โดยต้องตั้งชื่อให้ถกู ต้องตามหลักการตั้งชื่อ
char name [10];
C Programing
39
คาสัง่ ที่ใช้ในการแสดงผล และการรับข้อมูล
printf()
รูปแบบ printf (“ control”,value);
C Programing
40
control : ส่ วนที่ใช้ควบคุมการแสดงผล ซึ่งมี
อยู่ 3 แบบด้วยกัน คือ ข้อความธรรมดา
รหัสควบคุมรู ปแบบ (เช่น %d, %f) และอักขระ
ควบคุมการแสดงผล(เช่น \n) โดยส่ วนที่ใช้ควบคุม
การแสดงผลเหล่านี้จะต้องเขียนไว้ภายใน “ “
value : คือ ค่าของเครื่ องหมาย นิพจน์ หรื อ
มาโครที่ตอ้ งการแสดงผล โดยถ้ามีมากกว่าหนึ่งตัว
ให้ใช้เครื่ องหมาย , (comma) คัน่ ระหว่างแต่ละตัว
C Programing
41
ตัวอย่าง
/* Ex1 */
#include <stdio.h>
main()
{
printf (“Nice to meet you!”);
}
C Programing
42
ตัวอย่าง
/* Ex2 */
#include <stdio.h>
int num = 32;
main()
{
printf (num);
}
C Programing
43
รหัสรู ปแบบ (Format Code)
•
•
•
•
•
•
•
•
•
%d สาหรับการแสดงผลตัวเลขจานวนเต็ม
%u สาหรับการแสดงผลตัวเลขจานวนเต็มบวก
%o สาหรับการแสดงผลออกมาในรู ปแบบของเลขฐานแปด
%x สาหรับการแสดงผลออกมาในรู ปแบบของเลขฐานสิ บหก
%f สาหรับการแสดงผลตัวเลขทศนิยม
%e สาหรับการแสดงผลตัวเลขทศนิยมออกมาในรู ปแบบ E
%c สาหรับแสดงผลอักขระ 1 ตัว
%s สาหรับแสดงผลข้อความ
%p สาหรับการแสดงผลตัวชี้ตาแหน่ง
C Programing
44
ตัวอย่าง
/* EX 3 */
#intclude <Stdio.h>
int x1 = 43, x2 = 0x77, x3 = 0573;
float y1 = -764.512, y2 = 1.25e02;
char z = ‘A’;
char name[11] = “Sriwattana”
main()
{
printf (“%d“, x1);
printf (“%x %o “,x2, x3);
printf (“%f %e “, y1,y2);
printf (“%c %s “, z, name);
}
C Programing
45
อักขระควบคุมการแสดงผล
• \n
• \t
• \r
• \f
• \b
ขึ้นบรรทัดใหม่
เว้นช่องว่างเป็ นระยะ 1 Tab (6 ตัวอักษร)
กาหนดให้ Cursor ไปอยูต่ น้ บรรทัด
เว้นช่องว่างเป็ นระยะ 1 หน้าจอ
ลบอักขระตัวท้ายสุ ดออก 1 ตัว
C Programing
46
ตัวอย่าง
#include <stdio.n>
#define PUBLISH “infopress”
int x1 =14, x2 = 5;
main()
{
printf (“This is the book from %s\n”, PUBLISH);
printf(“Sum of %d + %d =\t%d\n”,x1, x2, x1+x2);
}
C Programing
47
รับข้อมูลจาก Keyboard ด้วย
scanf()
Scanf ( )
รู ปแบบ scanf (“ format “ , &variable);
C Programing
48
format : เป็ นการกาหนดรู ปแบบ ของ
ข้อ มู ล ที่ จ ะรั บ เข้า มา โดยจะใช้ร หั ส รู ป แบบ
เหมือนกับ printf ()
variable : ตัวแปรที่ใช้สาหรับรับข้อมูล
เข้ามา โดยจะต้องเขียนนาหน้าด้วยเครื่ อ งหมาย
& ยกเว้นตัวแปรที่จะเก็บข้อความเท่านั้น
C Programing
49
ตัวอย่าง
/* EX 4 */
#include <stdio.h>
int age;
main ()
{
clrscr( );
printf (“How Old are you?”);
scanf (“%d”,&age);
printf (“You are %d years old. \n”,age);
}
C Programing
50
แสดงผลทีละอักขระด้วย putchar()
รู ปแบบ
putchar(char);
char : เป็ นตัวแปรชนิด char หรื ออักขระที่เขียน
ภายในเครื่ องหมาย ‘ ‘
C Programing
51
ตัวอย่าง การใช้คาสัง่ putchar( )
#include <stdio.h>
char first = ‘0’;
main()
{
clrscr();
putchar(first);
putchar(‘k’);
}
เรี ยกใช้ Function Clrscr
แสดงข้อความในตัวแปร First
แสดงตัวอัการ k
C Programing
52
แสดงผลเป็ นข้อความด้วย puts()
รู ปแบบ
puts(str);
str : เป็ นตัวแปรชนิดข้อความ หรื อข้อความ
ที่เขียนภายในเครื่ องหมาย “ “
C Programing
53
ตัวอย่าง การใช้คาสัง่ puts( )
#include <stdio.h>
char message[ ] = “C Language”;
main()
{
clrscr();
puts(message);
puts(“easy & fun”);
}
C Programing
54
รับข้อมูลทีละอักขระด้วย getchar()
getchar ( )
รู ปแบบ
variable = getchar();
variable : ชื่อของตัวแปรชนิดอักขระ ซึ่ ง
จะใช้เก็บค่าที่รับเข้ามาจาก Keyboard
C Programing
55
ตัวอย่างของการใช้ getchar()
#include <stdio.h>
char x;
main()
{
clrscr();
printf (“Enter you favorite letter : “);
x = getchar();
printf (“You insert : %c”,x);
}
C Programing
56
รับข้อมูลทีละอักขระด้วย getch()
getch ( )
รู ปแบบ
variable = getch();
variable : ชื่อของตัวแปรชนิดอักขระ ซึ่ ง
จะใช้เก็บค่าที่รับเข้ามาจาก Keyboard
C Programing
57
ตัวอย่างของการใช้ getch()
#include <stdio.h>
char x;
main()
{
clrscr();
printf (“Enter you favorite letter : “);
x = getch();
printf (“You insert : %c”,x);
}
C Programing
58
รับข้อมูลเป็ นข้อความด้วย gets()
gets ( )
รู ปแบบ
gets(str);
Str : ตัวแปรที่จะใช้ เก็บข้ อควำม ซึ่งเรำต้ อง
สร้ ำงเตรียมไว้ ก่อนที่จะเรียกใช้ Function gets()
C Programing
59
ตัวอย่างของการใช้ gets()
#include <stdio.h>
char message[30];
main()
{
clrscr();
printf (“Enter your message: ”);
gets (message);
printf (“Your message is %s”,message);
}
C Programing
60
เครื่องหมำย และกำรดำเนินกำรในภำษำ C
เครื่องหมำยกำรคำนวณทำงคณิตศำสตร์
• “+” เช่น z = x + y หมายถึง บวกค่าที่อยูใ่ นตัวแปร x และ y มา
เก็บไว้ที่ตวั แปร z
• “-” เช่น z = x - y หมายถึง ลบค่าที่อยูใ่ นตัวแปร x และ y มาเก็บ
ไว้ที่ตวั แปร z
• “ * ” เช่น z = x * y หมายถึง คูณค่าที่อยูใ่ นตัวแปร x และ y มา
เก็บไว้ที่ตวั แปร z
• “/” เช่น z = x / y หมายถึง หารค่าที่อยูใ่ นตัวแปร x และ y มาเก็บ
ไว้ที่ตวั แปร z
• “%” เช่น z = x % y หมายถึง หารค่าที่อยูใ่ นตัวแปร x และ y มา
เก็บไว้ที่ตวั แปร z โดยที่ค่าที่เก็บคือเศษที่ได้มาจากการหาร
C Programing
62
ตัวอย่าง
/* Ex 4.1*/
#include <Stdio.h>
int x = 5;
int y = 2;
int sum, diff, mul, mod;
float div;
main ()
{
sum = x + y;
diff = x - y;
mul = x * y;
div = x / y;
mod = x % y ;
}
C Programing
63
เครื่องหมำยดำเนินกำรทำงคณิตศำสตร์ ที่เพิม่ ลบทีละ 1 ค่ ำ
• “++” y = ++x หมายถึง บวกค่าในตัวแปร x ก่อน 1 ค่า
แล้วนาผลลัพธ์ที่ได้ไปเก็บไว้ที่ y
• หรื อ y = x++ หมายถึง นาค่าของ x ไปเก็บไว้ที่ y ก่อน แล้ว
ค่อยบวกค่าในตัวแปร x 1 ค่า
• “--” y = --x หมายถึง ลบค่าในตัวแปร x ก่อน 1 ค่าแล้วนา
ผลลัพธ์ที่ได้ไปเก็บไว้ที่ y
• หรื อ y = x-- หมายถึง นาค่าของ x ไปเก็บไว้ที่ y ก่อน แล้ว
ค่อยลบค่าในตัวแปร x 1 ค่า
C Programing
64
ตัวอย่าง
/* Ex 4.1*/
#include <Stdio.h>
int x,y = 5;
int z;
main ()
{
z = ++x;
z = y++;
}
x , y มีค่าเท่ากับ 5
z มีชนิดข้อมูลเป็ น Integer
x=z=6
z=5, y=6
C Programing
65
เครื่องหมำยดำเนินกำรทำงคณิตศำสตร์ ทใี่ ช้ ลดรูป
•
•
•
•
•
+= เช่น y+=x หมายถึง y = y+x
-= เช่น y-=x หมายถึง y = y-x
*= เช่น y*=x หมายถึง y = y*x
/= เช่น y/=x หมายถึง y = y/x
%= เช่น y%=x หมายถึง y = y%x
C Programing
66
เครื่ องหมายการเปรี ยบเทียบ
•
•
•
•
•
•
= = หมายถึง เท่ากับ เช่น x == y
!= หมายถึง ไม่เท่ากับ เช่น x != y
< หมายถึง น้อยกว่า เช่น x < y
<= หมายถึง น้อยกว่าหรื อเท่ากับ เช่น x <= y
> หมายถึง มากกว่า เช่น x > y
>= หมายถึง มากกว่า หรื อเท่ากับ เช่น x >= y
C Programing
67
เครื่ องหมายทางตรรกศาสตร์
• && เรี ยกว่า and
x
y
x && y
T
T
T
T
F
F
F
T
F
F
F
F
สรุ ป and จะได้ผลลัพท์ออกมาเป็ นจริ ง ถ้าค่าที่นามาก && กันเป็ นจริ งทั้งคู่
C Programing
68
เครื่ องหมายทางตรรกศาสตร์ (ต่อ)
|| เรี ยกว่า OR
x
y
x || y
T
T
T
T
F
T
F
T
T
F
F
F
สรุ ป OR จะได้ผลลัพท์ออกมาเป็ นเท็จ ถ้าค่าที่นามาก || กันเป็ นเท็จทั้งคู่
C Programing
69
เครื่ องหมายทางตรรกศาสตร์ (ต่อ)
! เรี ยกว่า NOT
x
!x
T
F
F
T
สรุ ป not จะได้ผลลัพท์ออกมาตรงกันข้ามกัน
C Programing
70
ทาความรู ้จกั กับนิพจน์ (Expression)
นิพจน์ คือ การนาข้อมูลซึ่ งอาจจะอยูใ่ นรู ปของค่าคงที่หรื อตัวแปรมาดาเนิ น
การโดยใช้เครื่ องหมายทางคณิ ตศาสตร์ เป็ นตัวสั่งการ
ตัวอย่ำงของนิพจน์
5 + 3 = 8 , b2 - 4ab , ax2 + bx +c
กำรเขียนนิพจน์ ในภำษำ C
นิพจน์ในภาษา C ก็คือ การนาข้อมูลหรื อตัวแปรในภาษา C มาดาเนินการ
โดยใช้เครื่ องหมายทางคณิ ตศาสตร์ ตรรกศาสตร์ หรื อเครื่ องหมายเปรี ยบเทียบ ที่มี
ความหมายในภาษา C เป็ นตัวสัง่ การ
C Programing
71
ตัวอย่าง การเขียนนิพจน์ในภาษา C
นิพจน์ ทางคณิตศาสตร์ ตามปกติ
นิพจน์ ทางคณิตศาสตร์ ในภาษา C
x+ y-z
x + y -z
2xy + 4z
2 * x * y+ 4 * z
x2 + 2x +1
a-b
c+d
x * x + 2 * x +1
(a - b) / (c + d)
2r
2*r
b2 - 4ac
b*b-4*a*c
x2
x * x / (x * y + 2)
xy + 2
C Programing
72
ลำดับของเครื่องหมำยในกำรคำนวณ
ลาดับความสาคัญ
เครื่ องหมาย
การดาเนินการ
1
()
ซ้ ายไปขวา
2
! , ++ , -- ,(typecast)
ขวาไปซ้ าย
3
*, / , %
ซ้ ายไปขวา
4
+, -
ซ้ ายไปขวา
5
<, <= , >, >=
ซ้ ายไปขวา
6
==, !=
ซ้ ายไปขวา
7
&&
ซ้ ายไปขวา
8
||
ซ้ ายไปขวา
9
*=,/=,%=,+=,-=
ซ้ ายไปขวา
C Programing
73
การเปลี่ยนชนิดตัวแปร
กำรเปลีย่ นชนิดตัวแปรโดยอัตโนมัติ
สาหรับการเปลี่ยนโดยอัตโนมัติ หรื อเรี ยกว่า Implicit Casting เราไม่ตอ้ ง
ทาอะไร ตัวแปรภาษา C จะจัดการให้ท้ งั หมด โดยใช้หลักการเปลี่ยนชนิดตัวแปร
ที่มีขนาดเล็กกว่า ไปเป็ นชนิดที่มีขนาดใหญ่กว่า
int x = 5;
float y = 2.5;
float z ;
main()
{
z = x +y;
}
ตัวแปรเลขจานวนเต็ม
ตัวแปรเลขทศนิยม
ตัวแปรเลขทศนิยม
บวกค่าของตัวแปรต่างชนิ ด
C Programing
74
การเปลี่ยนชนิดตัวแปร (ต่อ)
เปลีย่ นโดยใช้ คำสั่ ง
รู ปแบบ (typecast) variable;
typecast
variable
หมายถึง ชนิดของตัวแปรที่ตอ้ งการจะเปลี่ยนไปใช้
หมายถึง ตัวแปรหรื อข้อมูลที่ตอ้ งการจะเปลี่ยนชนิด
C Programing
75
ตัวอย่าง
int x = 32;
float y = 1.25e3;
char z = ‘C’
int num1;
float num2;
num1 = (int)y;
num1 = (int)z;
num1 = (int) -4.246;
num1=(int)’A’;
num2=(float)x;
num2=(float)-125;
num2=(float)z;
เปลี่ยนจาก float เป็ น int
เปลี่ยนจาก char เป็ น int
เปลี่ยนจาก float เป็ น int
เปลี่ยนจากตัวขระ เป็ น int
เปลี่ยนจาก int เป็ น float
เปลี่ยนจากเลขจานวนเต็มลบ เป็ น float
เปลี่ยนจาก char เป็ น float
C Programing
76
ข อควำมสั่ งควบคุม
ข อควำมสั่ งควบคุม
แบ งเป นกลุ มใหญ ๆ ได 2 กลุ ม คือ
1. ข อความสัง่ วงวน (loop statements)
2. ข อความสัง่ มีเงื่อนไข (conditional statements)
(Schildt 1968:63)
C Programing
78
ข อควำมสั่ งวงวน
ข อความสัง่ วงวนที่ใช งานในภาษาซี ได แก
1. ข อความสัง่ while
2. ข อความสัง่ do/while
3. ข อความสัง่ for
C Programing
79
ข อควำมสั่ ง while
ใช สัง่ ให ทางานเป นวงวนจนกว าเงื่อนไขที่กาหนด
จะเป นเท็จจึงจะหยุดการวน
รู ปแบบ
while (เงื่อนไข)
{
ข อความสัง่ ที่ 1 ;
ข อความสัง่ ที่ 2 ;
ข อความสัง่ ที่ 3 ง
. . . . . . . . . .;
..........;
}
C Programing
80
ทิศทางการทางานของ while
รู ปแสดงการทางาน
Condition
เท็จ
จริ ง
Statement ของ while
C Programing
81
ตัวอย างโปรแกรม
#include <stdio.h>
int i=1;
main ( )
{
while(i<=5)
{
printf(“COMPUTER\n”);
i++ ;
}
printf (“End of loop.\n”);
}
C Programing
82
ตัวอย ำงโปรแกรมพิมพ สูตรคูณ
#include <stdio.h>
int i=1;
main ( )
{
while (i<=12)
{
printf (“ 25x %d = %3d\n”,I,I*25);
I++ ;
}
printf (“End of loop.\n”);
}
C Programing
83
ข อควำมสั่ ง do/while
ข อความสัง่ วงวนแบบนี้จะเริ่ มทาตามข อความสัง่ ในบล็อกก
อน 1 รอบแล วจะตรวจสอบเงื่อนไขของข อความสัง่ while
ถ าเป น
จริ งก็วนกลับไปทาตามข อความสัง่ ทั้งหมดในบล็อก แล
วตรวจสอบเงื่อนไขอีก ถ าเป นเท็จก็จะเลิกการทาซ้ า แล วข
ามไปทาตามข้อความสัง่ ที่เหลือในโปรแกรมต อไปจนจบ
C Programing
84
รู ปแบบของคาสัง่ do/while
do
{
ข อความสัง่ ที่ 1 ;
ข อความสัง่ ที่ 2 ;
ข อความสัง่ ที่ 3 ง
. . . . . . . . . .;
..........;
}
while (เงื่อนไข);
C Programing
85
ทิศทางการทางานของ do/while
รู ปแสดงการทางาน
Statement ของ while
จริ ง
Condition
เท็จ
C Programing
86
ตัวอย างโปรแกรม
#include <stdio.h>
int i=1;
main ( )
{
do
{
printf(“COMPUTER\n”);
I ++;
}
while (i<=5);
printf (“End of loop.\n”);
}
C Programing
87
ตัวอย างโปรแกรมพิมพ สูตรคูณ
main ( )
{
int i=1;
do
{
printf (“ 25 x %2d = %3d\n”,i,i*25);
i++ ;
}
while (i<=10);
printf (“End of loop.\n”);
}
C Programing
88
ข อควำมสั่ ง for
ขั้นตอนกำรทำงำนของ for
1. กาหนดค่าเริ่ มต้นให้กบั ตัวแปร
2. กาหนดเงื่อนไขที่ใช้ในการตรวจสอบ
3. ปฏิบตั ิตามเงื่อนไข
3.1 ถ้าเงื่อนไขเป็ นจริ งให้ทาตามคาสัง่ ภายใน Loop for
3.2 ถ้าเงื่อนไขเป็ นเท็จให้ออกจาก Loop for
4. เพิ่ม/ลด ค่าของตัวแปร
5. ย้อนกลับไปทาที่ขอ้ 3
C Programing
89
รู ปแบบของ for
for (ค่าเริ่ มต้น;เงื่อนไขที่ใช้ตรวจสอบ;การเพิ่ม/ลดค่าตัวแปร)
{
statement1;
statement2;
statement3;
………………;
}
C Programing
90
ทิศทางการทางานของ for
กาหนดค่าเริ่ มต้น
เท็จ
Condition
จริ ง
ทางานตามคาสัง่ ของ for
เปลี่ยนแปลงค่าของตัวแปร
C Programing
91
ตัวอย างโปรแกรม
main ( )
{
int i:
for (i=1;i<=5;i++)
printf(“COMPUTER\n”);
printf(“End of loop.\n”);
printf(“ i = %d\n”,i);
}
C Programing
92
ตัวอย างโปรแกรม for ที่มี 2 ข อความสัง่ ขึ้น
ไป
main ( )
{
int i;
for(i=1;i<=5;i++)
{
printf (“COMPUTER\n”);
printf(“ i = %d\n”,i);
}
printf (“End of loop.\n”);
printf (“ i = %d\n”,i);
}
C Programing
93
ตัวอย่างโปรแกรม
main ( )
{
int i:
for (i=5;i>0;i --)
printf (”COMPUTER\n”);
printf (“End of loop.\n”);
}
C Programing
94
การกาหนดตัวแปรที่มีการเปลี่ยนค าไว มากกว า 1 ตัว
ในภาษาซีมีวิธีกาหนดตัวแปรไว ในเงื่อนไขได มากกว า
1 ตัว โดยใช , คัน่ ตัวแปรไว แต การกาหนดตัวแปรควบคุม
ในเงื่อนไขจะต องใช ตัวแปรตัวเดียวเท านั้น
C Programing
95
ตัวอย างกาหนดตัวแปร 2 ตัวไว ในวงเล็กหลัง
for
main ( )
{
int i,j;
for (i=1 , j=10;i<=5;i++,j+=10)
printf (“%d x%d = %d\n”,i,j,i*j);
printf (“End of loop.”)’
}
C Programing
96
ตัวอย างกาหนดตัวแปร 3 ตัวไว ในวงเล็กหลัง
for
main ( )
{
int i,j,k;
for iI=1,j=10,k=100;i<=5;i++,j+=10,k-=30)
printf (“%d x %2d x %4d =
%6d\n”,i,j,k,i*j*k);
printf (“End of loop.\n”);
}
C Programing
97
ข อควำมสั่ งมีเงือ่ นไข
ข อความสัง่ มีเงื่อนไขได แก
• if / else
• switch/case
C Programing
98
เครื่ องหมายเปรี ยบเทียบ
•
•
•
•
•
•
•
•
•
> มากกว า
>= มากกว าหรื อเท ากับ
< น อยกว า
<= น อยกว าหรื อเท ากับ
= = เท ากัน
!= ไม เท ากัน
&& AND (และ)
|| OR (หรื อ)
! NOT
C Programing
99
START
กาหนดค่าเริ่ มต้น
เท็จ
Condition
จริ ง
Statement ;
STOP
C Programing
Statement ;
100
ข อควำมสั่ ง if/else
If (เงื่อนไข)
{
ข อความสัง่ ; /* ท าเมื่อเงื่อนไขเป นจริ ง */
.........;
}
else
{
ข อความสัง่ ; /* ท าเมื่อเงื่อนไขเป นเท็จ */
..........;
}
C Programing
101
ข อความสัง่ if/else แบบซ อนกัน
(nested if)
If (เงื่อนไข 1)
{
ข อความสัง่ ; /* ท าเมื่อเงื่อนไข 1 เป นจริ ง */
ข อความสั่ง ;
.........;
}
else /* ท าเมื่อเงื่อนไข 1 เป นเท็จ */
if (เงื่อนไข 2)
{
ข อความสั่ง ; /* ท าเมื่อเงื่อนไข 2 เป นจริ ง */
ข อความสั่ง ;
.........;
}
else
{
ข อความสั่ง ; /* ท าเมื่อเงื่อนไข 2 เป นเท็จ */
ข อความสั่ง ;
. . . . . . . . . .;
}
C Programing
102
ข อความสัง่
Switch/case/bread/default
เป นข อความสั่ ง ประเภทที่ มี ก ารตรวจสอบค าของ
นิพจน หรื อค าของตัวแปรที่รับมาว าสอดคล องกับกรณี ใด
ก็จ ะปฏิ บ ัติ ง านตามกรณี น้ ัน แล วออกจากวงวน เมื่ อ พบค าสั่ง
break
เพื่อทาตาม ข อความสั่งที่มีต อจากวงวนนั้น
จนกว าจะจบโปรแกรม
C Programing
103
รู ปแบบ Switch/Case
switch (นิพจน หรื อ ตัวแปร)
{
case (ค าของนิพจน หรื อตัวแปร ค าที่ 1) :
ข อความสั่ง 1;
ข อความสั่ง 2;
. . . . . . . . . . .;
break;
case (ค าของนิพจน หรื อตัวแปร ค าที่ 2) :
ข อความสั่ง 1;
ข อความสั่ง 2;
..........;
break;
.
default :
ข อความสั่ง ;
}
C Programing
104