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
1001
1100
1000
1100
7
กำรแบ่งระดับตำมลักษณะ
และกำรทำงำน
่
1. ภำษำระดับตำ
(LOW
LEVEL Language) เป็ นภาษที่
่
่ ด
ใกล ้เคียงกับภาษาเครืองมากที
สุ
่ อติ
่ ดต่อสังงาน
่
สามารถเขียนคาสังเพื
MUL ่ R1, D
กับอุปกรณ์ H/W ได ้โดยตรงSTOซึR1,
งไดTEMP1
้แก่
LOD R1 ,B
ภาษา Assambly
ADD R1,TEMP1
ตัวอย่ำง ของ Assambly
C Programing
8
กำรแบ่งระดับตำมลักษณะ และ
กำรทำงำน (ต่อ)
2 . ภ ำ ษ ำ ร ะ ดับ สู ง ( High
Level Language)
เป็ นภาษาที่
ใกล เ้ คีย งกับ ภาษามนุ ษย ม์ ากที่สุ ด
่ าง ๆ จึงมักเป็ นภาษาอังกฤษ
คาสังต่
ทาให ้จดจาและเขียนได ้ง่าย
เช่น
ภาษา Pascal, Cobol, Fortran
หรือ Basic เป็ นต ้น
C Programing
9
ตัวอย่ำง ของ ภาษา Pascal
program Test1;
var Name : String;
begin
writeln(‘Input your Name’)
Readln(name);
Writeln(‘Hello ’,Name);
End.
C Programing
10
กำรแบ่งระดับตำมลักษณะ
(ต่อ)
3. ภำษำระดับกลำง (Middle
Level language) ภาษา C ถูก
้
้อดีและข ้อเสียของ
พัฒนาขึนโดยเอาข
่
2 ระดับมาใช ้ คือ คาสังของภาษา
C
่ มี
่ ความหมายใกล ้เคียงกับ
เป็ นคาสังที
ภาษามนุ ษย ์ และยังสามารถติดต่อกับ
H/W ได ้รวดเร็ว ดังนั้นภาษา C จึง
ถูกจัดให ้เป็ นภาษาระดับกลาง
C Programing
11
ตัวอย่าง ของ
ภำษำ C
#Include (stdio.h)
main()
{
printf(“Hello World\n”);
}
C Programing
12
หลักในการแปลภาษา
แบ่งได้ 2 วิธ ี คือ
1. แปลทีละคำสัง่
้
ตัวแปลลักษณะนี จะเรี
ยกว่า
Interpreter โดยจะทางานแบบเป็ น
่ อคาสัง่ นั่นคือจะอ่านคาสังจาก
่
คาสังต่
โปรแกรมมา 1 คาสัง่ และทางานตาม
่ ้นทันที
คาสั
งนั
Print “Hello Link \n ”;
Interpreter
print “How are you?”;
C Programing
Hello Link
13
หลักในการแปลภาษา (ต่อ)
้
2. แปลทีเดียวตังแต่
ตน
้ จนจบ
้
ตัวแปลลักษณะนี จะเรี
ยกว่า
่
Compiler หลักการทางานเริมจาก
คอมไพล ์เลอร ์จะทาการตรวจสอบคาสัง่
้
่ วา่ มีสว่ นใดผิด
ทังหมดของโปรแกรม
เพือดู
จากหลักการของภาษานั้นหรือไม่ ถ ้าไม่พบ
ข ้อผิดพลาดคอมไพเลอร ์จะทาการแปล
่ งหมดในโปรแกรมให
่
้ “Hello Link \n ”;
Hello Link อง
คาสัPrint
งทั
้เป็
นภาษาเครื
Compiler
How are You
print
“How
are
you?”;
แล ้วจึงทางาน
C Programing
14
้
ขันตอนการท
างานของ ภาษา
C
่ั
ฟังก ์ชนจากไลบรารี
ในภาษา C
่ Test.c
ไฟล ์ชือ
#Include
(stdio.h)
main()
{
printf(“Hell
o
Object File
Linker
C Compoler .obj
คอมไพล ์
test.obj
C Programing
ลิงค ์
Binary File
.exe
test.exe
15
การนาภาษา C ไปใช ้งาน
•สร ้างระบบปฏิบต
ั ก
ิ าร
•งานทางด ้านการควบคุม
อุปกรณ์ H/W
•สร ้างโปรแกรมสาหร ับจัดพิมพ ์
เอกสาร
C Programing
16
ต่อ
่
•สร ้างตัวแปรภาษาอืน ๆ
่
•สร ้างโปรแกรมเพือใช ้
่
สาหร ับงานทัว ๆ ไป
่
•เป็ นรากฐานทีสาคัญของ
ภาษาใหม่จานวนมาก
C Programing
17
แบบฝึ กหัด 1
1. ภาษา C คืออะไร ?
2. ภาษา C มีจด
ุ เด่นอะไรบ ้าง ?
3. ภาษาการเขียนโปรแกรมแบ่ง
ระดับตามลักษณะและการทางาน?
้ั
่ บ ? อธิบายมา
มีทงหมดกี
ระดั
พอใจ
4. หลักในการแปลภาษามีอะไรบ ้าง ?
้ั
5. ภาษา C มีขนตอนวิ
ธก
ี ารทางาน
C Programing
18
ภาษา C เบือ
้ งต ้น
โครงสร ้างของภาษา C
จะแบ่งออกเป็ น 2 ส่วน
่ นส่วนข
ดังนี ้ ส่วนหัวของโปรแกรมซึงเป็
1
2
่ ้น และประกาศ
การกาหนดค่าเริมต
่ ม่
ส่วนของตัวโปรแกรมซึงเริ
จาก
่
Main() ซึงอาจจะมี
การเรียกใช ้
่ ๆ ก็ได ้
Function อืน
C Programing
20
ตัวอย่าง การเขียนโปรแกรม
ภาษา C
Head
#include <stdio.h>
main()
{
Body
printf(“Hello
World\n”);
}
C Programing
21
ส่วนหัวของโปรแกรม
่ น
้
ส่วนหัวของโปรแกรมจะเริมต
้
ตังแต่
บรรทัดแรกของโปรแกรมจน
้ ดทีบรรทั
่
มาสินสุ
ดก่อน Main() จะ
แบ่งออกเป็ น 2 ส่วนดังนี ้
่ เศษ
1. คาสังพิ
(Preprocessor Directive)
2. การประกาศตัวแปร
C Programing
22
1
#include <stdio.h>
int x =4;
2
main()
{
printf(“Hello World\n”
}
C Programing
23
Preprocessor
directive
เป็ นคาสั่งรูปแบบหนึ่ งของภาษา C
ที่มี ค วามพิ เ ศษ โดยในขั้นตอนการ
แปลความหมายของโปรแกรม ถ า้ ตัว
แปลภาษา C
ตรวจพบว่ามีการใช ้
Preprocessor ภายในโปรแกรม ก็จะ
ถูกแปลความหมายเป็ นลาดับแรกก่อ น
่ น
่ ๆ
คาสังอื
รู ป แ บ บ ข อ ง ก า ร เ ขี ย น
้ น
Preprocessor
จะตอ้ งขึนต
้
C Programing
24
Preprocessor directive (ต่อ)
่ จั
่ ดอยู่ในกลุม
คาสังที
่ ของ Preprocesso
#Include
#Elid
#Line
#Define
#Else
#ifdef
#Pragma
C Programing
#Error
#ifndef
#i
#u
25
การประกาศตัวแปร
#include <Stdio.h>
int a= 5;
int b= 10;
int c;
main()
{
c= a+b;
printf (“sum = %d\n”, c);
}
C Programing
ตัวแปรจานวนเต็ม
หาผลบวก
แสดงผลบวก
26
่
รูปแบบการเขียนคาสังภาษา
C
่
• คำสังในภำษำ
C จะต้องเขียน
ด้วยตัวอ ักษรพิมพ ์เล็ก
่ องลงท้ำยด้วย ;
• ทุกคำสังต้
่ อย่ำง
• สำมำรถเขียนคำสังได้
อิสระ
เช่น int a = 5; int b = 10; printf (S
C Programing
27
คาบรรยายแทรก
(Comment)
การเขียนคาบรรยายแทรก หรือ
่ ยกว่า comment
ทีเรี
ไว ้ภายใน
่
โปรแกรมจะช่วยเพิมความเข
้าใจของ
ตั ว เ ร า ห รื อ เ พื่ อใ ห ้ค น ที่ ม า อ่ า น
โปรแกรมเข า้ ใจในสิ่ งที่ เราเขี ย น
ไ ด ้ ม า ก ขึ ้น ซึ่ ง รู ป แ บ บ จ ะ ใ ช ้
่
เครืองหมาย
/*
*/
ครอบคา
C Programing
28
#include <stdio.h>
main()
{
printf (“Hello World\n”);
/* Display message Hello
world to the Monitor */
}
C Programing
29
ข้อมู ลและตัวแปรใน
ภำษำ C
ชนิ ดของข ้อมูลในภาษา C
• ข ้อมูลเลขจานวนเต็ม (Integer)
• ข ้อมูลเลขทศนิ ยม (Float)
• ข ้อมูลชนิ ดเลขฐานแปด (Octal)
• ข ้อมูลชนิ ดเลขฐานสิบหก
(Hexadecimal)
• ข ้อมูลชนิ ดตัวอักขระ (Character)
C Programing
31
่
ตัวแปรและหน้าทีของตัวแปร
ตัวแปร (Variable) คือ การจองที่
เก็ บขอ้ มูลในหน่ วยความจาหลัก (RAM)
่
ของเครืองคอมพิ
วเตอร ์ พร ้อมกับกาหนด
่ ย กแทนหน่ วยความจ าในต าแหน่ ง
ชือเรี
นั้น
้
อย่างเช่น ถา้ เราสร ้างตัวแปรขึนมา
1 ตัวโดยใช ้ชือ่ num สาหร ับเก็บค่าของ
่ ้องการนาค่า 16 มาใช ้
ตัวเลข 16 เมือต
C Programing
32
ชนิ ดของตัวแปรในภาษา C
สามารถแบ่งได ้ 2 ประเภท
ใหญ่ ๆ คือ
้
1. ตัวแปรแบบพืนฐาน
่
่
(Scalar) ซึงหมายถึงทีเก็บ
ข ้อมูลได ้เพียงค่าเดียวเช่น
C Programing
33
ชนิดของตัวแปร ขนาด(Bits)
Char
8
unsignedChar
8
int
16
unsignedint
16
short
8
unsignedshort
8
long
32
unsignedlong
32
Float
32
double
64
longdouble
128
ขอบเขต
ความหมาย
-128ถึง127 เก็บขอมูลช
้ นิดอักขระ ใชพื้ นที
้ เก็บในหน่วยความจ
่
าประมาณ8Bits
เก็บขอมูลช
้ นิดอักขระ แบบไม่คิดเครืองหมาย
่
-32768-32767 เก็บขอมูลขนิดตัวเลขจ
้
านวนเต็มใชพื้ นที
้ 16
่ Bits
0-255
0-65535 เก็บขอมูลขนิดตัวเลขจ
้
านวนเต็มแบบไม่คิดเครืองหมาย
่
-128-127 เก็บขอมูลช
้ นิดตัวเลขจานวนเต็มแบบสนั ้ ใชพื้ นที
้ 8่ Bits
เก็บขอมูลช
้ นิดตัวเลขจานวนเต็มแบบสนั ้ แบบไม่คิดเครืองหมาย
่
-2147483648 เก็บขอมูลช
้ นิดเลขจานวนเต็มแบบยาวใชพื้ นที
้ 32
่ Bits
0-255
0-4294967296เก็บขอมูลช
้ นิดเลขจานวนเต็มแบบยาวแบบไม่คิดเครืองหมาย
่
เก็บขอมูลช
้ นิดตัวเลขทศนิยมใชพื้ นที
้ 32
่ Bitเก็บทศนิยม6ตัว
เก็บขอมูลช
้ นิดตัวเลขทศนิยมใชพื้ นที
้ B่ itsเก็บทสนิยม12ตัว
เก็บขอมูลช
้ นิดตัวเลขทศนิยมใชพื้ นที
้ 128
่ Bitเก็บทศนิยม24ตัว
C Programing
34
รูปแบบการประกาศตัวแปร
Type variable;
่
type : ชนิ ดของตัวแปรทีจะ
สร ้างขึน้
่
่
อของตั
ว
แปรที
variable : ชื
int num;
ต ้องการจะใชfloat
้
y;
ต ัวอย่ำง char c;
double salary;
C Programing
35
รูปแบบการประกาศตัวแปร (ต่อ)
Type variable = value;
long million =
1000000;
int oct = 0234;
ตัวอย่าง
int hex = 0x45;
float temp =
15.236;
C Programing
36
รูปแบบการประกาศตัวแปร (ต่อ)
Type variable-1,
variable-2,... variable-n;
่
้
type : ชนิ ดของตัวแปรทีจะสร ้างขึน
่
variable-1... Variable-n : ชือของตั
วแป
int
num1,num2,num
ตัวอย่าง 3;
float point1,
C Programing
37
้ อตั
่ วแปร
หลักการตังชื
้ ้นด ้วยตัวอักษร A-Z หรือ a-z
• ต ้องขึนต
่
หรือเครืองหมาย
_ เท่านั้น
่ วแปรให ้ใช ้ตัวอักษร A-Z หรือ
• ภายในชือตั
a-z หรือ 0-9 หรือ _
• ห ้ามเว ้นช่องว่างภายในตัวแปร หรือใช ้
สัญลักษณ์นอกเหนื อจากข ้อ 2
• การใช ้ตัวอักษรตัวใหญ่ และตัวเล็ก มี
ความแตกต่างกัน
้ อตั
่ วแปรซากั
้ บคาสงวน
• ห ้ามตังชื
C Programing
38
คาสงวน (Reserved
Word)
auto
break
case
char
const
continue default do
double
else
if
int
long
register
return
short
signed sizeof
C Programing
39
้ อตั
่ วแปร
ตัวอย่างการตังชื
class_room
hi-tech
9number
_hello123
age#
right!
last name
ถู กต้อง
ไม่ถูกต้อง
ไม่ถูกต้อง
ถู กต้อง
ไม่ถูกต้อง
C Programing
ไม่ถูกต้อง
ไม่ถูกต้อง
40
ตัวแปรสาหร ับข ้อมูลชนิ ด
ข ้อความ
char variable[n];
n
: คือจานวนของตัวแปรชนิ ดอักขระ
่
้ โดยถา้ ขอ้ ความมีอก
(Char)
ทีจะสร
้างขึน
ั ขระ
้
ทังหมด
10 ตัว จะตอ้ งใส่จ านวนเป็ น 11 เนื่ องจาก
ภาษา C มีข ้อกาหนดว่าจะเก็บข ้อมูลชนิ ดข ้อความ
่
ตัวสุดท ้ายต ้องเป็ นอักขระว่าง ซึงจะเขี
ยนแทนด ้วย \0
่
เพือบอกให
้รู ้ว่าเป็ นข ้อความ
่
้ อให
่ ้
char name
[10];วแปร โดยต ้องตังชื
Variable
: ชือของตั
้ อ่
ถูกต ้องตามหลักการตังชื
C Programing
41
่ ใช
่ ้ในการแสดงผล และการ
คาสังที
ร ับข ้อมูล
printf()
รู ปแบบ printf (“
control”,value);
C Programing
42
่ ้ควบคุม
control : ส่วนทีใช
่ อยู่ 3 แบบด ้วยกัน
การแสดงผล ซึงมี
คือ ข ้อความธรรมดา รหัสควบคุม
รูปแบบ (เช่น %d, %f)
และ
อักขระควบคุมการแสดงผล(เช่น \n)
่ ้ควบคุมการแสดงผล
โดยส่วนทีใช
้ ้องเขียนไว ้ภายใน “ “
เหล่านี จะต
value : คือ ค่าของ
่
เครืองหมาย
นิ พจน์ หรือมาโครที่
C Programing
43
ตัวอย่าง
/* Ex1 */
#include <stdio.h>
main()
{
printf (“Nice to meet
you!”);
C Programing
44
ตัวอย่าง
/* Ex2 */
#include <stdio.h>
int num = 32;
main()
{
printf (num);
}
C Programing
45
รหัสรูปแบบ (Format Code)
• %d สาหร ับการแสดงผลตัวเลขจานวนเต็ม
• %u สาหร ับการแสดงผลตัวเลขจานวนเต็ม
บวก
• %o สาหร ับการแสดงผลออกมาในรูปแบบ
ของเลขฐานแปด
• %x สาหร ับการแสดงผลออกมาในรูปแบบ
ของเลขฐานสิบหก
• %f สาหร ับการแสดงผลตัวเลขทศนิ ยม
• %e สาหร ับการแสดงผลตัวเลขทศนิ ยม
ออกมาในรูปแบบ E
C Programing
46
ตัวอย่าง
/* 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
47
อักขระควบคุมการแสดงผล
้
• \n ขึนบรรทั
ดใหม่
• \t เว ้นช่องว่างเป็ นระยะ 1 Tab (6
ตัวอักษร)
• \r กาหนดให ้ Cursor ไปอยูต
่ ้น
บรรทัด
• \f เว ้นช่องว่างเป็ นระยะ 1 หน้าจอ
C Programing
48
ตัวอย่าง
#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
49
ร ับข ้อมูลจาก Keyboard ด ้วย
scanf()
Scanf ( )
รูปแบบ scanf (“ format “ ,
&variable);
C Programing
50
format : เป็ นการกาหนด
่ บั เขา้ มา
รูป แบบ ของข อ้ มู ล ทีจะร
โดยจะใช ร้ หัส รู ป แบบเหมื อ นกับ
printf ()
่ ้
variable :
ตัวแปรทีใช
สาหรบั รบั ข ้อมูลเข ้ามา โดยจะต ้อง
่
เขีย นน าหน้า ด ว้ ยเครืองหมาย
&
C Programing
51
ตัวอย่าง
/* EX 4 */
#include <stdio.h>
int age;
main ()
{
clrscr( );
printf (“How Old are
you?”);
scanf (“%d”,&age);
printf (“You are %d years
C Programing
52
แสดงผลทีละอักขระด ้วย
putchar()
รู ปแบบ
putchar(char);
char : เป็ นตัวแปรชนิ ด char หรือ
่ ยนภายในเครืองหมาย
่
อักขระทีเขี
‘‘
C Programing
53
ตัวอย่าง การใช ้คาสัง่ putchar( )
#include <stdio.h>
char first = ‘0’;
main()
{
clrscr();
putchar(first);
putchar(‘k’);
}
เรียกใช ้ Function C
แสดงข ้อความในตัวแปร
แสดงตัวอัการ k
C Programing
54
แสดงผลเป็ นข ้อความด ้วย
puts()
รู ปแบบ
puts(str);
str : เป็ นตัวแปรชนิ ดข ้อความ
่ ยนภายใน
หรือข ้อความทีเขี
่
เครืองหมาย
““
C Programing
55
ตัวอย่าง การใช ้คาสัง่ puts( )
#include <stdio.h>
char message[ ] = “C
Language”;
main()
{
clrscr();
puts(message);
puts(“easy & fun”);
C Programing
56
ร ับข ้อมูลทีละอักขระด ้วย
getchar()
getchar ( )
รูปแบบ
variable =
getchar();
่
variable : ชือของตั
วแปร
่
ชนิ ดอักขระ ซึงจะใช
้เก็บค่าทีร่ ับเข ้า
มาจาก Keyboard
C Programing
57
ตัวอย่างของการใช ้ getchar()
#include <stdio.h>
char x;
main()
{
clrscr();
printf (“Enter you favorite
letter : “);
x = getchar();
printf (“You insert : %c”,x);
}
C Programing
58
ร ับข ้อมูลทีละอักขระด ้วย
getch()
getch ( )
รูปแบบ
variable =
getch();
่
variable : ชือของตั
วแปร
่
้เก็บค่าทีร่ ับเข ้า
ชนิ ดอักขระ ซึงจะใช
มาจาก Keyboard
C Programing
59
ตัวอย่างของการใช ้ getch()
#include <stdio.h>
char x;
main()
{
clrscr();
printf (“Enter you favorite
letter : “);
x = getch();
printf (“You insert : %c”,x);
C Programing
60
ร ับข ้อมูลเป็ นข ้อความด ้วย
gets()
gets ( )
รูปแบบ
gets(str);
่
Str : ตัวแปรทีจะใช้
เก็บ
่
ข้อควำม ซึงเรำต้
องสร ้ำงเตรียม
่
ไว้กอ
่ นทีจะเรี
ยกใช้ Function
C Programing
61
ตัวอย่างของการใช ้ gets()
#include <stdio.h>
char message[30];
main()
{
clrscr();
printf (“Enter your message:
”);
gets (message);
printf (“Your message is
%s”,message);
C Programing
62
แบบฝึ กหัด
่
้
1. จงเขียนโปรแกรมเพือแสดงค่
าหล่านี ออก
ทางจอภาพ
่ ้องการให ้แสดงออก 200,
ค่าทีต
10.33745, A, Thailand
่
2. ในการกรอกข ้อมูลเพือสมั
ครเข ้าเรียนของ
่ ้องการให ้
สถานกวดวิชาแห่งหนึ่ ง ข ้อมูลทีต
ผูส้ มัครกรอกประกอบด ้วย
่
ชือและนามสกุ
ล
่ ่ เบอร ์โทรศัพท ์
อายุ เพศ ทีอยู
C Programing
63
แบบฝึ กหัด
่ ับตัวอักษร
1. จงเขียนโปรแกรมเพือร
จากแป้ น Keyboard เข ้ามา 1 ตัว แล ้วบอก
ว่าตัวอักษรทีร่ ับเข ้ามานั้นเป็ นตัวอัการใด
เช่น
Confirm your answer
[y/n] : y
you choose y
่ ดเงินทอน
2. จงเขียนโปรแกรมเครืองคิ
ของร ้านค ้า โดยให ้ผูใ้ ช ้กรอกราคาสินคา้ และ
่ กค ้าจ่ายเข ้ามา จากนั้น
จานวนเงินทีลู
่
โปรแกรมจะทาการคานวณเพือหาจ
านวนเงิน
C Programing
64
่
เครืองหมำย
และกำร
ดำเนิ นกำรในภำษำ C
่
ำนวณทำง
เครืองหมำยกำรค
คณิ ตศำสตร ์
่
• “+” เช่น z = x + y หมายถึง บวกค่าทีอยูใ่ น
่ วแปร z
ตัวแปร x และ y มาเก็บไว ้ทีตั
่ ่ในตัว
• “-” เช่น z = x - y หมายถึง ลบค่าทีอยู
่ วแปร z
แปร x และ y มาเก็บไว ้ทีตั
่ ใ่ น
• “ * ” เช่น z = x * y หมายถึง คูณค่าทีอยู
่ วแปร z
ตัวแปร x และ y มาเก็บไว ้ทีตั
่ ่ในตัว
• “/” เช่น z = x / y หมายถึง หารค่าทีอยู
่ วแปร z
แปร x และ y มาเก็บไว ้ทีตั
่ ่ใน
• “%” เช่น z = x % y หมายถึง หารค่าทีอยู
่ วแปร z โดยทีค่
่ าที่
ตัวแปร x และ y มาเก็บไว ้ทีตั
่ ้มาจากการหาร
เก็บคือเศษทีได
C Programing
66
ตัวอย่าง
/* 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
67
่
เครืองหมำยด
ำเนิ นกำรทำงคณิ ตศำสตร ์ที่
่ ลบทีละ 1 ค่ำ
เพิม
• “++” y = ++x หมายถึง บวกค่าในตัวแปร x
่ ้ไปเก็บไว ้ที่ y
ก่อน 1 ค่า แล ้วนาผลลัพธ ์ทีได
• หรือ y = x++ หมายถึง นาค่าของ x ไปเก็บไว ้ที่
y ก่อน แล ้วค่อยบวกค่าในตัวแปร x 1 ค่า
• “--” y = --x หมายถึง ลบค่าในตัวแปร x ก่อน
่ ้ไปเก็บไว ้ที่ y
1 ค่าแล ้วนาผลลัพธ ์ทีได
• หรือ y = x-- หมายถึง นาค่าของ x ไปเก็บไว ้ที่ y
ก่อน แล ้วค่อยลบค่าในตัวแปร x 1 ค่า
C Programing
68
ตัวอย่าง
/* Ex 4.1*/
#include <Stdio.h>
int x,y = 5;
int z;
main ()
{
z = ++x;
z = y++;
}
x , y มีคา่ เท่ากับ 5
z มีชนิ ดข ้อมูลเป็ น Intege
x=z=6
z=5, y=6
C Programing
69
่
เครืองหมำยด
ำเนิ นกำรทำงคณิ ตศำสตร ์ที่
ใช้ลดรู ป
•
•
•
•
•
+=
-=
*=
/=
%=
เช่น 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
70
่
เครืองหมายการเปรี
ยบเทียบ
•
•
•
•
•
•
= = หมายถึง เท่ากับ เช่น x == y
!= หมายถึง ไม่เท่ากับ เช่น x != y
< หมายถึง น้อยกว่า เช่น x < y
<= หมายถึง น้อยกว่าหรือเท่ากับ เช่น x <= y
> หมายถึง มากกว่า เช่น x > y
>= หมายถึง มากกว่า หรือเท่ากับ เช่น x >= y
C Programing
71
่
เครืองหมายทางตรรกศาสตร
์
• && เรียกว่า and
x
y
x&&y
T
T
T
T
F
F
F
T
F
F
F
F
่ ามาก && ก
สรุป and จะได ้ผลลัพท ์ออกมาเป็ นจริง ถ ้าค่าทีน
C Programing
72
่
เครืองหมายทางตรรกศาสตร
์ (ต่อ)
|| เรียกว่า OR
x
y
x||y
T
T
T
T
F
T
F
T
T
F
F
F
่ ามาก || กันเป
สรุป OR จะได ้ผลลัพท ์ออกมาเป็ นเท็จ ถ ้าค่าทีน
C Programing
73
่
เครืองหมายทางตรรกศาสตร
์ (ต่อ)
! เรียกว่า NOT
x
!x
T
F
F
T
สรุป not จะได ้ผลลัพท ์ออกมาตรงกันข ้ามกัน
C Programing
74
ทาความรู ้จักกับนิ พจน์
(Expression)
่
่ อ
นิ พจน์ คือ การนาข ้อมูลซึงอาจจะอยู
ใ่ นรูปของค่าคงทีหรื
่
่
การโดยใช ้เครืองหมายทางคณิ
ตศาสตร ์เป็ นตัวสังการ
ตวั อย่ำงของนิ พจน์
5 + 3 = 8 , b2 - 4ab , ax2 + bx +c
กำรเขียนนิ พจน์ในภำษำ C
นิ พจน์ในภาษา C ก็คอื การนาข ้อมูลหรือตัวแปรในภาษา
่
่
โดยใช ้เครืองหมายทางคณิ
ตศาสตร ์ ตรรกศาสตร ์ หรือเครืองหมาย
่
ความหมายในภาษา C เป็ นตัวสังการ
C Programing
75
ตัวอย่าง การเขียนนิ พจน์ในภาษา C
นิพจน์ทำงคณิตศำสตรตำมปก
์
ติ
x+y-z
นิพจน์ทำงคณิตศำสตรใน
์ ภำษำ C
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
76
่
ลำด ับของเครืองหมำยในกำร
คำนวณ
ลำดับควำมสำคัญ
1
่
เครืองหมำย
()
2
! ,++,--,(typecast)
3
*,/,%
4
+,-
5
<,<=,>,>=
6
==,!=
7
&&
8
||
้ ปขวา
ซายไ
้ ปขวา
ซายไ
9
*=,/=,%=,+=,-=
้ ปขวา
ซายไ
C Programing
กำรดำเนินกำร
้ ปขวา
ซายไ
ขวาไปซาย้
้ ปขวา
ซายไ
้ ปขวา
ซายไ
้ ปขวา
ซายไ
้ ปขวา
ซายไ
77
่
การเปลียนชนิ
ดตัวแปร
่
กำรเปลียนชนิ
ดตัวแปรโดยอ ัตโนมัต ิ
่
สาหร ับการเปลียนโดยอั
ตโนมัต ิ หรือเรียกว่า Implicit Ca
้
ทาอะไร ตัวแปรภาษา C จะจัดการให ้ทังหมด
โดยใช ้หลักการเปล
่ ขนาดเล็กกว่า ไปเป็ นชนิ ดทีมี
่ ขนาดใหญ่กว่า
ทีมี
int x = 5;
float y = 2.5;
float z ;
main()
{
z = x +y;
}
ตัวแปรเลขจานวนเต
ตัวแปรเลขทศนิ ยม
ตัวแปรเลขทศนิ ยม
บวกค่าของตัวแปรต่า
C Programing
78
่
การเปลียนชนิ
ดตัวแปร (ต่อ)
่
เปลียนโดยใช้
คำสัง่
รูปแบบ
(typecast) variable;
typecast
่ ้องการจะ
หมายถึง ชนิ ดของตัวแปรทีต
variable
่ ้องการจะ
หมายถึง ตัวแปรหรือข ้อมูลทีต
่
เปลียนไปใช
้
่
เปลียนชนิ
ด
C Programing
79
ตัวอย่าง
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
่
านวนเต็มลบ เ
เปลียนจากเลขจ
่
เปลียนจาก
char เป็ น float
C Programing
80
แบบฝึ กหัด
่
1. จงเขียนโปรแกรมเพือหาผลลั
พธ ์ของ นิ พจน์ตอ
่ ไปนี ้
1.1 3x2 + y2 + 2y
1.2 2x - y
ถ ้า x = 5 และ y=3
6
1.3 2x + 3y + 15
่ านวณหาพืนที
้ สามเหลี
่
่
2. จงเขียนโปรแกรมเพือค
ยม
โดยกาหนด
และ Height จาก Keyboard
สูตร Area = 0.5 * Base * Height
C Programing
81
่
ข อควำมสังควบคุ
ม
่
ข อควำมสังควบคุ
ม
แบ งเป นกลุ มใหญ ๆ ได 2 กลุ ม คือ
่
1. ข อความสังวงวน
(loop statements)
่ เงือนไข
่
2. ข อความสังมี
(conditional
statements) (Schildt 1968:63)
C Programing
83
่
ข อควำมสังวงวน
่
่
ใช
ข อความสังวงวนที
งานในภาษาซี ได แก
1. ข อความสัง่ while
2. ข อความสัง่ do/while
3. ข อความสัง่ for
C Programing
84
ข อควำมสัง่ while
่
ใช สังให
ทางานเป นวงวนจนกว า
่
่ าหนดจะเป นเท็จจึงจะหยุดการวน
เงือนไขที
ก
รูปแบบ
่
while (เงือนไข)
{
่ ่1;
ข อความสังที
่ ่2;
ข อความสังที
่ ่3ง
ข อความสังที
. . . . . . . . . .;
..........;
}
C Programing
85
ทิศทางการทางานของ while
รูปแสดงการทางาน
Condition
เท็จ
จริง
Statement ของ while
C Programing
86
ตัวอย างโปรแกรม
#include <stdio.h>
int i=1;
main ( )
{
while(i<=5)
{
printf(“COMPUTER\n”);
i++ ;
}
printf (“End of loop.\n”);
}
C Programing
87
ต ัวอย ำงโปรแกรมพิมพ สูตรคูณ
#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
88
ข อควำมสัง่ do/while
่
้
่ าตามข
ข อความสังวงวนแบบนี
จะเริ
มท
่
อความสังในบล็
อกก อน 1 รอบแล วจะ
่
ตรวจสอบเงือนไขของข
อความสัง่ while ถ
าเป น
่ งหมดใน
้
จริงก็วนกลับไปทาตามข อความสังทั
่
บล็อก แล วตรวจสอบเงือนไขอี
ก ถ าเป นเท็จ
ก็จะเลิกการทาซา้ แล วข ามไปทาตามข ้อความ
่ เหลื
่ อในโปรแกรมต อไปจนจบ
สังที
C Programing
89
รูปแบบของคาสัง่ do/while
do
{
่ ่1;
ข อความสังที
่ ่2;
ข อความสังที
่ ่3ง
ข อความสังที
. . . . . . . . . .;
..........;
}
่
while (เงือนไข);
C Programing
90
ทิศทางการทางานของ do/while
รูปแสดงการทางาน
Statement ของ while
จริง
Condition
เท็จ
C Programing
91
ตัวอย างโปรแกรม
#include <stdio.h>
int i=1;
main ( )
{
do
{
printf(“COMPUTER\n”);
I ++;
}
while (i<=5);
printf (“End of loop.\n”);
}
C Programing
92
ตัวอย างโปรแกรมพิมพ สูตรคูณ
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
93
ข อควำมสัง่ for
้
ขันตอนกำรท
ำงำนของ for
่ ้นให ้กับตัวแปร
1. กาหนดค่าเริมต
่
่ ้ในการตรวจสอบ
2. กาหนดเงือนไขที
ใช
่
3. ปฏิบต
ั ต
ิ ามเงือนไข
่
่
3.1 ถา้ เงือนไขเป็
นจริงใหท
้ าตามคาสังภายใน
Loop for
่
3.2 ถ ้าเงือนไขเป็
นเท็จให ้ออกจาก Loop for
่
4. เพิม/ลด
ค่าของตัวแปร
่
C Programing
94
รูปแบบของ for
่ ้น;เงือนไขที
่
่ ้ตรวจสอบ;การเพิม/ลด
่
for (ค่าเริมต
ใช
ค่าตัวแปร)
{
statement1;
statement2;
statement3;
………………;
}
C Programing
95
ทิศทางการทางานของ for
่ ้น
กาหนดค่าเริมต
เท็จ
Condition
จริง
่
ทางานตามคาสังของ
for
่
เปลียนแปลงค่
าของตัวแปร
C Programing
96
ตัวอย างโปรแกรม
main ( )
{
int i:
for (i=1;i<=5;i++)
printf(“COMPUTER\n”);
printf(“End of loop.\n”);
printf(“ i = %d\n”,i);
}
C Programing
97
่ 2ข
ตัวอย างโปรแกรม for ทีมี
่ นไป
้
อความสังขึ
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
98
ตัวอย่างโปรแกรม
main ( )
{
int i:
for (i=5;i>0;i --)
printf (”COMPUTER\n”);
printf (“End of loop.\n”);
}
C Programing
99
่ การเปลียนค
่
การกาหนดตัวแปรทีมี
าไว
มากกว า 1 ตัว
่
ในภาษาซีมวี ธิ ก
ี าหนดตัวแปรไว ในเงือนไข
่ วแปรไว
ได มากกว า 1 ตัว โดยใช , คันตั
่
แต การกาหนดตัวแปรควบคุมในเงือนไขจะต
องใช ตัวแปรตัวเดียวเท านั้น
C Programing
100
ตัวอย างกาหนดตัวแปร 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
101
ตัวอย างกาหนดตัวแปร 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
102
แบบฝึ กหัด
่
่
่ ใ้ ช ้กรอก
1. จงเขียนโปรแกรมเพือหาค่
าเฉลียของตั
วเลขทีผู
เข ้ามาในโปรแกรมจานวน 10 ตัว โดยแสดงผลการหา
่
ค่าเฉลียออกทางจอภาพ
่ กค ้าสังทั
่ งหมด
้
2. จงเขียนโปรแกรมคานวณค่าอาหารทีลู
โดยภายร ้านมีรายการอาหารดังนี ้
-
Pizza
Hamburger
Sandwich
150.50.25.-
่ อจากลู
้
โปรแกรมจะต ้องวนร ับรายการสังซื
กค ้า (1่ กค ้าต ้องการโปรแกรมจึง
3) จนกว่าจะครบตามทีลู
จะทาการคิดเงินรวมออกมาให ้
C Programing
103
่ เงื่อนไข
ข อควำมสังมี
่ เงือนไขได
่
ข อความสังมี
แก
• if / else
• switch/case
C Programing
104
่
เครืองหมายเปรี
ยบเทียบ
•
•
•
•
•
•
•
•
•
> มากกว า
>= มากกว าหรือเท ากับ
< น อยกว า
<= น อยกว าหรือเท ากับ
= = เท ากัน
!= ไม เท ากัน
&& AND (และ)
|| OR (หรือ)
! NOT
C Programing
105
START
่ ้น
กาหนดค่าเริมต
เท็จ
Condition
จริง
Statement ;
STOP
C Programing
Statement ;
106
ข อควำมสัง่ if/else
่
If (เงือนไข)
{
่ อนไขเป
่
ข อความสัง่ ; /* ท าเมือเงื
นจริง */
.........;
}
else
{
่ อนไขเป
่
ข อความสัง่ ; /* ท าเมือเงื
นเท็จ */
..........;
}
C Programing
107
ข อความสัง่ if/else แบบซ อนกัน
(nested if)
่
If (เงือนไข
1)
{
่ อนไข
่
ข อความสัง่ ; /* ท าเมือเงื
1 เป นจริง */
ข อความสัง่ ;
.........;
}
่ อนไข
่
else /* ท าเมือเงื
1 เป นเท็จ */
่
if (เงือนไข
2)
{
่ อนไข
่
ข อความสัง่ ; /* ท าเมือเงื
2 เป นจริง */
ข อความสัง่ ;
.........;
}
else
{
่ อนไข
่
ข อความสัง่ ; /* ท าเมือเงื
2 เป นเท็จ */
ข อความสัง่ ;
. . . . . . . . . .;
C Programing
}
108
ข อความสัง่
Switch/case/bread/default
เ ป น ข อ ค ว า ม สั่ ง ป ร ะ เ ภ ท ที่ มี ก า ร
ตรวจสอบค าของนิ พ จน หรือ ค าของตัว
แปรที่ร บ
ั มาว าสอดคล องกับ กรณี ใดก็ จ ะ
ปฏิบ ัต ิง านตามกรณี น้ั น แล วออกจากวงวน
่
่ าตาม ข อความ
เมือพบค
เพือท
าสัง่ break
สั่ ง ที่ มี ต อ จ า ก ว ง ว น นั้ น จ น ก ว า จ ะ จ บ
โปรแกรม
C Programing
109
รูปแบบ Switch/Case
switch (นิ พจน หรือ ตัวแปร)
{
case (ค าของนิ พจน หรือตัวแปร ค าที่ 1) :
ข อความสัง่ 1;
ข อความสัง่ 2;
. . . . . . . . . . .;
break;
case (ค าของนิ พจน หรือตัวแปร ค าที่ 2) :
ข อความสัง่ 1;
ข อความสัง่ 2;
..........;
break;
.
default :
ข อความสัง่ ;
}
C Programing
110