กำรเขียนโปรแกรม ด้ วยภาษา โดย...ครูทองสุ ข เอีย่ มศิริ ++ สำนักงำนเขตพืน้ ที่กำรศึกษำฉะเชิงเทรำ เขต 1 บทที่ 1 ภาษาซีเบือ้ งต้น โดย...ครูทองสุ ข เอีย่ มศิริ โรงเรียนเบญจมรำชรังสฤษฎิ์ 3 ชนะสงสำรวิทยำ สพท.ฉะเชิงเทรำ เขต 1

Download Report

Transcript กำรเขียนโปรแกรม ด้ วยภาษา โดย...ครูทองสุ ข เอีย่ มศิริ ++ สำนักงำนเขตพืน้ ที่กำรศึกษำฉะเชิงเทรำ เขต 1 บทที่ 1 ภาษาซีเบือ้ งต้น โดย...ครูทองสุ ข เอีย่ มศิริ โรงเรียนเบญจมรำชรังสฤษฎิ์ 3 ชนะสงสำรวิทยำ สพท.ฉะเชิงเทรำ เขต 1

ด้วย
ภาษา
การเขียนโปรแ
โดย...ครู ทองสุข
++
่
เอียมศิ
ริ
้ การศึ
่
สานักงานเขตพืนที
กษาฉะเชิง
่
บทที 1
ภาษาซี
้
เบืองต้น
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
มีอะไรบ้างใน
บทนี ้
1.1 บทนาการเขียนโปรแกรม
1.2 ซอฟต ์แวร ์คืออะไร?
1.3 ภาษาคอมพิวเตอร ์
่ ยนจะทางาน
1.4 โปรแกรมทีเขี
อย่างไร?
่ จากการ
1.5 ไฟล ์โปรแกรมทีได้
แปลภาษา
1.7 ประว ัติของภาษาซี
1.8 พัฒนาการของคอมไพเลอร ์
ภาษาซี
์
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
1.1 บทนาการเขียน
โปรแกรม
ย...ครู ทองสุข
่
• เราเขียนโปรแกรมไปเพืออะไร
่ ยนอยู ่บงั คับวิชา
– เพราะว่าในหลักสู ตรทีเรี
นี ้
– เพราะอาจารย ์ให้เขียนโปรแกรมส่ง
อาทิตย ์หน้า
่ นความรู ้ด้าน
– เพราะอยากเพิมพู
คอมพิวเตอร ์
– เพราะต้องการเขียนโปรแกรมไว้ใช้เอง
– ฯลฯ
• การเขียนโปรแกรมก็เหมือนการแก้
์ปั ญหา เราจะต้องทราบว่าเรา
่ โจทย
เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
1.2 ซอฟต ์แวร ์คือ
อะไร ?
• ซอฟต ์แวร ์ (Software) หรือ
โปรแกรมคอมพิวเตอร ์
(Computer Program) คือ
่ กเขียนขึนมาจาก
้
โปรแกรมทีถู
ภาษาคอมพิวเตอร ์และถู กแปลงให้
่
่
เป็ นภาษาเครืองเพื
อให้
คอมพิวเตอร ์ทางานอย่างใดอย่าง
่
หนึ่ งตามทีเราต้
องการ
• แบ่งออกเป็ น 2 ประเภทใหญ่ๆ คือ
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
– System software
System
Software
่ างานเกียวกั
่
• เป็ นโปรแกรมทีท
บ
่
ระบบคอมพิวเตอร ์ มีหน้าทีในการ
ควบคุมอุปกรณ์ฮาร ์ดแวร ์ทุกชนิ ด
และจัดตารางการทางานทัง้
่ างาน
ฮาร ์ดแวร ์และซอฟต ์แวร ์ทีท
่ คอ
กับฮาร ์ดแวร ์ทุกตัวซึงก็
ื
ระบบปฏิบต
ั ก
ิ าร(Operating
System:OS) นั่นเอง
• ได้แก่ DOS, Windows, Linux,
่
OS,
OS/2 ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
ย...ครู ทองสุข เอีMac
ยมศิ
ร ิ โรงเรี
ยนเบญจมราชร
Application
Software
่ กสร ้างขึนเพื
้
่ างาน
• เป็ นโปรแกรมทีถู
อท
่ ถูกเขียนขึนจากโปรแกรม
้
ด้านต่างๆ ซึงก็
ภาษาต่างๆ
• เช่น PowerDVD, Windows Media
Player, Winamp, Word, Calculator,
SPSS
• สามารถแบ่งออกได้หลายประเภทดังนี ้
ย...ครู ทองสุข
– โปรแกรมพิมพ ์งาน
– โปรแกรมเกม
– โปรแกรมยู ทล
ิ ต
ิ ี้
่ โปรแกรมมั
– ยมศิ
ลติมเี ดีย ังสฤษฎิ ์ 3
เอี
ร ิ โรงเรียนเบญจมราชร
ชนะสงสารวิทยา สพท.ฉะเชิงเ
1.3
ภาษาคอมพิวเต
์ น 2 ประเภทใหญ่ๆ คือ
• แบ่งอร
ออกเป็
่ ได้แก่ ภาษาเครือง
่ และ
– ภาษาระดับตา
ภาษา Assembly
– ภาษาระดับสู ง ได้แก่ Basic, Pascal, Ada,
่
C, Cobol, Fortran และอืนๆ
• ความแตกต่างระหว่างภาษาระดับสู ง
่ อ ภาษาระด ับตา
่ ควบคุม
และระด ับตาคื
อุปกรณ์ฮาร ์ดแวร ์คอมพิวเตอร ์ได้ดก
ี ว่า
แต่เขียนยาก และยาวมาก ส่วนภาษา
ระด ับสู งเขียนง่ ายเข้าใจง่ ายกว่าเพราะ
ใกล้
เ
คี
ย
งภาษามนุ
ษ
ย
์
แต่
ม
ข
ี
อ
้
จ
ากัดใน
่
์
ย...ครู ทองสุข เอียมศิร ิ โรงเรียนเบญจมราชร ังสฤษฎิ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
่ ยนขึนจะ
้
1.4 โปรแกรมทีเขี
ทางานได้อย่างไร ?
่ ยนขึนมา
้
• โปรแกรมทีเขี
ไม่วา
่ จะเขียน
โดยใช้อด
ิ เิ ตอร ์(editor) อะไรก็ตาม จะ
่
ได้ซอร ์สโค้ด(source code) ซึงจะเก็
บ
่
ในรู ปแฟ้มข้อมู ล ซึงจะมี
นามสกุล
้
แตกต่างกันไปด
ังนี
ภาษา นามสกุล ตัวอย่าง
C
C++
Pascal
Perl
PHP
Java
.c
.cpp
.pas
.pl
.php
.java
hello.c
hello.cpp
hello.pas
hello.pl
hello.php
hello.java
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
กระบวนการแปล
โปรแกรม
----------
ซอร ์สโค้ด
่
กระบวนการแปลโปรแกรม
โปรแกรมทีสามารพท
างานไ
โดยไม่ตอ
้ งมี source code
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
ตัว
แปลภาษา
• คอมไพเลอร ์(compiler)
้
– คอมไพเลอร ์จะอ่านโปรแกรมทังหมด
่
ก่อน เมือเจอข้
อผิดพลาดก็จะแจ้งให้
แก้ไข แต่ถา้ ไม่พบข้อผิดพลาดใดๆ
ในโปรแกรม ก็จะแปลให้เป็ น
่ ้อมจะทางานดังรู ป
โปรแกรมทีพร
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
ตัว
แปลภาษา
ขอตรวจสอบ
ดู กอ
่ น
มีข ้อผิดพลาด
ไปแก ้ไขมาใหม่
Main()
{
printf(“XX”);
printf(“YY”);
}
ถูกต ้อง
ผ่านได ้
กระบวนการแปลโปรแกรม
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
ตัว
แปลภาษา
• อินเตอร ์พรีเตอร ์(interpreter)
– อินเตอร ์พรีเตอร ์จะอ่านโปรแกรมมา
่
ทีละบรรทัดและทาตามคาสังแบบ
บรรทัดต่อบรรทัดถ้าเจอ
ข้อผิดพลาดโปรแกรมจะหยุดและ
แจ้งให้ทราบว่าผิดพลาด
– ตัวอย่างเช่นการแปลภาษา HTML
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
่ จาก
1.5 ไฟล ์โปรแกรมทีได้
การแปลภาษา
่
• เมือเขี
ยนโปรแกรมเสร็จ ผ่านการ
่ กจ
แปลภาษาแล้วผลทีได้
็ ะเป็ นไฟล ์
่
โปรแกรมทีสามารถน
าไปใช้ได้เลย โดย
่ ได้
่
่ องอื
อาจก๊อปปี ้ ลงดิสก ์ไปเปิ ดทีเครื
นๆ
่
ซึงจะเป็
นไฟล ์โปรแกรมแยกจากต ัวซอร ์
่
สโค้ดทีเราเขี
ยน
่ นนเป็
้ั
• ไฟล ์โปรแกรมทีได้
นไฟล ์แบบ
เลขฐานสอง หรือ
้
ไบนารีไฟล ์(.exe)เรียกว่าเอ็กซีควิ เทเบิล
ไฟล ์(executable file)
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
1.6 ประวัติของ
ภาษาซี
• C มีตน
้ กาเนิ ดมาจากภาษาคอมพิวเตอร ์
ยู นิกซ ์(UNIX)
่
• นาเอาภาษาเครืองมาใช้
ในการพัฒนา
่ และพัฒนาเป็ น
โปรแกรมอืนๆ
ระบบปฏิบต
ั ก
ิ าร(OS) และได้สร ้างภาษาบี
้
่ วยให้การเขียนโปรแกรม
(B) ขึนมา
เพือช่
้ ต่อมา Dennis Ritchie จาก
ทาได้ง่ายขึน
้
Bell Lab ได้นาภาษานี มาพั
ฒนาต่อและ
ใช้ชอว่
ื่ า C เพราะเป็ นภาษาต่อจาก B ใน
้
ยุคนันจะท
างานบนยู นิกซ ์เป็ นส่วนมาก
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
จากภาษา C
สู ่ C++
• ภาษา C ได้มก
ี ารพัฒนาต่อโดยใช้แนวคิด
โปรแกรมเชิงวัตถุ หรือ OOP(Object
Oriented Programming)
• เกิดภาษาใหม่เรียกว่า “ซี พลัส พลัส”
(C++)
• ภาษาซียงั เป็ นต้นฉบับให้ก ับอีกหลายๆ
ภาษาในปั จจุบน
ั เช่น Java, C# (อ่านว่าซี
ชาร ์ป)
่ างานบน
่
อท
• C# คือภาษาทีออกแบบมาเพื
แพลตฟอร
์ม
.NET
่
ย...ครู ทองสุข เอียมศิร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
1.7 พัฒนาการของ
คอมไพเลอร ์ภาษา C
• DOS >> Turbo C
• Windows >>
– Microsoft Visual C++
– Borland C++
– Borland C++ Builder
– Symantec C/C++
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
1.8 ระบบช่วยเหลือของ
คอมไพเลอร ์ภาษา C
่ ดตงคอมไพเลอร
้ั
• เมือติ
์ภาษา C แล้วจะมี
ระบบช่วยเหลือมาให้ดว้ ย
่ อ
่
• Visual C++ จะมีระบบช่วยเหลือทีชื
MSDN(Microsoft Developer
Network
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
1.9 สรุป
่
• คอมไพเลอร ์ภาษา C ทีในปั
จจุบน
ั มี
หลายต ัว แต่มพ
ี นฐานมาจาก
ื้
่
มาตรฐานเดียวกันคือ ANSI C ซึงจะ
เป็ นมาตรฐานของการเขียนโปรแกรม
ภาษา C บนยู นิกซ ์ Linux หรือ
Windows โดยใช้คอมไพเลอร ์ Visual
C++, Borland C++, GNU C/C++
้ จบแล้วคร ับ
• ภาษาซีเป็ นพืนฐานของภาษา
C++,
ไม่ยากเลยใช่
Java, C#
ไหม
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
่
บทที 2
รหัสควบคุม
และการคานวณ
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
มีอะไรบ้างใน
บทนี ้
2.1 รหัสควบคุมในภาษา C
2.2 ใส่คาอธิบาย(Comment) ลงใน
โปรแกรม
2.3 การคานวณในภาษา C
2.4 นิ พจน์การคานวณ
2.5 การคานวณทศนิ ยม
2.6 สรุป
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
2.1 รหัสควบคุมใน
• \aภาษาส่C
งเสียง Beep
้
\n
ขึนบรรทั
ดใหม่
\t
แท็บในแนวนอน
\b
ย้อนกลับไป 1 ตัวอ ักษร
\v
แท็บในแนวตง้ั
้
\f
ขึนหน้
าใหม่
\r
รหัส Return
\’
แทนตัวอ ักษร Single Quote(’)
\’’
แทนตัวอ ักษร Double Quote(’’)
\\
แทนตัวอ ักษร Backslash(\)
่ คา
\000
แทนตวั อ ักษรทีมี
่ ASCII เท่ากับ 000 ใน
ระบบเลขฐานแปด
่ คา
• \xhh
แทนตวั อ ักษรทีมี
่ ASCII เท่ากับ hh ใน
่
์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
ย...ครู ทองสุข เอียมศิ
ร
ิ
โรงเรี
ย
นเบญจมราชร
ังสฤษฎิ
ระบบเลขฐานสิบหก
•
•
•
•
•
•
•
•
•
•
2.1 รหัสควบคุมใน
ภาษา
C
• #include<stdio.h>
ย...ครู ทองสุข
• Void main()
• {
•
printf(“== Welcome ==
\n\n”);
•
printf(“Alert\a\n”);
•
print(“1 2 \b3 4\n”);
•
printf(“backslash \\ \n”);
•
printf(“show \” \n”);
•
printf(“show \ ‘hello\’
\n”);
•
printf(“ascii \123 \n”);
•
printf(“ascii \x2e \n”);
่ } ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
เอี•
ยมศิ
2.2 ใส่คาอธิบาย
(comment)ลงในโปรแกรม
• // ใช้ในการใส่คาอธิบายแบบบรรทัดเดียว โดยจะมีผล
•
•
•
•
•
•
•
•
่
ให้ขอ
้ ความใดๆ หลังจากเครืองหมาย
// ไปจนสุด
้ เป็ นคาอธิบายทังหมด
้
บรรทัดนันๆ
/*..*/ ใช้ในการใส่คาอธิบายแบบหลายบรรทัด โดยจะมี
่ ่ระหว่าง /* และ */ กลายเป็ น
ผลให้ขอ
้ ความใดๆ ทีอยู
คาอธิบาย(อาจจะเป็ น 1 บรรทัดหรือมากกว่าก็ได้)
เช่น
/*
Program by Sasalak Thongkhao
[email protected]
*/
//include stdio.h for printf command
#include<stdio.h>
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
2.3 การคานวณใน
ภาษาซี
ย...ครู ทองสุข
่
• เครืองหมายหรื
อโอเปอเรเตอร ์
(Operator) มีด ังนี ้
่
• +
เครืองหมายบวก(Addition)
่
• เครืองหมายลบ
(Subtraction)
่
• *
เครืองหมายคู
ณ
(Multiplication)
่
• /
เครืองหมายหาร(Division)
่
• % เครืองหมายหารแบบเอาเศษเป็
น
่ คาตอบ(Mod)
เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
2.3 การคานวณใน
ภาษาซี
•
•
•
•
•
•
ตัวอย่าง math1.c
#include<stdio.h>
void main()
%d เป็ นการกาหนดรู ปแบบของผลลัพธ ์เป็ นจานวนเต็มฐานสิบ
่
และแทนทีลงตรงต
าแหน่ ง %d
{
Printf(“%d\n”,250+43);
}
่ 293
ผลลัพธ ์ทีได้
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
2.3 การคานวณใน
ภาษาซี
• ตัวอย่าง math1update.c
•
•
•
•
•
•
•
•
•
#include<stdio.h>
void main()
{
ผลลัพธ ์
printf(“Answer is %d.\n”,250+43);
่
ที
ได้
Answer is
printf(“%d %d\n”,5-3,10-2);
printf(“%d \n”,5*5); 2 -22
printf(“%d \n”,7/3); 25
printf(“%d \n”,7%3); 2
}
1
29
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
2.4 นิ พจน์การ
คานวณ
• ลาด ับการคานวณนิ พจน์ทาง
คณิ ตศาสตร ์
่
่ ่หน้าต ัวเลข เช่น -2
• เครืองหมายที
อยู
• (...)
วงเล็บ
่
• *,/
เครืองหมายคู
ณและหาร
่
• +,เครืองหมายบวกและลบ
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
2.4 นิ พจน์การ
คานวณ
•
•
•
•
•
ตัวอย่าง math2.c
#include<stdio.h>
void main()
{
printf(“A = %d\n”,(105)*3+(2+10)/4);
่
ผลลั
พ
ธ
์ที
ได้
•
}
A = 18
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
2.4 การคานวณ
ทศนิ ยม
•
•
•
•
•
•
ใช้ %f (f ย่อมาจาก float)
#include<stdio.h>
void main()
{
printf(“Area = %f”,0.43*3*4);
}
่
ผลลัพธ ์ทีได้
Area = 5.160000
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
2.4 การคานวณ
ทศนิ ยม
•
•
•
•
•
ตัวอย่าง math4.c
#include<stdio.h>
void main()
{
printf(“Average =
%f\n”,(65.5+15.4+22.0)/3);
่
ผลลั
พ
ธ
์ที
ได้
• }
Average = 34.300000
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
2.5
สรุป
ในการคานวณนั้น ไม่วา่ จะเป็ นเลข
จานวนเต็มหรือ
เลขทศนิ ยมก็ตาม เราสามารถใส่นิพจน์ให ้กับ
การคานวณได ้
่ ้ลาดับการคานวณ
เช่น การใส่วงเล็บเพือให
เป็ นไปตามที่
่ ้จากการ
ต ้องการ และถ ้าคาดว่าผลลัพธ ์ทีได
คานวณจะออกมา จบแล้วคร ับ
ยากเลยใช่าโดยใช ้ %f
เป็ นเลขทศนิ ยมเราจะตไม่้องแสดงค่
ไหม
่ ้ได ้ค่า
เพือให
่
ที
ถู
กยมศิ
่ ต ้อง
ย...ครู ทองสุข เอี
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
่
บทที 3
ตัวแปรในภาษาซ
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
มีอะไรบ้างในบท
นี ้
ย...ครู ทองสุข
3.1 การเก็บค่าในภาษาซี
้ั อต
่ ัวแปร
3.2 กฎการตงชื
3.3 วิธก
ี ารสร ้างต ัวแปรและการ
กาหนดค่า
3.4 ภาษาซีก ับตัวแปรแบบข้อความ
3.5 การแสดงค่าจากตัวแปร
3.6 การนาต ัวแปรไปใช้ในการ
คานวณ
3.7 การร ับค่ามาเก็บไว้ในต ัวแปร
่
3.8
ค่
า
คงที
ในภาษาซี
่
เอียมศิร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
3.1 การเก็บค่าใน
ภาษา C
• มี 2 ลักษณะคือ
่
– เก็บค่าแบบค่าคงที(constant)
– เก็บค่าแบบตัวแปร(variable)
่ อสร
่
้
• ค่าคงทีเมื
้างขึนมาแล้
วเราจะไม่
่
สามารถเปลียนแปลงแก้
ไขค่าได้เลย เช่น
a=20;
่
• การเก็บค่าแบบต ัวแปรสามารถเปลียนแปลง
่ องการ เช่น char
ค่าเป็ นอะไรก็ได้ตามทีต้
ch;
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
3.1 การเก็บค่าใน
ภาษา C
• การสร ้างตัวแปรจะต้องทราบว่าตัวแปร
้
นันเก็
บค่าอะไร เช่น เลขจานวนเต็ม
เลขทศนิ ยม ข้อความ หรือตัวอ ักษร
เป็ นต้นโดยแบ่งออกเป็ นประเภทดังนี ้
่ เก็บ
– Character Variable ตัวแปรทีใช้
อ ักขระ
่ เก็บเลข
– Integer Variable ตวั แปรทีใช้
จานวนเต็ม
่ เก็บเลข
– Float Variable ตัวแปรทีใช้
จานวนทศนิ ยม
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
Character
Variable
• แบ่งออกเป็ น 2 ลักษณะ คือ
้ั
– Char เก็บค่า ASCII ของตวั อ ักษรได้ตงแต่
128 ถึง 127
– Unsigned char เก็บค่า ASCII ของ
้ั
ตัวอ ักษรได้ตงแต่
0-255
• ตัวแปรแบบ character จะใช้ในกรณี ท ี่
เราต้องการเก็บอ ักขระ 1 ตัว เช่น a,b
่ เราเก็
่
หรือ c เป็ นต้น สิงที
บก็คอ
ื ตวั อ ักษร
่ คา
1 ตัว ซึงมี
่ ASCII อยู ่ระหว่าง 0 ถึง
้ าเราประกาศต ัวแปรแบบ
255 ด ังนันถ้
้
char
เราจะใช้
ต
ัวแปรนั
นเก็
บ
ข้
อ
มู
ล
ได้
่
์
ย...ครู ทองสุข เอียมศิร ิ โรงเรียนเบญจมราชร ังสฤษฎิ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
Character
Variable
• วิธป
ี ระกาศตัวแปรแบบ Character เขียน
ได้ด ังนี ้ -128 ถึง 127
• char ch;
0 ถึง 255
• unsigned char c;
• ส่วนมากแล้วมักไม่มค
ี วามแตกต่าง
ระหว่าง char และ unsigned char
้ งมักประกาศเป็ น char เป็ นส่วน
ด ังนันจึ
ใหญ่
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
Integer
Variable
• แบ่งออกเป็ น 2 ประเภท คือ
– int หรือ short เก็บเลขจานวนเต็ม
้ั
ตงแต่
-32,768 ถึง 32,767
้ั
– Long เก็บเลขจานวนเต็มตงแต่
2,147,483,648 ถึง 2,147,483,647
• วิธก
ี ารใช้คอ
ื ถ้าต้องการต ัวเลข
จานวนเต็มมากกว่า 32,767 เรา
จะต้องประกาศตัวแปรแบบ long ถ้า
น้อยกว่าก็ประกาศแบบ int ดัง
าง ยนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
่ วอย่
ย...ครู ทองสุข ตั
เอียมศิ
ร ิ โรงเรี
Integer Variable
•
•
•
•
•
int a,b,c;
int age;
int height;
long salary,money;
เราประกาศตัวแปร a,b,c age height
่ ่
แบบ int เนื่องจาก ต้องการให้เก็บค่าทีอยู
้ แต่
ระหว่าง -32,768 ถึง 32,767 เท่านัน
salary และ money มีโอกาสจะมีคา
่
้ ังนันจึ
้ งต้องประกาศเป็ น
มากกว่า นันด
long
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
Float
Variable
• แบ่งออกเป็ น 3 ประเภท คือ
– Float เก็บทศนิ ยมได้ 3.4E+/-38
(ทศนิ ยม 7 ตาแหน่ ง)
– Double เก็บทศนิ ยมได้ 1.7E+/-308
(ทศนิ ยม 15 ตาแหน่ ง)
– Long Double เก็บทศนิ ยมได้ 1.2E+/float grade;
4932 (ทศนิ ยม 19 ตาแหน่ ง)
double rate;
long double longrate;
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
่ ว
้ อตั
กฎการตังชื
แปร
• ต้องไม่มอ
ี ักษรพิเศษใดๆ ประกอบอยู ่ดว้ ย
เช่น ! @ # $ % ^ & * (
่
• สามารถใช้เครืองหมาย
underscore ( _ )
ได้
่
• ชือตัวแปรมี
ต ัวเลขปนอยู ่ได้ แต่ตอ
้ งไม่
้ นด้วยต ัวเลข
ขึนต้
่
• ห้ามมีชอ
่ งว่างระหว่างชือ
้ั มพ ์เล็ก และพิมพ ์ใหญ่
• ใช้ได้ทงพิ
่
• ชือเหมื
อนกันแต่เป็ นพิมพ ์เล็กพิมพ ์ใหญ่
่
ถือว่าคนละชือกัน
่
ย...ครู ทองสุข เอียมศิ
ร้ ิ โรงเรี
่ ย้นเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
3.3 วิธก
ี ารสร ้างตัวแปรและการ
ก
าหนดค่
า
#include<stdi
• #include<st
ย...ครู ทองสุข
dio.h>
• void main()
• {
o.h>
void main()
{
int age = 20;
char sex =
‘f’;
float grade
= 3.14;
– int age;
– char sex;
– float
grade;
– age = 20;
}
– sex = ‘f’;
grade
=
่
เอียมศิ
ร ิ –โรงเรี
ยนเบญจมราชร
ังสฤษฎิ ์ 3
ชนะสงสารวิทยา สพท.ฉะเชิงเ
3.4 ภาษาซีก ับตัวแปรแบบ
ข้อความ
• นาตัวแปร char มาเรียงต่อกันเรียกว่าตวั แปร
แบบสตริง(String)
• การประกาศตัวแปรแบบสตริง จะต้องกาหนด
ขนาดด้วยตัวอย่าง
• char name[15] = “Jacky Chan”;
่ name มีความยาว 15 ช่อง
• ตัวแปรชือ
ตัวอ ักษร และเก็บข้อความ Jacky Chan
่
เอาไว้ ซึงการประกาศตั
วแปร 15 ช่องเอาไว้ ที่
J a c k y
C h a n
เหลือจะเป็ นช่องว่างเฉยๆ ไม่มต
ี วั อ ักษรบรรจุ
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
อยู ่
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
3.5 การแสดงค่า
วแปร
• จากตั
#include<stdio.h>
• void main()
• {
่
ผลลัพธ ์ทีได้
int age = 20;
You are malee
char sex = ‘f’;
You are f
float grade = 3.14;
You are 20 years ol
char name[10] =
Your grade is 3.140
“malee”;
printf(“You are
%s\n”,name);
printf(“You are
%c\n”,sex);
printf(“You are %d years
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
old\n”,age);
ตารางแสดงสัญลักษณ์
แสดงผล
สัญลักษณ์
%d
%s
%f
%c
%o
%x
ใช้สาหร ับ
่ นเลขจานวนเต็ม
แสดงค่าทีเป็
่ นสตริง
แสดงค่าทีเป็
่ นเลขทศนิ ยม
แสดงค่าทีเป็
่ นตัวอ ักษร 1 ตัว
แสดงค่าทีเป็
แสดงค่าของตัวเลขในรู ปฐานแปด
แสดงค่าของตัวเลขในรู ปฐานสิบหก
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
3.6 การนาตัวแปรไปใช้ใน
การคานวณ
• #include<stdio.h>
• void main()
• {
int a;
int b;
int c;
int ans;
a = 20;
b = 40;
c = 5;
ans = (a+b)/c;
printf(“Answer is
%d\n”, ans);
่
ผลลัพธ ์ทีได้
Answer is 12
• }
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
่ ก ับ
่
ใช้
เครืองหมายที
ตัวแปร
่ าขึน
้ 1
++
เพิมค่
-- ลดค่าลง 1
่ าตามจานวนทีต้
่ องการ
+=
เพิมค่
่ องการ
-= ลดค่าตามจานวนทีต้
*= คูณค่าในต ัวแปรด้วยจานวนที่
ต้องการ
• /= หารค่าในต ัวแปรด้วยจานวนที่
ต้องการ
•
•
•
•
•
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
่ ก ับ
่
ใช้
เครืองหมายที
ตัวแปร
• int a = 5;
• int b = 6;
่
คาสัง่ มีผลเหมือนกับ ผลทีได้
a+=4;
b--;
a*=2;
a/=2
a=a+4;
b=b-1;
a=a*2;
a=a/2;
บวกค่าอีก 4
ลดค่าลงไป 1
a คู ณ 2
a หารด้วย 2
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
3.7 การร ับค่ามาเก็บไว้ใน
ตั
ว
แปร
• ตัวอย่าง scanf1.c
่
ผลลัพธ ์ทีได้
• #include<stdio.h>
How old are you?
• void main()
20
• {
You are 20 years old.
•
int age;
•
printf(“How old are
you ?\n”);
•
scanf(“%d”,&age);
•
printf(“You are %d
years old.\n”,age);
• }
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
3.7 การร ับค่ามาเก็บไว้ใน
ตั
ว
แปร
• ตัวอย่าง scanf2.c
่
ผลลัพธ ์ทีได้
• #include<stdio.h>
• void main()
You are male (M) or fem
M
• {
You are sex is M.
•
char sex;
•
printf(“You are male (M) or female
(F) ?\n”);
•
scanf(“%c”,&sex);
•
printf(“You are sex is %c.\n”,sex);
• }
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
ตัวอย่าง
scanf3.c
• #include<stdio.h>
• void main()
• {
•
char name[15];
•
double grade;
•
printf(“What is your name ?\n”);
•
scanf(“%s”, name);
•
printf(“Enter your GPA”);
•
scanf(“%f”,&grade);
•
printf(“Hello %s, your GPA is
%f.\n”, name ,grade);
• }
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
่
3.8 ค่าคงทีใน
ภาษาซี
่
่ าคงทีจะเก็
่
• ค่าคงทีจะต่างจากตัวแปรทีค่
บค่า
้
เอาไว ้เพียงค่าเดียวตลอดทังโปรแกรม
โดยที่
่ ้วจะไม่สามารถ
เราสร ้างค่าคงทีแล
่
เปลียนแปลงค่
าของมันได ้
้ อค่
่ าคงทีจะใช
่
• การตังชื
้กฎเดียวกันกับการตัง้
่ วแปร แต่นิยมตังชื
้ อค่
่ าคงทีให
่ ้เป็ น
ชือตั
้ั
่ ้เกิดความ
ตัวอักษรพิมพ ์ใหญ่ทงหมด
เพือให
่ วแปรกับชือค่
่ าคงที่
แตกต่างระหว่างชือตั
่
่ อ
• ค่าคงทีในภาษาซี
มี 2 คาสังคื
ย...ครู ทองสุข
– คาสัง่ const
–ยมศิ
่ และ
เอี
ร ิ #define
โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3
ชนะสงสารวิทยา สพท.ฉะเชิงเ
การใช้คาสัง่ const
่
สร• ้างค่
า
คงที
ตัวอย่างโปรแกรม const1.c
• #include<stdio.h>
• void main()
• {
•
const double pi=3.14;
•
const float K=4;
•
const char ch= ‘A’;
•
const char
company[10]=“INTER”;
•
printf(“pi = %d\n”,pi);
•
printf(“K = %f\n”,K);
•
printf(“ch = %d\n”,ch);
•
printf(“company name =
%s”,company);
่
์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
ย...ครู ทองสุข เอียมศิ
ร•ิ โรงเรี
ย
นเบญจมราชร
ังสฤษฎิ
}
การใช้คาสัง่ #define
สร ้างค่าคงที่
•
•
•
•
•
•
•
•
•
ต ัวอย่างโปรแกรม define1.c
#include<stdio.h>
#define PI 3.14
#define NAME “SASALAK”
#define CH ‘a’
void main()
{
printf(“PI = %f\n”,PI);
printf(“NAME =
%s\n”,NAME);
•
printf(“PI = %c\n”,CH);
• }
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
การใช้คาสัง่ #define
่
สร
้างค่
า
คงที
• ตัวอย่างโปรแกรม
ย...ครู ทองสุข
define2.c
• #include<stdio.h>
• #define PI 3.14
• #define AREA(x) PI*x*x
จบแล้วคร ับ
ไม่ยากเลยใช่
• void main()
ไหม
• {
•
int r;
•
printf(“R = ?”);
•
scanf(“%d”, &r);
•
printf(“Area =
่
%f”,AREA(r)
); ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
เอียมศิ
ร ิ โรงเรียนเบญจมราชร
่
บทที 4
่
เงือนไขในภาษา
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
มีอะไรบ้างใน
บทนี ้
4.1 การเปรียบเทียบในภาษา C
่
่ ในการเปรียบเทียบ
4.2 เครืองหมายที
ใช้
4.3 คาสัง่ if และ else
4.4 ถ้าจะเปรียบเทียบพร ้อมๆ กันทา
อย่างไร?
4.5 การเปรียบเทียบค่าในช่วง เช่น อยู ่
ระหว่าง 1 ถึง 30 หรือไม่
4.6 การใช้ switch แทนการใช้ if
หลายๆ ครง้ั
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
concept
้ จะต้องมีการ
• ในการเขียนโปรแกรมนัน
เปรียบเทียบอยู ่ตลอดเวลา ถ้าเรา
ต้องการให้โปรแกรมทางานตาม
่
ข้อกาหนดทีเราต้
องการ จะต้องมีการ
่ จากการ
เปรียบเทียบและนาผลทีได้
เปรียบเทียบมาควบคุมการทางานของ
โปรแกรมต่อไป
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
่
4.2 เครืองหมาย
เปรียบเทียบ
่
• เครืองหมายเปรี
ยบเทียบ (Operational
Operator) ใช้ในการเปรียบเทียบค่า 2
ค่า ว่าเท่ากัน มากกว่า หรือน้อยกว่ากัน
หรือไม่ (โดยอาจเป็ นการเปรียบเทียบ
ระหว่างต ัวแปรกับตัวเลข หรือระหว่างตัว
แปรกับตัวแปรก็ได้)
• เช่นการกด ATM จะต้องมีการ
เปรียบเทียบรหัสผ่านว่ารหัสผ่านทีร่ ับมา
่ อยู ่หรือไม่ เป็ นต้น
ตรงกับรหัสผ่านทีมี
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
่
4.2 เครืองหมาย
เปรียบเทียบ
• >
มากกว่าหรือไม่
• <
น้อยกว่าหรือไม่
• >=
มากกว่าหรือ
เท่ากันหรือไม่
• <=
น้อยกว่าหรือ
เท่ากันหรือไม่
• !=
ไม่เท่ากันหรือไม่
• ==
เท่าก ันหรือไม่
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
่
4.2 เครืองหมาย
เปรียบเทียบ
่
• เมือเราเปรี
ยบเทียบค่าใดๆ แล้ว ผลลัพธ ์ที่
้ อ
เป็ นไปได้จะมีอยู ่ดว้ ยกันแค่ 2 ค่าเท่านันคื
“จริง” (True) กับ “เท็จ” (False) เหมือนก ับ
่ ATM ถ้ากดถูกผลการ
การกดรหัสเครือง
เปรียบเทียบก็คอ
ื True ถ้ากดผิดผลการ
เปรียบเทียบก็คอ
ื False ดังตัวอย่างต่อไปนี ้
• 5>3 ผลเป็ นจริง เพราะ 5 มากกว่า 3 จริง
• 10<34 ผลเป็ นจริง เพราะ 10 น้อยกว่า 34 จริง
• 4>=3 ผลเป็ นจริง เพราะ 4 มากกว่าหรือ
เท่ากับ 3 จริง
• 4>=4 ผลเป็ นจริง เพราะ 4 มากกว่าหรือ
เท่าก ับ 4
่
์
ย...ครู ทองสุข เอียมศิร ิ โรงเรียนเบญจมราชร ังสฤษฎิ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.3 คาสัง่ if
และ else
่ ่
• คาสังทีใช้ในการตรวจสอบเงื่อนไขใน
่
่
ภาษาซี คาสังแรกที
เราจะเรี
ยนรู ้กันก็
คือ if (แปลว่า “ถ้า”) นั่นคือเราจะใช้ if
่
เพือตรวจสอบผลของการเปรี
ยบเทียบ
ว่าเป็ น “จริง” หรือ “เท็จ”
• ถ้า เป็ นจริง จะให้ทาอะไรต่อไป และถ้า
เป็ นเท็จ จะให้ทาอะไรต่อไป
If (การเปรียบเทียบ)
่ ต้
่ องการให้กระทาถ้าผลการเปรียบเทียบ
สิงที
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
ต ัวอย่าง
if1.c
• #include<stdio.h>
• void main()
• {
•
int age;
•
printf(“How old are you
”);
•
scanf(“%d”,&age);
•
if (age>=60)
•
printf(“You are
old\n”);
•
printf(“Good Bye ! ”);
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
การเปรียบเทียบตัวแปรแบบ
char
• โปรแกรมจะต้องมีการร ับตัวอ ักษร 1 ตัว
้ จะมีการเปรียบเทียบตัวอ ักษร
หลังจากนันก็
้ เช่น
ตัวนันๆ
• ถ้าต้องการเขียนโปรแกรมถามเพศ
(Gender) โดยให้ผูใ้ ช้ตอบว่า m(Male)
หรือ f(Female) เราจะเขียนได้ดงั นี ้
#include<stdio.h>
void main()
{
char gender;
gender = ‘m’
if (gender ==‘m’)
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรีprintf(“Male”);
ยนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
ตัวอย่าง
ifchar2.c
• #include<stdio.h>
• void main()
• {
•
char ch1;
•
char ch2;
•
ch1=‘g’;
•
ch2=‘k’;
•
printf(“ch1=%d\n”,ch1);
•
printf(“ch2=%d\n”,ch2);
•
if(ch2>ch1)
•
printf(“ch2 is more
than ch1\n”);
•ร ิ }โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
่
ย...ครู ทองสุข เอียมศิ
ต ัวอย่าง
ifchar2.c
การเปรียบเทียบเป็ นจริง
ถ้า age เท่าก ับ 70
If(age>=60)
printf(“You are old\n”);
printf(“Good Bye!!”);
ถ้า age เท่ากับ 34
การเปรียบเทียบเป็ นเท็จ
If(age>=60)
printf(“You are old\n”);
printf(“Good Bye!!”);
้
มาทาบรรทัดนี เลย
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
ต ัวอย่าง
if2.c• #include<stdio.h>
•
•
•
•
•
•
•
•
•
•
•
•
•
•
void main()
{
char brother;
int age;
่
ถ้าตอบ y ซึงหมายถึ
ง
printf(“Do you have brother?”);
scanf(“%c”,&brother);
ก็จะทา ภายในปี กกา
if(brother == ‘y’)
{
printf(“How old is he?\n”);
scanf(“%d”,&age);
printf(“He is %d years
old.\n”,age);
}
printf(“Good bye!”);
}
ใช่
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.3 if และ
else
• #include<stdio.h>
• void main()
• {
•
int age;
•
printf(“How old are you ?”);
•
scanf(“%c”,&age);
•
if(age >= 60)
•
printf(“You are old \n”);
•
else
•
printf(“You are
young\n”);
•
printf(“Good bye!”);
• }
่
์
ย...ครู ทองสุข เอียมศิร ิ โรงเรียนเบญจมราชร ังสฤษฎิ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.4 การเปรียบเทียบ
พร
้อมๆ
กัน
่
• หากต้องการเปรียบเทียบพร ้อมๆ กัน และทาเมือการ
้ ยกตวั อย่างเช่น
เปรียบเทียบเป็ นจริงทุกค่าเท่านัน
้
• ใช้ if ตรวจสอบว่าค่าตัวแปร a กับ b นันมากกว่
า0
้ ห
ทังคู
่ รือไม่ ถ้าเขียนโปรแกรมโดยใช้ if จะเขียนได้
ดงั นี ้
Int a=20;
Int b=6;
If(a>0)
{
if(b>0)
{
printf(“Yes!! a>0 and b>0”);
}
}
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
ลดความซ ับซ ้อนของ
โปรแกรมลง
่ 2 ต ัว
• ต้องใช้ Logical Operator ซึงมี
คือ
่
• && คือ เครืองหมาย
“และ” (AND)
่
• || คือเครืองหมาย
“หรือ” (OR)
A
True
True
False
False
B
True
False
True
False
A && B A || B
True
False
False
False
True
True
True
False
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.4 การเปรียบเทียบ
พร ้อมๆ กัน
int a=20;
int b=6;
if((a>0) && (b>0))
{
printf(“Yes!!
Ok.”);
}
int a=20;
int b=6;
int c=8;
if((a>0) && (b>0)
&& (c>5))
{
printf(“Yes!!
Ok.”);
}
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.4 การเปรียบเทียบ
พร ้อมๆ กัน
่
้ ถ้าค่าใดค่าหนึ่ง
• เครืองหมาย
&& นัน
เป็ นเท็จจะทาให้ผลลัพธ ์เป็ นเท็จด้วย
่
้ จะให้ผลลัพธ ์เป็ น
• เครืองหมาย
|| นัน
้
จริง ถ้าค่าใดค่าหนึ่งหรือทังหมดเป็
น
จริง
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.4 ใช้
&&• int a=20;
• int b=6;
• if(a>0)
• {
•
if((a>0) && (b>0) &&
(c>5))
•
{
•
printf(“Yes!! Ok.”);
•
}
่ อไป
ลงมาทาคาสังต่
•
else
•
{
•
printf(“OH…
No!!!”);
•
}
• }
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.4 ใช้
||
•
•
•
•
int a=20;
int b=6;
int c=8;
เท็จ เท็จ จริง
if((a<0) || (b<0) ||
(c>5))
• {
•
printf(“Yes!! Ok.”);
• }
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.4 โปรแกรม
or.c
• #include<stdio.h>
• void main()
• {
•
int a,b;
•
printf(“Enter number 1”);
•
scanf(“%d”,&a);
•
printf(“Enter number 2”);
•
scanf(“%d”,&b);
•
if((a<=0)||(b<=0))
•
printf(“a,b must not less than
zero !\n”);
•
else
•
printf(“ans = %d”,a+b);
•
printf(“\nGood bye!”);
• }
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.4 โปรแกรม
and.c
• #include<stdio.h>
• void main()
• {
•
int a,b;
•
printf(“Enter number 1 :”);
•
scanf(“%d”,&a);
•
printf(“Enter number 2 :”);
•
scanf(“%d”,&b);
•
if((a>=100)&&(b>=100))
•
printf(“ans = %d”,a*b);
•
else
•
printf(“Both of number must
more than 100”);
•
printf(“\nGood bye!”);
• }
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.4 เปรียบเทียบความเท่ากัน
และไม่
เ
ท่
า
กัน
• #include<stdio.h>
• void main()
่
่
ลองเปลียนเป็
นเครืองหมาย
!= แทน
• {
•
int a,b;
•
printf(“Enter number 1 :”);
•
scanf(“%d”,&a);
•
printf(“Enter number 2 :”);
•
scanf(“%d”,&b);
•
if((a==0)||(b==0))
•
printf(“Error! Zero
values.”);
•
else
•
printf(“ans=%d”,a+b);
•
printf(“\nGood bye!”);
• }
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.4 การตรวจสอบค่าแบบช่วง
• เราสามารถใช้ && ในการตรวจสอบค่าตวั
่ าหนดหรือไม่ เช่น ถ้า
แปรว่าอยู ่ในช่วงทีก
ต้องการตรวจสอบค่าตัวแปร i ว่าอยู ่ในช่วง
60 ถึง 100 หรือไม่ ให้เขียนโปรแกรมดังนี ้
–
–
–
–
If((i>=60)&&(i<=100))
{
…
}
• ถ้าค่าในตัวแปร i มีคา
่ เท่าก ับ 74 เงื่อนไขของ
่ ่ใน {} ถู ก
if จะเป็ นจริง ทาให้โปรแกรมทีอยู
กระทา
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.4 คาสัง่ if และ
else
if
• If และ else จะใช้ในกรณี ทมี
ี่ เงือนไขเดียว
เช่น
if(a==10)
printf(“OK”);
else
printf(“Not OK”);
• Else if ใช้ในกรณี เปรียบเทียบหลายๆ ค่า
เช่น
if(a==20)
printf(“a is 20”);
else if(a==30)
printf(“a is 30”);
else if(a==40)
printf(“a is 40”);
else
printf(“a is over”);
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.4 โปรแกรม
grade.c
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#include<stdio.h>
void main()
{
int score;
printf(“Score : ”);
scanf(“%d”,&score);
if((score>=80)&&(score<=100))
printf(“A\n”);
else
if((score>=70)&&(score<=79))
printf(“B\n”);
else
if((score>=60)&&(score<=69))
printf(“C\n”);
else
if((score>=50)&&(score<=59))
printf(“D\n”);
else
printf(“You got F !!\n”);
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.4 คาสัง่
switch…case
• switch1.c
• #include<stdio.h>
จบแล้วคร ับ
• void main()
ไม่ยากเลยใช่
• {
ไหม
•
char sex;
•
printf(“are you m (male) of f (female) ?”);
•
scanf(“%c”,&sex);
•
switch (sex)
•
{
•
case ‘m’ : printf(“You are
male\n”); break;
•
case ‘f’ : printf(“You are
female\n”); break;
•
default : printf(“Try again!!\n”);
•
}
่ • ร}ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
ย...ครู ทองสุข เอียมศิ
่
บทที 5
้
การทาซา
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
มีอะไรบ้างในบท
นี ้
ย...ครู ทองสุข
• 4.1 ทาไมถึงต้องมีการทาซา้
่ ใช้
่ ในการทาซา้
• 4.2 คาสังที
่ โปรแกรม
• การทาซา้ หมายถึง การสังให้
ทางานอย่างใดอย่างหนึ่งวนไปวนมา
่
่ องการหรือ
จนกระทังครบตามจ
านวนทีต้
่
ตรงตามเงื่อนไขทีเราก
าหนดเอาไว้
้ ดขึนบ่
้ อยๆ ใน
• การทาซาเกิ
ชีวต
ิ ประจาวัน เช่น การวนร ับรหัสผ่าน
จนกว่าจะใส่รหัสผ่านถูกต้อง หรือไม่เกิน
้ั การวนร ับรหัสบัตรเติมเงินของ
3 ครง,
่ บริรกิ ารโทรศ
ัพท ์ ไม่ังสฤษฎิ
เกิน์ 33ชนะสงสารวิ
ครง้ั จนกว่
าจะ งเ
เอียมศิ
โรงเรียนเบญจมราชร
ทยา สพท.ฉะเชิ
Ty
pe
้ 2 ลักษณะ คือ
• การทาซามี
่ นอน เช่น
• แบบมีจานวนรอบทีแน่
ต้องการให้พม
ิ พ ์ตัวอ ักษร a จานวน
้ั นบนหน้
้
้
1000 ครงขึ
าจอ แบบนี จะใช้
คาสัง่ for
• แบบใช้เงื่อนไขเป็ นต ัวต ัดสินใจว่าจะ
้ อไปหรือไม่ ต้องการให้โปรแกรม
ทาซาต่
่
่ ่อนไขยังเป็ น
ทาไปเรือยๆ
ในขณะทีเงื
่
จริง อยู ่ เช่น ให้ร ับรหัสผ่านไปเรือยๆ
่
จนกว่าจะใส่ถูก ซึงจะไม่
มจ
ี านวนรอบที่
้
่
แน่
น
อนตายต
ัว
ลั
ก
ษณะนี
จะมี
2
ค
าสั
ง
่
์
ย...ครู ทองสุข เอียมศิร ิ โรงเรียนเบญจมราชร ังสฤษฎิ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.2
for
้
• ใช้ในกรณี ทเราต้
ี่
องการทาซาโดย
้ั แน่
่ นอน เช่น 20 ครง้ั
ทราบจานวนครงที
30 ครง้ั
• การใช้งานจะกาหนดลงไปเลยว่า
่ ง้ั และจะต้องสร ้างตัว
ต้องการให้ทากีคร
้
แปร ขึนมาเป็
นตัวนับ (counter)
โดยมากจะกาหนดให้เป็ นตัวแปรแบบ
จานวนเต็ม (integer)
• ตัวนับจะเป็ นตัวคอยบอกว่าครบตาม
่ องการ
จานวนทีต้
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิ
่ ทยา สพท.ฉะเชิงเ
4.2 รู ปแบบ ของ
for
่ นของต ัวนับ เช่น 0;
• for(ค่าเริมต้
•
เปรียบเทียบตัวนับว่ายังอยู ่ในช่วงนี ้
หรือไม่;
่ ละเท่าไร หรือลดที
•
จานวนนับเพิมที
ละเท่าไร)
• {
่ ต้
่ องการให้ทา
•
คาสังที
• }
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.2 โปรแกรม
for1.c
ย...ครู ทองสุข
• #include<stdio.h>
• Void main()
่ นให้ count=0
เริมต้
• {
•
int count;
ทาในขณะที่ count<10
่ า count ทีละ 1
•
printf(“Begin\n”); เพิมค่
count=count+1
•
for(count=0;count
<10;count++)
•
printf(“Hello\n”);
printf(“End\n”);
่
เอี•ยมศิ
ร ิ โรงเรี
ยนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
4.3 ผลร ัน
โปรแกรม
• Begin
•
•
•
•
•
•
•
•
•
•
•
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
End
้
• คาว่า Hello จะถูกแสดงทังหมด
่ วแปร count
10 ครง้ั โดยทีตั
่ ้เป็ นตัวนับ เรา
คือตัวแปรทีใช
่ ้นเป็ น 1 และจะเพิม
่
ให ้ค่าเริมต
้ ละ 1 ไปเรือยๆ
่
ค่าขึนที
่ วแปร count ยังน้อย
ในขณะทีตั
กว่า 10 แต่ถ ้าตัวแปร count
่ เงือนไขจะ
่
เท่ากับ 10 เมือไร่
เป็ นเท็จ โปรแกรมก็จะหลุด
ออกจากคาสัง่ for ทันที
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
โปรแกรม
สู ต• รคู
ณ
#include<stdio.h>
• Void main()
• {
•
int mother=6;
•
int count;
•
printf(“Begin\n”);
•
for (count =1;count<=12;count++)
•
{
•
pintf(“%d x %d =
%d\n”,mother,count,mother *count);
•
}
•
printf(“End\n”);
่ • }ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
ย...ครู ทองสุข เอียมศิ
while และ
do..while
• คาสัง่ while และ do..while จะต่างจาก
่
้
คาสัง่ forเล็กน้อยตรงทีการท
าซาแบบ
นี ้ ไม่จาเป็ นต้องบอกถึงจานวนรอบของ
้
่
การทาซา้ แต่ละทาซาไปเรื
อยๆ
จนกว่า
เงื่อนไขจะเป็ นเท็จ
• รู ปแบบคาสัง่ while คือ
• While (เงื่อนไข)
• {
่
่ ต้
่ องการให้
•
คาสังหรื
อกลุ่มคาสังที
ทาซา้
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
while.c
• #include<stdio.h>
• Void main()
• {
•
int count=1;
•
while(count<=10)
•
{
•
printf(“Hello %d
\n”,count);
•
count++;
•
}
• }
• จากตัวอย่างเรา
กาหนดให้ count มี
้
ค่า เป็ น 1 จากนันใช้
คาสัง่ while ตรวจดู
ค่าของ count ว่ายัง
น้อยกว่าหรือเท่ากับ
10 หรือไม่ ถ้าใช่ก็
่
ยังทาคาสังภายใน{}
่ า
ต่อไป และเพิมค่
count ทีละ 1 ไป
่
เรือยๆ
จนกว่าค่า
count จะมากกว่า 10
ทาให้เงื่อนไขเป็ น
่
์ 3 จชนะสงสารวิ
ก็จะหลุดจากลู
ป
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิเท็
ทยา สพท.ฉะเชิ
งเ
dowhile.c
• #include<stdio.h>
• ก่อนเข้าสู ก
่ ารตรวจสอบ
เงื่อนไข(out!=‘y’) ครง้ั
• void main()
้
แรกนันจะมี
การทาคาสัง่
้
• {
ใน {} ก่อน ดังนัน
do..while จึงทาคาสัง่
•
char out;
ภายใน {} อย่างน้อย 1
•
do
้ั
ครงเสมอ
และถ้า
ตรวจสอบแล้วเงื่อนไข
•
{
ยังจริงอยู ่กจ
็ ะวนมาทา
•
printf(“\n Do you what
to
่
คาสังภายใน
{} อีกครง้ั
exit ?[Y]es or [N]o :”);
•
scanf(“%c”,&out);
จบแล้วคร ับ
•
}
while(out!=‘y’);ไม่ยากเลยใช่
ไหม
• }
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
่
บทที 5
การสร ้างและใช้งานฟั งก
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
มีอะไรบ้างในบท
นี ้
• 6.1 ความหมายและการทางานของ
ฟั งก ์ช ัน
• 6.2 ประโยชน์ของการใช้ฟังก ์ช ัน
• 6.3 วิธก
ี ารสร ้างฟั งก ์ช ันอย่างง่ าย
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
6.1
ความหมา
• ฟั งกย์ช ันในภาษาซีมอ
ี ยู ่ 2 ชนิ ดคือ
่ ั มี
่ อยู ่ในไลบรารีของภาษาซี
– ฟั งก ์ชนที
่ ั เราสร
่
้
– ฟั งก ์ชนที
้างขึนเอง
่ ั มี
่ อยู่แล ้วในภาษาซีเวลาจะเรียกใช ้งานก็
• ฟังก ์ชนที
ต ้องทาการ include ไฟล ์นามสกุล .h เช่นถ ้า
่ ั prinf หรือ scanf จะต ้อง
ต ้องการใช ้ฟังก ์ชน
include ไฟล ์ชือ่ stdio.h มาก่อน เป็ นต ้น
่ ยนขึนเองใหม่
้
• ฟังก ์ช ันทีเขี
เหมือนกับสร ้างภาษาซี
้
่ มจากทีมี
่ อยูแ่ ล ้ว ซึงจะท
่
ขึนเองเพิ
มเติ
าให ้ลดความ
ซ ับซ ้อนของโปรแกรมลง
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
ฟั งก ์ช ันแรกในโปรแกรมคือ
main()
• ต ัวอย่างโปรแกรม
Func1.c.
• #include<stdio.h
>
• void main()
• {
•
int x,y,z;
•
x = 100;
•
y=23;
•
z=x+y;
•
printf(“%d”,z
);
มีการเรียกใช้ฟังก ์ช ัน
printf จะเห็นว่าจะต้อง
มีการ include ไฟล ์
stdio.h เข้ามาก่อน
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
จากตัวอย่าง
#include<stdio.h>
void test( )
{
int x,y,z;
x = 100;
y = 23;
z = x+y;
printf(“%d”,z);
}
void main( )
{
int x,y,z;
x = 100;
y = 23;
z = x+y;
printf(“%d”,z);
test( );
}
่
่
แยกคาสังบางส่
วนมาใส่ในฟั งก ์ช ัน ชือ
เรียกใช้ฟังก ์ช ัน test(
) เพียงตัวเดียวก็จะ
ทางานเหมือนคาสัง่
้
่ ยนไว้ใน
ทังหมดที
เขี
ฟั งก ์ช ัน
test () ข้างบน
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
โปรแกรมเขียนใหม่จะ
เป็ นดังนี ้
• #include<stdio.h>
• void test( )
• {
•
int x,y,z;
่ า test ( )
ส่วนของฟั งก ์ช ัน ชือว่
•
x = 100;
•
y = 23;
•
z = x+y;
•
printf(“%d”,z);
• }
• void main( )
ฟั งก ์ช ันหลั•ก {
่ งก ์ช ัน test ( ) เพือท
่ างานตร
เรียกชือฟั
•
test( );
• }
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ
ตัวอย่าง โปรแกรม
EasyFunc1.c
• #include<stdio.h>
•
•
•
•
•
•
•
•
•
•
•
•
•
void showmenu()
{
printf(“==== MENU
====\n\n”);
printf(“a) Say Hello\n”);
printf(“b) Say Good
Bye\n”);
printf(“Select a or b :
\n”);
}
Void main()
{
printf(“Begin\n”);
showmenu();
printf(“END\n”);
}
Begin
==== MENU ====
a) Say Hello
b) Say Good Bye
Select a or b :
END
่
ย...ครู ทองสุข เอียมศิ
ร ิ โรงเรียนเบญจมราชร ังสฤษฎิ ์ 3 ชนะสงสารวิทยา สพท.ฉะเชิงเ