•
ภาษาซีถูกออกแบบพัฒนาขึ้นโดย
Dennis
Ritchie เมื่อ ค.ศ. 1972 ณ ห้องปฏิบัตการเบลล์
โดยออกแบบบนระบบปฏิบัติการ UNIX บนเครื่องเมนแฟรมคอมพิวเตอร์
DEC PDP-11
•
ภาษาซีถูกพัฒนามาจากภาษา
B ที่พัฒนาขึ้นโดย Ken Thompson ตั้งอยู่บนพื้นฐานของภาษา BCPL ที่พัฒนามาจาก Martin Richards
Scanf คือ การกรอกข้อมูลลงในช่องว่า (ทำหน้าที่รับข้อมูลจากคีย์บอร์ด)
ตัวอย่าง1. การเขียนโปรแกรมรับเลขจำนวนเต็ม 2 จำนวน และหาผลบวกของเลขทั้ง 2 จำนวน ดังรูป
- เมื่อเขียนโปรแกรมเสร็จแล้วสั่งให้โปรแกรม
run
โดยกด F11 หรือ คลิกที่ compile &
run
- โปรแกรมจะขึ้นคำถามมาให้
ใส่ตัวเลขที่ต้องการหาค่าตัวแรกลงไปแล้ว กด enter
- จากนั้นโปรแกรมจะขึ้นคำถามถามตัวเลขค่าที่สองมาให้ใส่ค่าตัวเลขและกด
enter
- โปรแกรมจะขึ้นค่าตัวเลขที่ได้ทำการบวกกันแล้วขึ้นมาให้
ตัวอย่างที่2 การเขียนโปรแกรมแปลง ค.ศ. เป็น พ.ศ. ดังรูป
การเขียนโปรแกรมคำนวณหาพื้นที่สี่เหลี่ยมคางหมู
เมื่อเขียนโปรแกรมเสร็จแล้วสั่งให้โปรแกรม run โดยกด F11 หรือ คลิกที่ compile & run ดังรูป
การเขียนโปรแกรมรับค่าเลขและหาค่าเฉลี่ย
4 จำนวน
สั่งให้โปรแกรม run
โดยกด F11 หรือ คลิกที่ compile &
run
ใส่ค่าเลขที่ต้องการหาค่าเฉลี่ยให้ครบ
4 ค่า แล้วกด Enter ก็จะได้ค่าเฉลี่ยที่เราต้องการหา
การเขียนโปรแกรมเปลี่ยนภาพหน้าจอ
สั่งให้โปรแกรม run
โดยกด F11 หรือ คลิกที่ compile &
run
เมื่อใส่ลิ้งค์ที่อยู่ของรูปภาพที่เราต้องการนำมาเป็นภาพหน้าจอแล้ว
กดปุ่ม Enter
การใช้ char
เป็นชนิดข้อมูลแบบตัวอักษรจะเก็บข้อมูลได้
1 ตัวอักษร โดยจะเก็บข้อมูลในลักษณะ ASCII
- ตัวแปร A เก็บข้อมูลตัวอักษร a ซึ่ง a
มีค่า เท่ากับ 97
- นำตัวแปร A มาลบกับ 83(เลขที่เรากำหนดเองจะเป็นเลขอะไรก็ได้)
- เมื่อเขียนโปรแกรมเสร็จแล้วสั่งให้โปรแกรม run โดยกด F11 หรือ คลิกที่ compile & run จะออกมาดังรูป
- เมื่อเขียนโปรแกรมเสร็จแล้วสั่งให้โปรแกรม run โดยกด F11 หรือ คลิกที่ compile & run จะออกมาดังรูป
- โปรแกรมจะ runตัวอักษรที่ตรงกับเลขที่เราลบ
- ดังตัวอย่าง a
=97 (97-83 = 14) ซึ่ง 14 ตรงกับเลขค่าของตัวโน๊ตโปรแกรมจึงrunตัวโน๊ตขึ้นมา
ใช้
char ในการเก็บตัวอักษร
การนับตัวอักษรว่ามีกี่ตัว
if
เราจะเรียนรู้กันคือ
if แปลว่า ถ้า ซึ่งมีหน้าที่ตามชื่อของมันเลย นั่นคือ เราจะใช้ if เพื่อตรวจสอบผลของการเปรียบเทียบว่าเป็น “จริง” หรือ “เท็จ”
รูปแบบ if
(การเปรียบเทียบ)
ตัวอย่าง
เช่น การถามว่ามีพี่ชาย หรือน้องชาย หรือไม่ ถ้ามีให้ถามอายุของพี่ชาย หรือน้องชาย
ด้วยดังรูป
1) เขียนข้อมูลในการสอบถาม
2) เสร็จแล้วจะมีกล่องข้อมูลขึ้นมาให้กรอกข้อมูล
ตามที่เราได้ตั้งคำถามไว้ (ถ้ามีพี่ชาย จะมีข้อมูลขึ้นมาถามอีก
แต่ถ้าไม่มีพี่ชายคำสั่งก็จะจบลง)
รูปนี้คำตอบคือ ไม่มีพี่ชาย
รูปนี้คำตอบคือมีพี่ชาย แล้วก็มีคำถามอีกข้อคือ อายุเท่าไหร่
รูปนี้ตอบคำถามเสร็จ ก็จะสิ้นสุดการสอบถาม ตามที่เราได้ตั้งคำถามไว้
If….else
If เป็นคำสั่งที่ใช้ในการตรวจจับผลเปรียบเทียบที่เป็นจริง
แต่ สำหรับผลการเปรียบที่เป็นเท็จ เราจะใช้ else
ในการตรวจสอบ หรือถ้าแบบเข้าใจได้คือ else จะทำตรงกันข้ามกับ
if
ตัวอย่าง เช่น ถ้าต้องการให้ผู้ใช้โปรแกรมของเรากรอก
อายุ โดยอายุที่กรอกต้องมากกว่าหรือเท่ากัน
50 ปี ถ้าไม่ถึงให้แสดงว่ายังไม่แก่
1) เขียนข้อมูลที่จะถาม
ว่าอายุเท่าไหร่
2) เขียนถูกต้องจะมีกล่องให้เรากรอกข้อมูล ถามเกี่ยวกับอายุ
3) ถ้าอายุยังไม่ถึง 50 จะขึ้นคำว่า You are young พร้อมกับคำว่า
Good bye และสิ้นสุดลง
4) แต่ถ้าอายุเกิน 50 จะขึ้นคำว่า You are old พร้อมกับคำว่า
Good bye และสิ้นสุดลง
คำสั่ง if และ else if
จากตัวอย่างที่ผ่านมา
เราได้ศึกษาถึงการตรวจสอบเงื่อนไขโดยใช้ if และ else
ซึ่งจะใช้ในกรณีที่มีแค่เงื่อนไขเดียว เช่น
If (a == 0)
printf(“OK”);
Else
printf(“Not Ok”)
ถ้าเราต้องการเปรียบเทียบตัวแปร a กับค่าอื่นๆ เช่น a == 20,
a == 30, a == 40 สามารถทำได้โดยใส่ if ไปเรื่อยๆ เพื่อเปรียบเทียบค่าที่ต้องการ คือถ้าเงื่อนไขแรกเป็นจริงก็ทำคำสั่งในส่วนของเงื่อนไขแรกเลย แต่ถ้าเป็นเท็จก็จะไปตรวจสอบเงื่อนไขที่สอง แต่ถ้าเป็นเท็จก็ตรวจเงื่อนไขที่สามต่อไป และเป็นอย่างนี้ไปเรื่อยๆ ซึ่งมีลักษณะการเขียนแบบนี้
a == 30, a == 40 สามารถทำได้โดยใส่ if ไปเรื่อยๆ เพื่อเปรียบเทียบค่าที่ต้องการ คือถ้าเงื่อนไขแรกเป็นจริงก็ทำคำสั่งในส่วนของเงื่อนไขแรกเลย แต่ถ้าเป็นเท็จก็จะไปตรวจสอบเงื่อนไขที่สอง แต่ถ้าเป็นเท็จก็ตรวจเงื่อนไขที่สามต่อไป และเป็นอย่างนี้ไปเรื่อยๆ ซึ่งมีลักษณะการเขียนแบบนี้
If
(a == 20)
printf(“ a is 20”);
else
if (a == 30)
printf(“a is 30”);
else
if (a == 40)
pritnf(“a is 40”);
else
printf(“a is over”);
ตัวอย่าง เช่น
สคริปโปรแกรมเปรียบเทียบคะแนนให้ออกมาเป็นเกรด ดังรูป
1) เขียนข้อมูลตามช่วงคะแนน ให้ออกมาเป็นเกรดแต่ละเกรดดังรูปนี้
2) เขียนเสร็จ
โปรแกรมจะมีกล่องให้กรอกข้อมูลลงไป ดังรูป
3) เราใส่คะแนนไปที่ 91 ซึ่งตัดเกรดที่ A ดังรูป
คำสั่ง switch…case
การใช้คำสั่ง
switch
case จะคล้ายกับคำสั่ง if else if
แต่จะง่ายกว่าและดูเข้าใจได้ง่ายกว่า คำสั่ง switch
ใช้ได้ดีกับการตรวจของค่าตัวแปรนั้นดังเช่น
switch
(ค่าตัวแปร)
{
case
ค่าที่ 1 : สิ่งที่ต้องการให้ทำ
case
ค่าที่ 2 : สิ่งที่ต้องการให้ทำ
case
ค่าที่ 3 : สิ่งที่ต้องการให้ทำ
…
default
: สิ่งที่ต้องการให้ทำ ถ้าอยู่นอกเหนือจากข้างบน
}
2)
เสร็จแล้วจะมีกล่องข้อมูลมาสอบถามว่าเรา male or female ดังรูป
3) กรอกข้อมูลลงไป
ตามที่ข้อมูลสอบถามมา (กรอกเสร็จก็จะออกมาดังรูป)
MATLAB
MATLAB มาจากคำว่า Matrix Laboratory เป็นโปรแกรมสำหรับช่วยงานคำนวณทางคณิตศาสตร์มีชื่อเสียงมากในปัจจุบัน
และเป็นที่นิยมสูงสุดทางการศึกษาและอุตสาหกรรม การทำงานของ MATLAB ทำงานลักษณะการตอบสนองกับผู้ใช้ Interactive
สำหรับคำนวณเชิงตัวเลข และการแสดงผลข้อมูล (data visualization)
รวมทั้งมีความสามารถในการจัดรูปคำสั่งในลักษณะการเขียนโปรแกรมเพื่อใช้งานต่างๆ
ทั้งทางวิทยาศาสตร์ และวิศวกรรม
การใช้งานเบื้องต้น MATLAB
•
ทดลองสร้าง row
vector ที่มีสมาชิกประกอบด้วย 1,2,3,4,5 และกำหนดค่าให้ตัวแปร x
>>x = [1 2 3 4 5]
X =
1
2 3 4 5
ใช้เครื่องหมาย = สำหรับกำหนดค่าจากทางด้านขวามือไปที่ตัวแปรทางซ้ายมือเป็นชนิดเวกเตอร์
โดยใช้เครื่องหมาย bracket [] ซึ่งภายใน bracket จะระบุสมาชิก 5 จำนวน แบ่งแยกออกจากกันด้วยเครื่องหมาย ช่องว่าง Space หรืออาจใช้ comma , เช่นเดียวกับทางคณิตศาสตร์ทั่วไป
•
เวกเตอร์อีกลักษณะหนึ่งคือ
Column
vector
จะสร้างคล้ายๆกันแต่เครื่องหมายที่จะแยกสมาชิกออกจากกันจะเปลี่ยนไปใช้เครื่องหมาย semicolon
; แทน หรือทำการสร้าง row vector ก่อนแล้วทำการ transpose ด้วยเครื่องหมาย ‘ เช่น
>> y = [6;7;8;9;10]
Y =
6
7
8
9
10
หรือ y = [ 6 7 8
9 10]
>>
y’
ดังรูปต่อไปนี้
การทำแนวตั้งและแนวนอน
การเลือกตำแหน่งตัวเลข
แสดงการสร้างเวกเตอร์ และกำหนดตัวแปร
โดยส่วนใหญ่ การสร้างเวกเตอร์และเมตริกซ์ จะประกอบด้วยสมาชิกที่มีค่าต่อเนื่องกันไป
แทนที่จะต้องป้อนข้อมูลของสมาชิกทุกตัว MATLAB มีวิธีลัดในการทำในสะดวกขึ้นโดยใช้คำสั่ง colon :
ตัวอย่างการสร้าง row vector u
ที่ประกอบด้วยสมาชิก 0,1,2,3,4,5,6,7,8
>> u = [0 : 8]
U =
0
1 2 3 4 5 6 7 8
ดังรูปต่อไปนี้
การเว้นจำนวนของตัวเลข
•
สำหรับการสร้างเมตริกซ์ใช้หลักการสร้างคล้ายเวกเตอร์
ตัวอย่าง การสร้างเมตริกซ์ A ขนาด 3x3
>>
A = [123;345;678]
A =
1 2 3
3 4 5
6 7 8
ถ้าต้องการอ้างอิงที่ตำแหน่งต่างๆ
ของเมตริกซ์ต้องอ้างอิงตาม row และ
column ตัวอย่างอ้างอิงค่าสมาชิกของเมตริกซ์ A
ที่อยู่แถวที่ 2 คอลัมน์ที่ 3 มีค่าคือ 5
>> A(2,3)
ans =
5
ดังรูปต่อไปนี้
การทำเมตริกซ์
การทำกราฟ
การทำเครื่องคิดเลข
การใส่สี
การเปลี่ยนpanal เป็นชื่อเรา
การสร้างปุ่มเครื่องคิดเลข
ใส่ปุ่มเครื่องคิดเลขเสร็จ
การทำเครื่องหมาย+/-
% ---
Executes on button press in change.
functionchange_Callback(hObject,
eventdata, handles)
%
hObject handle to change (see GCBO)
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
str=get(handles.input,'String');
s=str2double(str);
e=-(s);
t=num2str(e);
set(handles.input,'String',t);
การทำเครื่องหมาย%
% ---
Executes on button press in per.
functionper_Callback(hObject,
eventdata, handles)
% hObject handle to per (see GCBO)
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
str=get(handles.input,'String');
s=str2double(str);
per=s/100;
t=num2str(per);
set(handles.result,'String',t);
การทำเครื่องหมาย 1/x
% ---
Executes on button press in inverse.
functioninverse_Callback(hObject,
eventdata, handles)
%
hObject handle to inverse (see GCBO)
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
str=get(handles.input,'String');
s=str2double(str);
div=(1/s);
t=num2str(div);
set(handles.result,'String',t);
การเครื่องหมายตัวเลข
% --- Executes
on button press in one.
functionone_Callback(hObject,
eventdata, handles)
%
hObject handle to one (see GCBO)
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
str=get(handles.input,'String');
str=strcat(str,'1');
set(handles.input,'String',str);
การทำเครื่องหมายเท่ากับ
% ---
Executes on button press in equal.
functionequal_Callback(hObject,
eventdata, handles)
%
hObject handle to equal (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
str=get(handles.input,'String');
str=eval(str);
set(handles.result,'String',str);
การใส่เครื่องหมายเคลียร์
% ---
Executes on button press in clear.
functionclear_Callback(hObject,
eventdata, handles)
%
hObject handle to clear (see GCBO)
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
set(handles.input,'String','');
set(handles.result,'String','');
Uncalibrated Stereo Image
Rectification
Step by step
•
Step 1 : เขียนให้อ่านไฟล์คู่ภาพ
•
Step 2 : เลือกจุดที่น่าสนใจในคู่ภาพ
•
Step 3 : หาจุดสมมติที่ตรงกัน
•
Step 4 : ลบค่าผิดปกติโดยใช้ Epipolar Constraint
•
Step 5 : ปรับแก้คู่ภาพ
ตัวอย่างดังรูป
เรียกภาพ
เลือกfloder
จะขึ้นแถบด้านซ้ายขึ้นมาเป็นไฟล์ที่อยู่ในfloderที่เราเลือก
ถ้าไฟล์ภาพใหญ่ตัวเลขก็จะวิ่งนานขึ้น
เป็นคำสั่งที่show ลายละเอียดของภาพ
คำสั่งเพื่อเปิดไฟล์ภาพ
คำสั่งปรับภาพให้เป็นสีโทนเทา
เปิดรูปภาพ
คำสั่งเรียกดูค่าการรังสีเชิงคลื่น
figure,imhist(ชื่อรูปที่เราตั้งไว้)
คำสั่ง adjust เป็นคำสั่งปรับแก้ภาพให้ชัดเจนมากยิ่งขึ้น
แต่สามารถปรับได้กับภาพสีเทาหรือขาวดำ
ทำภาพสีเป็นภาพขาวดำ
ใส่คำสั่ง black_white = im2bw(picture) เพื่อทำเป็นภาพขาวดำ
จากนั้นพิมพ์คำสั่ง figure,imshow(black_white) เพื่อเปิดรูปภาพ
ใส่ (;)เพื่อเบรค
การทำภาพสามมิติ