Transcript Slide 1

ร้ ูจกั กับภาษา C
ภาษา C เป็ นภาษาทีเ่ ก่าแก่ ซึ่งถูกพัฒนาเพือ่ ให้ เป็ นภาษาสาหรับ
การสร้ างระบบปฏิบัติการ UNIX เพระของเดิมนั้นเขียนด้ วยภาษา Assembly
ซึ่งเป็ นภาษาที่ยดึ ติดกับ H/W จึงทาให้ ย้ายระบบปฏิบัติการไปทางานกับเครื่อง
อืน่ ๆเป็ นเเรื่องทีเ่ ป็ นไปไม่ ได้
ดังนั้น ภาษา C จึงเป็ นภาษาที่ไม่ ยดึ ติดกับ H/W และในปัจจุบัน
ยังไม่ ยดึ ติดกับการสร้ างระบบปฏิบัติการเท่ านั้น แต่ ยงั นาไปสร้ างโปรแกรม
เพือ่ งานทุกประเภทได้
ประวัติความเป็ นมาของภาษาซี
ปี ค.ศ. 1972 Dennis Ritchie เป็ นผู้คดิ ค้ นสร้ างภาษาซีขนึ้ เป็ นครั้งแรก
โดยพัฒนามาจากภาษา B และภาษา BCPL แต่ ขณะนั้นยังไม่ มีการใช้ งาน
ภาษาซีอย่ างกว้ างขวางนัก จนกระทั่งต่ อมาในปี ค.ศ. 1978 Brain Kernighan
ได้ ร่วมกับ Dennis Ritchie พัฒนามาตรฐานของภาษาซีขนึ้ เรียกว่ า “K&R”
(Kernighan & Ritchie) และเขียนหนังสื อชื่อ “The C Programming
Language” ออกมาเป็ นเล่มแรก
ทาให้ มีผู้สนใจภาษาซีเพิม่ มากขึน้ และด้ วยความยืดหยุ่นของภาษาซีที่
สามารถปรับใช้ งานกับคอมพิวเตอร์ ชนิดต่ าง ๆ ได้ ทาให้ ภาษาซีได้ รับความ
นิยมมากขึน้ เรื่อยๆ จนแพร่ หลายไปทัว่ โลก จนมีบริษัทต่ าง ๆ สร้ างและผลิต
ภาษาซี ออกมาเป็ นจานวนมาก เกิดเป็ นภาษาซีในหลากหลายรูปแบบ
ประวัติความเป็ นมาของภาษาซี (ต่ อ)
ในปี ค.ศ. 1988 Kernighan & Ritchie จึงได้ ร่วมกับ ANSI (American
National Institute) สร้ างมาตรฐานของภาษาซีขนึ้ เรียกว่ า ANSI C เพือ่ ใช้
เป็ นตัวกาหนดมาตรฐานในการสร้ างภาษาซีรุ่นต่ อ ๆ ไป
ปัจจุบันภาษาซียงั คงได้ รับความนิยมและใช้ งานอย่ างกว้ างขวางเนื่องจาก
เป็ นภาษาระดับกลาง (middle-level-language) ที่เหมาะกับการเขียนโปรแกรม
แบบโครงสร้ าง (Structured Programming) และเป็ นภาษาทีม่ ีความยืดหยุ่น
มาก คือใช้ งานกับเครื่องต่ าง ๆ ได้ และทีส่ าคัญ ในปัจจุบัน ภาษาโปรแกรมรุ่น
ใหม่ เช่ น C++, Perl , Java , C# ฯลฯ ยังใช้ หลักการของภาษาซีเป็ นพืน้ ฐาน
ด้ วย กล่าวคือ หากมีพนื้ ฐานของภาษาซีมาก่อน ก็จะสามารถศึกษาภาษารุ่น
ใหม่ เหล่านีง้ ่ ายขึน้
จดุ เด่ นของภาษา C
• เป็ นภาษาทีม่ ีการกาหนดมาตรฐานสาหรับเครื่องคอมพิวเตอร์ ทุกรุ่น
• เป็ นภาษาทีร่ ะบบปฏิบัติการทุกตัวยอมรับ
• เป็ นภาษาที่มโี ครงสร้ างทีด่ ี และความชัดเจนของเครื่องหมายสาหรับ
ดาเนินการ
• สามารถเขียนคาสั่ งภาษา C เพือ่ ควบคุมการทางานของอุปกรณ์ H/W
บางส่ วนได้
• มี Function สาเร็จรูป สาหรับงานประเภทต่ าง ๆ ให้ เลือกใช้ มากมาย
การสั่งงานคอมพิวเตอร์ ด้วยภาษาโปรแกรม
MUL R1, D
STO R1, TEMP1
LOD R1 ,B
ADD R1,TEMP1
ตัวกลางสาหรับแปลภาษา
ไปเป็ นภาษาเครือ
่ ง
11001010
00100110
01001101
01101100
10011001
11001011
10001101
11000101
การแบ่ งระดับตามลักษณะ และการทางาน
1. ภาษาระดับต่า (LOW LEVEL Language) เป็ นภาษที่
ใกล้เคียงกับภาษาเครื่ องมากที่สุด สามารถเขียนคาสัง่ เพื่อติดต่อ
สัง่ งานกับอุปกรณ์ H/W ได้โดยตรง ซึ่งได้แก่ ภาษา Assembly
ตัวอย่ าง
ของ Assembly
MUL R1, D
STO R1, TEMP1
LOD R1 ,B
ADD R1,TEMP1
การแบ่ งระดับตามลักษณะ และการทางาน (ต่ อ)
2. ภาษาระดับสู ง
(High Level Language) เป็ นภาษาที่ใกล้เคียงกับภาษา
มนุษย์มากที่สุด คาสั่งต่าง ๆ จึงมักเป็ นภาษาอังกฤษ ทาให้จดจาและเขียนได้ง่าย เช่น
ภาษา Pascal, Cobol, Fortran หรื อ Basic เป็ นต้น
ตัวอย่าง ของ ภาษา Pascal
program Test1;
var Name : String;
begin
writeln(‘Input your Name’) Readln(name);
Writeln(‘Hello ’,Name);
End.
การแบ่ งระดับตามลักษณะ และการทางาน (ต่ อ)
3. ภาษาระดับกลาง (Middle Level language)
ภาษา C ถูกพัฒนาขึ้น
โดยเอาข้อดีและข้อเสี ยของ 2 ระดับมาใช้ คือ คาสั่งของภาษา C เป็ นคาสั่งที่มีความ
หมายใกล้เคียงกับภาษามนุษย์ และยังสามารถติดต่อกับ H/W ได้รวดเร็ ว ดังนั้นภาษา
C จึงถูกจัดให้เป็ นภาษาระดับกลาง
ตัวอย่าง ของ ภาษา C
#include (iostream.h)
main()
{
……..
return 0
}
หลักในการแปลภาษา
แบ่ งได้ 2 วิธี คือ
1. แปลทีละคาสั่ ง
ตัวแปลลักษณะนี้จะเรี ยกว่า Interpreter โดยจะทางาน
แบบ เป็ นคาสัง่ ต่อคาสัง่ นัน่ คือจะอ่านคาสัง่ จากโปรแกรมมา 1
คาสัง่ และทางานตามคาสัง่ นั้นทันที
Print “Hello Link \n ”;
print “How are you?”;
Interpreter
Hello Link
หลักในการแปลภาษา (ต่ อ)
2. แปลทีเดียวตั้งแต่ ต้นจนจบ
ตัวแปลลักษณะนี้จะเรี ยกว่า Compiler หลักการทางานเริ่ ม
จาก คอมไพล์เลอร์จะทาการตรวจสอบคาสัง่ ทั้งหมดของโปรแกรม เพื่อดูวา่
มีส่วนใดผิดจากหลักการของภาษานั้นหรื อไม่ ถ้าไม่พบข้อผิดพลาด
คอมไพเลอร์จะทาการแปลคาสัง่ ทั้งหมดในโปรแกรมให้เป็ นภาษาเครื่ องแล้ว
จึงทางาน
Print “Hello Link \n ”;
print “How are you?”;
Compiler
Hello Link
How are You
ขัน้ ตอนการทางานของ ภาษา C
ฟั งก์ชนั่ จากไลบรารี
ในภาษา C
ไฟล์ชื่อ Test.c
#include (iostream.h)
main()
{
cout<<Hello World\n;
}
C Compiler
Object File
.obj
คอมไพล ์ test.obj
Linker
Binary File
.exe
ลิงค ์
test.exe
การนาภาษา C ไปใช้ งาน
•
•
•
•
•
•
สร้ างระบบปฏิบัตกิ าร
งานทางด้ านการควบคุมอุปกรณ์ H/W
สร้ างโปรแกรมสาหรับจัดพิมพ์เอกสาร
สร้ างตัวแปรภาษาอืน่ ๆ
สร้ างโปรแกรมเพือ่ ใช้ สาหรับงานทัว่ ๆ ไป
เป็ นรากฐานทีส่ าคัญของภาษาใหม่ จานวนมาก
โครงสร้ างของภาษา C
จะแบ่งออกเป็ น 2 ส่วนดังนี้
1
2
ส่วนหัวของโปรแกรมซึง่ เป็ นส่วนของ
การกาหนดคาเริ
่ ตน
่ ม
้ และประกาศตัวแปร
ส่วนของตัวโปรแกรมซึง่ เริม
่ จาก
Main() ซึง่ อาจจะมีการเรียกใช้
Function อืน
่ ๆ ก็ได้
ตัวอย่ าง การเขียนโปรแกรมภาษา C
#include (iostream.h)
main()
{
cout<<“C++”;
return 0
}
Head
Body
ส่ วนหั วของโปรแกรม
ส่วนหัวของโปรแกรมจะเริม
่ ตนตั
ดแรกของโปรแกรมจนมา
้ ง้ แตบรรทั
่
สิ้ นสุดทีบ
่ รรทัดกอน
น 2 ส่วนดังนี้
่ Main() จะแบงออกเป็
่
1. คาสั่ งพิเศษ (Preprocessor Directive)
2. การประกาศตัวแปร (Declaration)
#include (stdio.h)
int x =4;
main()
{
}
1
2
main เป็ นส่ วนของฟังฟ์ ชัน่ หลัก ซึ่ ง
โปรแกรมภาษาซี ทุกโปรแกรมจะต้อง
cout<<“C++”; มีฟังฟ์ ชัน่ นี้อยูใ่ นโปรแกรมเสมอ โดย
return
ขอบเขตของฟังก์ชนั่ จะถูกกาหนดด้วย
เครื่ องหมาย { }
Preprocessor directive
เป็ นคาสัง่ รู ปแบบหนึ่งของภาษา C ที่มีความพิเศษ โดยในขั้นตอน
การแปลความหมายของโปรแกรม ถ้าตัวแปลภาษา C ตรวจพบว่ามีการใช้
Preprocessor ภายในโปรแกรม ก็จะถูกแปลความหมายเป็ นลาดับแรกก่อน
คาสัง่ อื่น ๆ
รู ปแบบของการเขียน Preprocessor จะต้องขึ้นต้นเครื่ องหมาย # แต่
ไม่ตอ้ งลงท้ายด้วยเครื่ อง ; เหมืนคาสัง่ อื่น ๆ ทัว่ ไป
Preprocessor directive (ต่ อ)
คาสั่ งทีจ
่ ด
ั อยูในกลุ
มของ
Preprocessor Directive
่
่
#Include
#Elid
#Line
#Define
#Else
#Pragma
#Error
#ifdef
#if
#ifndef
#Endfi
#undef
รูปแบบการเขียนคาสั่งภาษา C
• คาสั่ งในภาษา C จะต้ องเขียนด้ วยตัวอักษรพิมพ์เล็ก
• ทุกคาสั่ งต้ องลงท้ ายด้ วย ;
• สามารถเขียนคาสั่ งได้ อย่ างอิสระ
ชนิดของข้ อมูลในภาษา C
•
•
•
•
•
•
ข้ อมูลเลขจานวนเต็ม (Integer)
ข้ อมูลเลขทศนิยม (Float)
ข้ อมูลชนิดเลขฐานแปด (Octal)
ข้ อมูลชนิดเลขฐานสิ บหก (Hexadecimal)
ข้ อมูลชนิดตัวอักขระ (Character)
ข้ อมูลชนิดข้ อความ (String)
ตัวแปรและหน้ าที่ของตัวแปร
ตัวแปร (Variable) คือ การจองทีเ่ ก็บข้ อมูลในหน่ วยความจาหลัก (RAM)
ของเครื่องคอมพิวเตอร์ พร้ อมกับกาหนดชื่อเรียกแทนหน่ วยความจาในตาแหน่ งนั้น
อย่ างเช่ น ถ้ าเราสร้ างตัวแปรขึน้ มา 1 ตัวโดยใช้ ชื่อ num สาหรับเก็บค่ าของ
ตัวเลข 16 เมื่อต้ องการนาค่ า 16 มาใช้ เราก็เพียงแต่ เรียกชื่อ num ซึ่งภาษา C จะแปล
ความหมายได้ ถูกต้ องว่ ามีค่าเท่ ากับ 16
การกาหนดค่ าให้ กบั ตัวแปร
ตัวแปร = นิพจน์ เช่ น
x = 10;
m = x+y;
a = ‘A’;
การประกาศตัวแปร
#include <Stdio.h>
int a= 5;
int b= 10;
int c;
main()
{
c= a+b;
printf (“sum = %d\n”, c);
}
ตัวแปรจานวนเต็ม
หาผลบวก
แสดงผลบวก
ชนิดของตัวแปรในภาษา C
สามารถแบ่ งได้ 2 ประเภทใหญ่ ๆ คือ
1. ตัวแปรแบบพืน้ ฐาน (Scalar) ซึ่งหมายถึงทีเ่ ก็บข้ อมูลได้ เพียงค่ าเดียว
เช่ น
ชนิดของตัวแปร
ขนาด (Bits)
ขอบเขต
ความหมาย
Char
8
unsigned Char
8
int
16
unsigned int
16
0 - 65535
เก็บข้ อมูลขนิดตัวเลขจานวนเต็ม แบบไม่คิดเครื่องหมาย
short
8
-128 - 127
เก็บข้ อมูลชนิดตัวเลขจานวนเต็มแบบสัน้ ใช้ พืน้ ที่ 8 Bits
unsigned short
8
0 - 255
long
32
unsigned long
32
0 - 4294967296 เก็บข้ อมูลชนิดเลขจานวนเต็มแบบยาว แบบไม่คิดเครื่องหมาย
Float
32
เก็บข้ อมูลชนิดตัวเลขทศนิยม ใช้ พืน้ ที่ 32 Bit เก็บทศนิยม 6 ตัว
double
64
เก็บข้ อมูลชนิดตัวเลขทศนิยม ใช้ พืน้ ที่ Bits เก็บทสนิยม 12 ตัว
long double
128
เก็บข้ อมูลชนิดตัวเลขทศนิยม ใช้ พืน้ ที่ 128 Bit เก็บทศนิยม 24 ตัว
-128 ถึง 127 เก็บข้ อมูลชนิดอักขระ ใช้ พืน้ ทีเ่ ก็บในหน่วยความจาประมาณ 8 Bits
0 - 255
เก็บข้ อมูลชนิดอักขระ แบบไม่คิดเครื่องหมาย
-32768 - 32767 เก็บข้ อมูลขนิดตัวเลขจานวนเต็ม ใช้ พืน้ ที่ 16 Bits
เก็บข้ อมูลชนิดตัวเลขจานวนเต็มแบบสัน้ แบบไม่คิดเครื่องหมาย
-2147483648 เก็บข้ อมูลชนิดเลขจานวนเต็มแบบยาว ใช้ พืน้ ที่ 32 Bits
รูปแบบการประกาศตัวแปร
Type variable;
type : ชนิดของตัวแปรที่จะสร้างขึ้น
variable : ชื่อของตัวแปรที่ตอ้ งการจะใช้
ตัวอยาง
่
int num;
float y;
char c;
double salary;
รูปแบบการประกาศตัวแปร (ต่ อ)
Type variable = value;
ตัวอยาง
่
long million = 1000000;
int oct = 0234;
int hex = 0x45;
float temp = 15.236;
double stat = 1.25e-02;
char ch =‘#’;
รูปแบบการประกาศตัวแปร (ต่ อ)
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’;
หลักการตั้งชื่อตัวแปร
•
•
•
•
•
•
ต้ องขึน้ ต้ นด้ วยตัวอักษร A-Z หรือ a-z หรือเครื่องหมาย _ เท่ านั้น
ภายในชื่อตัวแปรให้ ใช้ ตัวอักษร A-Z หรือ a-z หรือ 0-9 หรือ _
ห้ ามเว้ นช่ องว่ างภายในตัวแปร หรือใช้ สัญลักษณ์ นอกเหนือจากข้ อ 2
การใช้ ตัวอักษรตัวใหญ่ และตัวเล็ก มีความแตกต่ างกัน
ห้ ามตั้งชื่อตัวแปรซ้ากับคาสงวน (Reserved Word)
ตั้งชื่อตัวแปรยาวเท่ าไรก็ได้ แต่ เครื่องรู่จักแค่ 32 ตัวเท่ านั้น
คาสงวน (Reserved Word)
auto
continue
if
short
switch
volatile
break
default
int
signed
typedef
while
case
do
long
sizeof
union
char
double
register
static
unsigned
const
else
return
struct
void
ตัวอย่ างการตั้งชื่อตัวแปร
class_room
hi-tech
9number
_hello123
age#
right!
last name
ถูกต้อง
ไม่ถกู ต้อง
ไม่ถกู ต้อง
ถูกต้อง
ไม่ถกู ต้อง
ไม่ถกู ต้อง
ไม่ถกู ต้อง
ตัวแปรสาหรั บข้ อมูลชนิดข้ อความ
char[n] variable;
n : คือจำนวนของตัวแปรชนิดอักขระ (Char) ที่จะ
สร้ำงขึน้ โดยถ้ำข้อควำมมีอกั ขระทัง้ หมด 10 ตัว จะต้อง
ใส่จำนวนเป็ น 11 เนื่ องจำกภำษำ C มีข้อกำหนดว่ำจะเก็บ
ข้อมูลชนิดข้อควำม ตัวสุดท้ำยต้องเป็ นอักขระว่ำง ซึ่งจะ
เขียนแทนด้วย \0 เพื่อบอกให้ร้วู ่ำเป็ นข้อควำม
char[10] name; char[ ] color;
Variable : ชื่อของตัวแปร โดยต้องตัง้ ชื่อให้ถกู ต้อง
คาสั่งในการแสดงผลข้ อมูล
cout ทาหน้ าเหมือนสายนาส่ งข้ อมูลจากโปรแกรมไปปรากฏที่
จอภาพทีละตัวอักษรตามลาดับ โดยมีตัวดาเนินการส่ งออก (<<)
อยู่ระหว่ าง cout กับข้ อมูล
cout << ข้ อมูล;
เช่ น
cout<<“What’s Your Name?”<<endl;
cout<<“Your Age is: ”<<age<<endl;
คาสั่ง endl (end line)
เป็ นคาสั่ งขึน้ บรรทัดใหม่ เช่ นเดียวกับคาสั่ ง \n
การใช้ Comment
Comment คือ ส่ วนทีเ่ ป็ นหมายเหตุของโปรแกรมมีไว้ เพือ่ ให้ ผู้เขียนโปรแกรม
ใส่ ข้อความอธิบายกากับลงใน Source code ซึ่ง compiler จะข้ ามการแปลผล
ในส่ วนที่เป็ น comment
การ Comment ในภาษาซี มี 2 แบบ
1. Comment บรรทัดเดียวใช้ เครื่องหมาย //
2. Comment หลายบรรทัดใช้ เครื่องหมาย /* และ */
ตัวอย่ างเช่ น
// Writen program by A.Prayoon
ตัวอย่ างโปรแกรมที่ 1
#include <iostream.h>
main()
{ int n;
n = 66;
cout << n << endl;
return 0;
}
ตัวอย่ างโปรแกรมที่ 2
#include <iostream.h>
// Test cout Command
main()
{
cout<<“Sriwattana Institute of International”<<endl;
return 0;
}
ตัวอย่ างโปรแกรมที่ 3
#include <iostream.h>
// Test cout Command
main()
{ int m,n,sum;
m = 10;
n = 20;
sum = 0;
cout<<“Amount of M = ”<<m<<endl;
cout<<“Amount of N = ”<<n<<endl;
sum = m + n;
cout<<“Sum of M + N = ”<<sum<<endl;
return 0;
}
ตัวอย่ างโปรแกรมที่ 4 (โปรแกรมฝึ กการใช้ cout เพือ่ แสดงผลหน้ าจอ)
#include <iostream.h>
main()
{
cout<<“******************************”<<endl;
cout<<“ Number
Name Surname ”<<endl;
cout<<“471-1564 Urai Srimeed ”<<endl;
cout<<“471-1662 Chanont Jitmun ”<<endl;
cout<<“”<<endl;
cout<<“”<<endl;
cout<<“”<<endl;
cout<<“******************************”<<endl;
return 0;
}
โปรแกรมที่ 5 (การใช้ cout, cin ในการรับ-ส่ งข้ อมูล)
#include <iostream.h>
// Test cout, cin Command
main()
{ int x;
cout<<“Enter Number : ”<<endl;
cin>> x;
cout<<“Number is : ”<< x <<endl;
return 0;
}
ตัวดาเนินการคณิตศาสตร์ ( Operators)
ตัวดาเนินการคณิตศาสตร์ คือ สั ญลักษณ์ ทใี่ ช้ ทาหน้ าทีค่ านวณ
นิพจน์ คณิตศาตร์ เพือ่ ให้ ได้ ค่าผลลัพธ์ แล้ วนาไปเก็บไว้ ทตี่ ัวแปร
ได้ แก่
ตัวดาเนินการ
+
*
/
%
หน้ าที่
บวก
ลบ
นิเสธ
คูณ
หาร
แสดงเศษของการหาร
ตัวอย่าง
m+n
m-n
-n (ค่ าติดลบ)
m*n
m/n
m%n
โปรแกรมที่ 6 การใช้ ตัวดาเนินการคณิตศาสตร์
#include <iostream.h>
// Test Arithmetic Operators;
main()
{ int m=38, n=5;
cout<<m<<“+”<<n<<“=”<<(m+n)<<endl;
cout<<m<<“-”<<n<<“=”<<(m-n)<<endl;
cout<<“ ”<<“ - ” <<“ = ”<<(-n)<<endl;
cout<<m<<“*”<<n<<“=”<<(m*n)<<endl;
cout<<m<<“/”<<n<<“=”<<(m/n)<<endl;
cout<<m<<“%”<<n<<“=”<<(m%n)<<endl;
return 0;
}
ตัวดาเนินการเพิม่ และลดตัวแปร
เพือ่ ให้ การเขียนโปรแกรมมีความกะทัดรัดขึน้ ภาษาซี จึงได้ มี
การกาหนดรู ปแบบในการเขียนนิพจน์ สาหรับการเพิม่ / ลด
ค่ าตัวแปร คือ
++ ตัวดาเนินการเพิม่ ค่ าตัวแปร
-- ตัวดาเนินการลดค่ าตัวแปร
การเพิม่ ค่ า
การลดค่ า
++m หรือ m++
m = m+1
--m หรือ m-m = m-1
ตัวอย่ างโปรแกรมที่ 7
#include <iostream.h>
// Test the increment and decrement operators
main()
{ int m=44, n=66;
cout<<“m = ”<<m<<“, n = ”<<n<<endl;
++m;
--n;
cout<<“m = ”<<m<<“, n = ”<<n<<endl;
m++;
n--;
cout<<“m = ”<<m<<“, n = ”<<n<<endl;
return 0;
}
ตัวดาเนินการเพิม่ / ลด ++m หรือ m++ และ –m หรือ m—
ถ้ านาไปใช้ ในนิพจน์ ย่อยจะมีความหมายแตกต่ างกันคือ
++m
m++
--m
m--
จะดาเนินการเพิม่ ค่ าก่ อน
จะดาเนินการเพิม่ ค่ าหลัง
จะดาเนินการลดค่ าก่ อน
จะดาเนินการลดค่ าหลัง
ตัวอย่ างโปรแกรมที่ 8
#include <iostream.h>
// Test the increment and decrement operators
main()
{ int m=66,n;
n = ++m;
cout<<“m = ”<<m<<“, n = ”<<n<<endl;
n = m++;
cout<<“m = ”<<m<<“, n = ”<<n<<endl;
cout<<“m = ”<<m++<<endl;
cout<<“m = ”<<m<<endl;
cout<<“ m = ”<<++m<<endl;
return 0;
}
ข้ อมูลชนิด (Character)
ข้ อมูลชนิด Character ภาษาซี ถือเป็ นข้ อมูลจานวนเต็ม
ชนิดหนึ่ง โดยจะทาการแปลเป็ นตัวอักขระ โดยใช้ ภาษา ASCII
(American Standard Code for Information Interchange)
Monitor
ASCII
ตัวอักขระ ตัวเลข
CPU
ตัวอย่ างโปรแกรมที่ 9
#include <iostream.h>
// Test output of type char;
main()
{ char c = ‘A’;
n = ++m;
cout<<c++ << “ ” << int(c) << endl;
cout<<c++ << “ ” << int(c) <<endl;
cout<<c++ << “ ” << int(c) <<endl;
return 0;
}
หมายเหตุ
ฟังก์ ชั่น int(c) มีหน้ าทีแ่ ปลงข้ อมูลตัวอักขระเป็ นข้ อมูล
จานวนเต็มตามรหัสของ ASCII
การใช้ คาสั่ง \t และ \n
\t เท่ ากับ tab ใช้ ในการสั่ งให้ พมิ พ์ข้อความย่ อหน้ า
\n เท่ ากับ endl ใช้ ในการขึน้ บรรทัดใหม่
โปรแกรมที่ 10
#include <iostream.h>
main()
{ cout<<“\tFourscore andseven years ago our fathers \n”
<<“brought forth upon this continent a new nation: \n”
<<“concieved in liberty, and dedicated to the \n”
<<“proposition that all men are created equal. \n”;
return 0;
}
โปรแกรมที่ 11 (การรั บข้ อมูลตัวอักขระเข้ าสู่ โปรแกรม)
#include <iostream.h>
main()
{ char first, last;
cout<<“Enter your initials: \n”;
cout<<“ \tFirst name initial: ”;
cin>>first;
cout<<“\tLast name initial: ”;
cin>>last;
cout<<“Hello; ”<<first<< “ . ”<<last<<“.! \n”;
return 0;
}
แบบฝึ กหัด
1. เจงเขียนโปรแกรมเพื่อแสดงค่าหล่านี้ออกทางจอภาพ
ค่าที่ตอ้ งการให้แสดงออก 200, 10.33745, A, Thailand
2. ในการกรอกข้อมูลเพื่อสมัครเข้าเรี ยนของสถานกวดวิชาแห่ งหนึ่ ง ข้อมูลที่ตอ้ ง
การให้ผสู้ มัครกรอกประกอบด้วย
ชื่อและนามสกุล
อายุ
เพศ
ที่อยู่
เบอร์โทรศัพท์
ให้นกั ศึกษาเขียนโปรแกรมพื่อให้ผสู ้ มัครกรอกข้อมูลเหล่านี้ และแสดงผลที่จอภาพ
ลักษณะการทางาน ( การวนรอบ )
count++
count=1
Count<=n;
True
Cout<<“Hello.”;
False
โปรแกรมที่ 13 การวนรอบโดยใช้ คาสั่ง for
#include <iostream.h>
main()
{ int i;
for (i=1; i< 3; i++)
cout<<“Computer Program”<<endl;
return 0;
}
โปรแกรมที่ 14 (การวนรอบโดยผ้ ใู ช้ กาหนดค่ าจานวนครั้ งทีว่ น)
#include <iostream.h>
main()
{ int i, n;
cout<<“Enter Number of Loop”<<endl;
cin>>n;
for(i=1; i<=n; i++)
cout<<“Good morning every body”<<endl;
return 0;
}
โปรแกรมที่ 16 (โปรแกรมแสดงการรับค่ าและหาผลรวม)
#include <iostream.h>
main()
{ int i, sum, n;
sum = 0;
cout<<“Enter Number to Sum: ”; cin>>n;
for (i=1; i<=n; i++)
sum = sum+ i ;
return 0;
}
โปรแกรมที่ 17 (โปรแกรมแสดงการใช้ loop for 2 ชั้น)
#include <iostream.h>
main()
{ int i, j;
for (i=1; i<=3; i++)
for (j=1; j<=3; j++)
cout<<“Hi! How are you?” <<endl;
return 0;
}
หมายเหตุ
• จะทาการวน for แรก 1 ครั้ง แล้ วทาการวน for ที่สอง 3 ครั้งจึงกลับมา
วน for แรกอีก จนครบ 3 ครั้ง
• ถ้ าต้ องการกาหนดค่ าการวน for 1 และ for 2 ทาได้ โดย
• กาหนดตัวแปร m และ n
• for (i=1; i<= m; i++) และ for (j=1; i<=n; j++)
โปรแกรมที่ 18-1 (ความแตกต่ างในการใช้ คาสั่ง for)
#include <iostream.h>
main()
{ int i, j;
for (i=1; i<=3; i++)
for (j=1; j<= i; j++)
cout<<“Hi! How are you?” <<endl;
return 0;
}
โปรแกรมที่ 18-2 (ความแตกต่ างในการใช้ คาสั่ง for)
#include <iostream.h>
main()
{ int i, j;
for (i=1; i<=3; i++)
for (j= i; j<= 3; j++)
cout<<“Hi! How are you?” <<endl;
return 0;
}
การทางานวนรอบโดยใช้ คาสั่ง while
while จะตรวจสอบเงือ่ นไขก่อนทางาน ถ้ าไม่ เป็ นจริงจะข้ ามไปทา
คาสั่ งอืน่
True
while
Count++ << limit
False
คาสั่ งต่ อไป
Cout<<“Very Good”;
โปรแกรมที่ 20 (โปรแกรมการหาผลรวมของรากที่ 2)
#include <iostream.h>
main()
{ int i, n, sum;
i= 1; sum= 0;
cout<<“Enter a Positive Integer: ”;
cin>>n;
while (i<=n)
{ sum = sum + i * i;
i++;
}
cout<<“The Sum of the First ”<<n<<endl;
cout<<“Squares is: ”<<sum<<endl;
return 0;
}
โปรแกรมที่ 21 (โปรแกรมการหาผลรวมตัวเลข)
#include <iostream.h>
main()
{ int n, sum;
sum= 0;
cout<<“Enter Number End by-999”<<endl;
cin>>n;
while (n! = -999)
{sum = sum+n;
cin>>n;
}
cout<<“Sum is ”<<sum<<endl;
return 0;
}
โปรแกรมที่ 22 (โปรแกรมการยอดรวมและค่ าเฉลี่ย)
#include <iostream.h>
main()
{ float count, ave; int n, sum;
sum = 0; count = 0;
cout<<“Enter Number(End by -999) : ”<<endl;
cin>>n;
while (n! = -999)
{count = count + 1;
sum = sum + n;
cin>>n;
}
ave = sum / count;
cout<<“Sum is ”<<sum<<endl;
cout<<“Average is ”<<ave<<endl;
return 0;
}
โปรแกรมที่ 23 (โปรแกรมแสดงค่ าตัวแปรโดยใช้ คาสั่ง do..while)
#include <iostream.h>
main()
{ int n;
cout<<“Enter Number (Can’t over 10) : ”;
cin>>n;
do
{ cout<<“Value of n = ”<<n<<endl;
}
เป็ นคาสั่ งทีใ่ ช้ ในการตรวจสอบเงื่อนไข หากในการเขียนโปรแกรมต้ องการมี
เงื่อนไข 2 ทางเลือกจะต้ องใช้ คาสั่ ง if….else เพือ่ ให้ โปรแกรมสามารถ
ประมวลผลได้ ตามต้ องการ
รูปแบบคาสั่ ง if….else
if (เงื่อนไข)
{ คาสั่ ง;
คาสั่ ง;
}
else
{ คาสั่ ง;
คาสั่ ง;
}
โปรแกรมที่ 25 (โปรแกรมตรวจสอบคะแนน)
#include <iostream.h>
main()
{ int score;
cout<<“Please Input Your Score : ”; cin>>score;
if (score>50)
cout<<“You pass the Examination ”<<endl;
return 0;
}
โปรแกรมที่ 26 (โปรแกรมหาค่ าสูงสุดจากเลข 3 จานวน)
#include <iostream.h>
main()
{ int n1,n2,n3,max;
cout<<“Enter three intrgers: ”;
cin>>n1>>n2>>m3;
max=n1;
if (n2>max) max=n2;
if (n3>max) max=n3;
cout<<“The maximum is ”<<max<<endl;
return 0;
}
โปรแกรมที่ 27 (โปรแกรมตรวจสอบคะแนน)
#include <iostream.h>
main()
{ int score;
cout<<“Please Input Your Score: ”;cin>>score;
if (score>50)
cout<<“You pass the Examination ”<<endl;
else
cout<<“Try Again ! ”<<endl;
return 0;
}
โปรแกรมที่ 28 (โปรแกรมหาค่ าสูงสุดโดยใช้ if…else)
#include <iostream.h>
main()
{ int n1,n2,max;
cout<<“Enter two integers: ”;cin>>n1>>n2;
if (n1>n2) max=n1;
else max=n2;
cout<<“Maximum is: ”<<max<<endl;
return 0;
}
หากต้ องการเขียนโปรแกรมที่มที างเลือกมากกว่ า 2
ทางเลือกขึน้ ไป จะต้ องใช้ คาสั่ ง if….else if….else
รูปแบบคาสั่ ง if….else if ….else
if (เงื่อนไข)
คาสั่ ง;
else if (เงื่อนไข)
คาสั่ ง;
else
คาสั่ ง;
โปรแกรมที่ 31 (โปรแกรมหายอดรวม ค่ าเฉลีย่ ค่ าสูงสุด และต่าสุด))
#include <iostream.h>
main()
{ float count, ave; int n, sum, max, min;
sum=0;
cout<<“Enter Number(End by-999): ”<<endl;
cin>> n;
while(n!=-999)
{sum=sum+n; count=count+1; max=n, min=n;
if (n>max) max=n;
ekse if (n<min) min=n; cin>>n;
}
ave = sum/count;
cout<<“-------------------------------------” <<endl;
cout<<“ Sum is : ” <<sum<< endl;
cout<<“ Average is : ”<<ave<<endl;
cout<<“ Maximum is : ”<<max<<endl;
cout<<“ Minimum is : ”<<min<<endl;
cout<<“------------------------------------”<<endl;
return 0;
}
คาสั่งในการทางานแบบมีเงื่อนไข switch
รูปแบบ
switch(ตัวแปร)
{ case value1 :
คาสั่ ง;
break;
case value2 :
คาสั่ ง;
break;
default:
คาสั่ ง;
}
นิพจน์ ที่ตามหลังคาสั่ ง switch จะถูกคานวณและนาไปเปรียบเทียบกับเงื่อนไขที่
อยู่หลังชุ ดคาสั่ ง case ตรงกับ case ไหน จะทาตามคาสั่ งทีอ่ ยู่ใน case นั้น กรณีทไี่ ม่
ตรงกับ case ใดเลย จะทาตามคาสั่ งทีอ่ ยู่หลัง default
คาสั่ ง break จะควบคุมให้ โปรแกรมกระโดดออกจากชุ ดคาสั่ ง switch และ
ทางานตาม คาสั่ ง ถัดจากชุ ดคาสั่ ง switch
โปรแกรมที่ 32 (โปรแกรมการใช้ switch….case)
#include <iostream.h>
main()
{ int n;
cout<<“Enter Number : ”; cin>>n;
switch(n)
{ case 1:
cout<<“One”<<endl;
break;
case 2:
cout<<“Two”<<endl;
break;
case 3:
cout<<“Three”<<endl;
break;
default:
cout<<“No Value”<<endl;
}
return 0;
}
โปรแกรมที่ 33 (โปรแกรมการใช้ switch….case ต่ อ)
#include <iostream.h>
main()
{ char n;
cout<<“Enter the First Character of Program P/C/B : ”; cin>>n;
switch(n)
{ case ‘P’:
cout<<“Turbo Pascal”<<endl; break;
case ‘C’:
cout<<“Visual C++”<<endl; break;
case ‘B’:
cout<<“Visual Basic”<<endl; break;
default:
cout<<“You don’t Select Program”<<endl;
}
return 0;
}