SlideShare a Scribd company logo
1
กด Ctrl N เพื่อที่จะสร้างหน้าใหม่ในการทางาน
2
การใช้งานของภาษา C ต้องมี การกาหนดฟังก์ชันหลักการเขียนภาษา C
คือ
void main()
{
………..
}
#include <stdio.h>
void main()
{
}
1
2
#include <stdio.h>
เป็นคาสั่ง include ใช้สาหรับรวมเอา
ไฟล์ส่วนหัว หรือ Header file เข้ามา
ในโปรแกรม เพื่อให้เราเรียกใช้
ฟังก์ชั่นต่างๆ ในภาษา C
3
int x,y,z;
x = 20;
y = 2;
z = x + y;
printf("%d + %d = %dn",x,y,z);
printf("Hello Geoinformaticsnnn");
printf("My name is Jariya Jongkamnnn");
printf("Doraemon");
3
กรอกโค้ดที่ต้องการหา int x,y,z;
int คือ กาหนดตัวแปร x = 20;
y = 2;
z = x + y;
printf("%d + %d = %dn",x,y,z);
printf("Hello Geoinformaticsnnn");
printf("My name is Jariya Jongkamnnn");
printf("Doraemon");
4
จากนั้นกด f11 เพื่อที่จะแสดงหน้าจอ สีดาขึ้นมา
ชื่อโปรแกรม หาค่าผลบวกของเลขจานวนเต็ม 2 จานวน
ตัวแปรที่ใช้ x เก็บค่าจานวนเต็มที่ 1 วิธีการแก้ปัญหาใช้สมการ sum = x + y
y เก็บค่าจานวนเต็มที่ 2 เพื่อให้รู้ค่าของตัวแปรที่เรากาหนดว่า x = 20;
sum เก็บค่าผลบวกของจานวนเต็มทั้ง 2 จานวน y = 2;
ชนิดของข้อมูล x, y, sum เป็นข้อมูลชนิดเลขจานวนเต็ม (integer) x + y= 22
4
5
#include "stdio.h"
void main()
{ ขั้นตอนแรกของการใช้ภาษา C
}
1
2
int num1, num2, sum;
ขั้นตอนการประกาศตัวแปร int num1, num2, sum;
6
int num1, num2, sum; กรอกโค้ดที่ต้องการหา
printf("please insert to number1:");
scanf("%d",&num1);
printf("please insert to number2:");
scanf("%d",&num2);
sum = num1 * num2;
printf("%d x %d = %d",num1,num2,sum);
กด f11 เพื่อแสดงค่า
ผลลัพธ์ของข้อมูลที่
ต้องการหา
3
4
ขั้นตอนการแสดงผลในการหาผลคูณ
แสดงค่าผลลัพธ์ที่ต้องการหาของโค้ดนี้คือการกาหนด
num 1=5
num2=2
sum = num1 * num2; หรือ 5 x 2 = 10
7
int ce, sum; กรอกโค้ดที่ต้องการหา
printf("please insert to C.E.:");
scanf("%d",&ce);
sum = ce + 543;
printf("C.E. convert to B.D. is:%d",sum);
กด f11 เพื่อแสดงค่าผลลัพธ์
ของข้อมูลที่
1
2
ผลรับที่ได้จากการหาค่าของ โจทย์จงแปลง C.E.(ค.ศ) เป็น B.D (พ.ศ)
8
แสดงค่าผลลัพธ์ที่ต้องการหาของโค้ดนี้คือการกาหนด
โจทย์area = 0.5 * (w1 + w2) *h;
w1 = 5
w2 = 3
h = 4
area = 0.5 * (w1 + w2) *h; หรือ 0.5 x ( w1 + w2 ) x 4 = 16
float w1,w2,h,area;
printf("please insert to w1:");
scanf("%f",&w1);
printf("please insert to w2:");
scanf("%f",&w2);
printf("please insert to heigh:");
scanf("%f",&h);
area = 0.5 * (w1 + w2) *h;
printf("result area is to %f",area);
1
2
กด f11 เพื่อแสดงค่าผลลัพธ์ของข้อมูลที่
9
รูปที่ 1
char A = 'a';
A = A + 15;
printf("A result is %c",A);
1
2
กด f11 เพื่อแสดงค่าผลลัพธ์ของข้อมูลที่
การกาหนดตัวแปรโดยการหาค่าตัวอักษรภาษาอังกฤษ A-Z
เช่น char A = 'a';
A = A + 15;
โดยเริ่มนับตั้งแต่ A จนถึงตัวที่ 15 ผลลัพธ์ที่ได้คือ P
10
รูปที่ 2
char B = 'b';
B = B + 20;
printf("B result is %c",B);
กด f11 เพื่อแสดงค่าผลลัพธ์ของข้อมูลที่
1
2
การกาหนดตัวแปรโดยการหาค่าตัวอักษรภาษาอังกฤษ A-Z
เช่น char B = 'b';
B = B + 15;
โดยเริ่มนับตั้งแต่ B จนถึงตัวที่ 20 ผลลัพธ์ที่ได้คือ
V
11
โปรแกรมสอบถามอายุมากกว่าหรือเท่ากับ60ปีให้บอกว่าแก่ แต่ถ้าน้อยกว่า 60ปี ให้บอกว่าหน้าอ่อน
If และ else
• If เป็นคาสั่งที่ใช้ในการตรวจจับผลเปรียบเทียบที่เป็นจริง แต่ สาหรับผลการเปรียบที่เป็นเท็จ เราจะใช้else ในการ
ตรวจสอบ หรือถ้าแบบเข้าใจได้คือ else จะทาตรงกันข้ามกับ if
• ถ้าต้องการให้ผู้ใช้โปรแกรมของเรากรอก อายุ โดยอายุที่กรอกต้องมากกว่าหรือเท่ากัน 60 ปี ถ้าไม่ถึงให้แสดงว่ายังไม่แก่
1. วิเคราะห์โจทย์
กาหนดชนิดตัวแปรเป็น และตั้งชื่อตัวแปรว่า age
2. ใช้ if (age >= 60) และใช้else ถ้าอายุยังไม่ถึง 60 ปี
int age;
printf("How old are you?:");
scanf("%d",&age);
if(age >= 60)
{
printf("You are old!!!!n");
}
else
{
printf("You are young(*_*)n");
}
printf("good bye (^/^)");
return 0;
}
1
2
กด f11 เพื่อแสดงค่าผลลัพธ์ของ
12
โปรแกรมการใช้ภาษา C คานวณหาเกรด
• else if ((score >=65) && (score <=69))
• printf("Grade C+");
• else if((score >=60) &&(score <= 64))
• printf("Grade C");
• else if ((score >=55) && (score <= 59))
• printf("Grade D+");
• else if ((score >=50) && (score <= 54))
• printf("Grade D");
• else
• printf("Grade F!!!!");
• return 0;
• int score;
• printf("Please input your score:");
• scanf("%d",&score);
• if((score >=80) && (score<=100))
• printf("Grade A");
• else if ((score >=75) && (score <=79))
• printf("Grade B+");
• else if ((score >=70) && (score <=74))
• printf("Grade B");
กด F11เพื่อจะแสดงผลว่าเราจะได้เกรด
อะไร
13
การใช้โปรแกรมคานวณหาสูตรคูณแม่ 2 โดยใช้ภาษา C ในการคานวณ
การใช้ภาษา c ค้นหาว่ามีพี่ชายหรือไม
การใช้โปรแกรมคานวณหาสูตรคูณแม่ 2 โดยใช้ภาษา C ในการคานวณ
การใช้ภาษา c ค้นหาว่ามีพี่ชายหรือไม่
14
• คาสั่ง for นี้ใช้ในกรณีเราต้องการทาซ้าโดยทราบจานวนครั้งที่แน่นอน เช่น ถ้าต้องการทาซ้า 20 ครั้ง , 30 ครั้ง , 40 ครั้ง
เรามักจะใช้for
• การใช้for เราต้องกาหนดจานวนครั้งลงไปว่าจะวนกี่ครั้งซึ่งในการวนด้วยคาสั่ง for นี้จะต้องสร้างตัวแปรขึ้นมาเพื่อทา
หน้าที่เป็น “ตัวนับ” (Counter) ซึ่งโดยส่วนมากจะใช้รูปแบบเลขจานวนเต็ม integer เพราะจะเป็นตัวที่คอยบอกว่าตอนนี้
ครบตามจานวนแล้วหรือยัง ถ้ายังก็วนต่อไปเรื่อยๆ
หลักการใช้for
15
การใช้ while กับ do while
การใช้while จะแตกต่างกับ do while จะมีลักษณะการใช้งานคล้ายๆ กันแต่แตกต่างกันตรงที่ว่า
while จะมีการตรวจสอบเงื่อนไขก่อน ถึงจะเริ่มทาในครั้งแรก และยังจะตรวจสอบเงื่อนไขสาหรับตอบต่อๆ ไปอีกด้วย
แต่ do while จะเริ่มทาทางานตามคาสั่งก่อน 1 ครั้ง จากนั้นถึงจะตรวจสอบเงื่อนไงสาหรับรอบต่อ ๆไป
while (condition) {
statement1;
statement2;
...
statementN;
}
รูปแบบการใช้งานของ while
จะเริ่มต้นด้วยการกาหนดเงื่อนไข ที่จะให้ทางานเป็น Loop ก่อนเสมอ
และภายใน statement ใน Loop ควรจะมี statement ที่ทาการเปลี่ยนแปลงค่าตัวแปรที่ใช้ตรวจสอบ
มิเช่นนั้น Loop อาจทางานไม่หยุด
การใช้ while กับ do while
16
ในตัวอย่างนี้ จะพิมพ์ตัวเลขตั้งแต่ 1 ถึง 10
เงื่อนไขที่ให้ loop ทางานคือ
ตราบใด ที่ ตัวแปร count น้อยกว่าหรือเท่ากับ 10 ให้ทางานต่อไปเรื่อยๆ while (count <= 10)
โดยที่ ตัวแปร count จะมีค่าเริ่มต้นเท่ากับ 1
และภายใน Loop จะมีการเปลี่ยนแปลงค่าของตัวแปร count คือ ทุกๆ รอบการทางาน
ตัวแปร count จะมีค่าเพิ่มขึ้นมา 1 count++
การใช้while (count <= 10)
17
ข้อแตกต่างของ do while จาก while คือ do while จะเริ่มทางานครั้งแรกโดยไม่ตรวจสอบเงื่อนไขเลย
แต่จะเริ่มตรวจสอบเงื่อนไขสาหรับรอบครั้งถัดไป
do {
statement1;
statement2;
...
statementN;
} while (condition);
รูปแบบการใช้งาน จะแตกต่างจาก while ตรงที่ว่า คาสั่ง while (condition) จะย้ายจากบรรทัดบนสุดไปอยู่บรรทัดท้ายสุด
สิ่งที่เปลี่ยนแปลงไปคือ ใช้do while
เข้ามาแทน while
18
การหาค่าโดยกาหนด a=5 , b=7 c= a*b=35
19
• ทดลองสร้าง 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 , เช่นเดียวกับ
ทางคณิตศาสตร์ทั่วไป
>>x = [1 2 3 4 5]
X =
1 2 3 4 5
ผลลัพธ์ที่เราได้มีทั้งหมด 5 จานวน
1
2
20
• เวกเตอร์อีกลักษณะหนึ่งคือ Column vector จะสร้างคล้ายๆกันแต่เครื่องหมายที่จะแยกสมาชิกออกจากกันจะเปลี่ยนไปใช้
เครื่องหมาย semicolon ; แทน หรือทาการสร้าง row vector ก่อนแล้วทาการ transpose ด้วยเครื่องหมาย ‘ เช่น
>> y = [4;5;6;7;8]
Y =
4
5
6
7
8
หรือ y = [ 4 5 6 7 8]
>> y’
>> y = [4;5;6;7;8]
Y =
4
5
6
7
8
>> y = [4;5;6;7;8] ผลลัพธ์ออกมาจะเป็นแนวตั้งถ้าเติม
เครื่องหมายนี้ปิดท้าย จะเป็นการหยุดเพื่อหาค่าตัวแปร
1
2
21
ต้องการหาค่าโดยเพิ่มขึ้นทีละ 3 เช่น [ 0 : 3 : 20 ] โดยแสดงกราฟ
กราฟแบบเส้น
>> x = [ 0 : 3 : 20 ]
แบบเส้น
กาหนด >> plot (x
จุดสิ้นสุด 20ระยะห่างระหว่างช่วง 3เริ่มนับที่ 0
>> x = [ 0 : 3 : 20 ]
3
4
22
กราฟแบบเส้นปะไข่ปลา
>> plot(x,'--bs')
กราฟแบบวงกลม
>> plot(x,'b--o')
5
6
23
การสร้างโปรแกรมWebcam
กราฟเส้นสีฟ้า
>> plot(x,'c--*')
7
24
การเลือก GUIDE Application Options
• การเลือก GUIDE Application Options เมื่อเราต้องการจะใช้GUIDE นั้น ครั้งแรก บน MATLAB COMMAND
WONDOW ที่prompt เราสั่ง
» guide
จากนั้น Layout Editor จะปรากฏขึ้น ซึ่งมีลักษณะดังรูป
25
คลิก Select เพื่อวาดตาราง
1
3
คลิกเลือก Titie
แล้วพิมพ์ข้อข้อตามที่ต้องการ
4
หัวข้อที่ปรับแก้
5
ดับเบิลคลิก Panel จะขึ้นเป็นตาราง
2
26
คลิก Select เพื่อวาดตาลางที่ 2
6
คลิก Toggle Button เพื่อสร้างช่องแสดง
ผลลัพธ์และช่องสาหรับปุ่มเครื่องคิดเลข
7
พิมพ์guibe แล้ว enter >> กด File >> Preferences >> ติกชช่อง
แรก >> กด ok
ดับเบิลคลิก Panel จะขึ้นเป็นตาราง Title พิมพ์เครื่องคิดเลข
Tag คือการตั้งชื่อไฟล์นั้นๆ
27
ใช้new script คือการ
เขียนคาสั่งทีเดียว
จะขึ้นหน้าต่างใหม่แบบนี้
1
2
28
• ขั้นตอนแรกเป็นการอ่านไฟล์คู่ภาพที่จะนามาทา 3D โดยที่เรากาหนดได้แก่
• l1 เป็นค่าตัวแปรที่อ่านไฟล์แล้วเก็บค่าภาพทางด้านซ้ายมือ
• l2 เป็นค่าตัวแปรที่อ่านไฟล์แล้วเก็บค่าภาพทางขวามืv
• rgb2gray เป็นฟังก์ชันที่แปลงจากภาพสีให้เป็นค่าระดับสีเทาเพื่อง่ายต่อการหาจุดที่น่าสนใจในขั้นตอนต่อไป
• imread เป็นฟังก์ชันไว้อ่านไฟล์ภาพต่างๆ เช่น .jpg, .TIFF, .PNG, . BMP
ตัวอย่าง :
L1 = rgb2gray(imread('left.jpg'));
L2 = rgb2gray(imread('right.jpg'));
%read image and transform gray
L1 = rgb2gray(imread('left.jpg'));
L2 = rgb2gray(imread('right.jpg'));
3
ขั้นตอนที่ 1 เขียนให้อ่านไฟล์คู่ภาพ
29
ฟังก์ชัน imshowpair เป็นการแสดงแบบคู่ภาพพร้อมกัน
ซึ่งประกอบด้วย(ค่าตัวแปร1, ค่าตัวแปรที่2 )
imshowpair(L1,L2,'montage');
title('L1(left);L2(right)');
figure;
imshowpair(L1,L2,'ColorChannel','red-cyan');
title('Composite Image (Red - Left Image, Cyan – Right Image)');
เปลี่ยนภาพเทา เป็น
แดง-ฟ้าอ่อน
ตรง Titerจะพิมพ์ตัว
เล็กหรือตัวพิมพ์ใหญ่
ก็ได้ hold on;
ให้ภาพอยู่ในเฟรม
เดียวกัน
4
30
ขั้นตอนที่ 2 เลือกจุดที่น่าสนใจในคู่ภาพ
เลือกจุดที่น่าสนใจในคู่ภาพของแต่ละภาพ ซึ่ง blobs1 และ blobs2 เป็นชื่อตัวแปรของแต่ละภาพ ซึ่งจะเก็บค่าตามที่
ฟังก์ชัน detectSURFFeatures เป็นฟังก์ชันตรวจจับพื้นที่ที่มีลักษณะคล้ายกันของทั้ง 2 ภาพ โดยแสดงออกมาเป็นวงกลมใช้
ฟังก์ชัน 'MetricThreshold', 2000 เช่นนี้
blobs1 = detectSURFFeatures(L1,'MetricThreshold',2000);
blobs2 = detectSURFFeatures(L2,'MetricThreshold',2000);
5
ขั้นตอนที่ 2 เลือกจุดที่น่าสนใจในคู่ภาพ
31
ขั้นตอนที่ 3 หาจุดสมมติที่ตรงกัน
การค้นหาตาแหแน่งของจุดที่เหมือนกันของแต่ละภาพ
matchedPoints1 = validBlobs1(indexPairs(:,1),:);
matchedPoints2 = validBlobs2(indexPairs(:,2),:);
ใช้ค่าความแตกต่างสัมบูรณ์ sum of absolute differences (SAD) ในการกาหนดเป็นตัวชี้ของการจับคู่ของเส้น
indexPairs = matchFeatures(features1, features2, 'Metric','SAD','MatchThreshold', 5)
ใช้ฟังก์ชัน extracFeatures และ matchFeatures ในการหาจุดสมมติที่ตรงกัน ในแต่ละblob ตามขั้นตอนที่แล้ว
[features1, validBlobs1] = extractFeatures(I1, blobs1);
[features2, validBlobs2] = extractFeatures(I2, blobs2);
6
7
8
ขั้นตอนที่ 3 หาจุดสมมติที่ตรงกัน
32
แสดงการจับคู่ของจุดที่เหมือนกันบนภาพผสมของคู่ภาพ
figure;
showMatchedFeatures(I1, I2, matchedPoints1, matchedPoints2);
แสดงสัญลักษณ์
legend('Putatively matched points in L1', 'Putatively matched points in L2');
9
10
00
33
ขั้นตอนที่ 4 ลบค่าผิดปกติโดยใช้Epipolar Constraint
ความถูกต้องของการจับคู่ของจุดต้องเป็นที่ยอมรับของ epipolar constraints หมายความว่า จุดของคู่ภาพต้องเอน
ลงบนเส้น epipolar ที่กาหนดไว้โดยเป็นจุดที่ตรงกันจริงๆ ซึ่งจะใช้การฟังก์ชัน estimateFundamentalMatrix ในการ
วิเคราะห์
[fMatrix, epipolarInliers, status] = estimateFundamentalMatrix(matchedPoints1, matchedPoints2,'Method',
'RANSAC','NumTrials', 10000, 'DistanceThreshold', 0.1, 'Confidence', 99.99);
if status ~= 0 || is EpipoleInImage(fMatrix', size(L1))|| is EpipoleInImage(fMatrix', size(L2))
erro(['Either not enought matching points were found']);
end
inlierPoints1 = matchedPoints1(epipolarInliers, :);
inlierPoints2 = matchedPoints2(epipolarInliers, :);
figure;
showMatchedFeatures(L1, L2, inlierPoints1, inlierPoints2);
legend('Inlier points in L1', 'Inlier points in L2');
11
ขั้นตอนที่ 4 ลบค่าผิดปกติโดยใช้Epipolar Constraint
34
ขั้นตอนที่ 5 ปรับแก้คู่ภาพ
ภาพที่ได้
ใช้ฟังก์ชัน estimateUncalibratedRectification ในการวิเคราะห์การแปลงปรับแก้
การปรับแก้ภาพโดยในการแปลงเส้นโครงของ tform1 และ tform2 และแสดงการผสมสีของภาพที่ปรับแก้
12
13
ขั้นตอนที่ 5 ปรับแก้คู่ภาพ
35
ภาพที่ได้
36
ขั้นตอนที่ 6 การตัดขอบพื้นที่ซ้อนทับของภาพที่ปรับแก้
Irectified = cvexTransformImagePair(I1, tform1, I2, tform2);
figure;
imshow(Irectified);
title('Rectified Stereo Images (Red - Left Image, Cyan - Right Image)');
14
ขั้นตอนที่ 6 การตัดขอบพื้นที่ซ้อนทับของภาพที่ปรับแก้

More Related Content

PPT
PPT
C language
PDF
โปรแกรม
PDF
PDF
59170284 สาวิกา
PDF
การเขียนฟังก์ชั่นในภาษา C
PDF
C language
โปรแกรม
59170284 สาวิกา
การเขียนฟังก์ชั่นในภาษา C

What's hot (18)

PDF
3.5 การแสดงผลและการรับข้อมูล
PDF
PDF
PDF
PDF
แนวคิดในการเขียนโปรแกรม
PDF
ภาษา C เบื้องต้น
PPT
1 test
PDF
3.6 การเขียนโปรแกรมคำนวณ
PDF
ตัวอย่างโปรแกรมลงBlog
PDF
2 การรับข้อมูลและการแสดงผลข้อมูล 8-10-2555
PDF
งานPPT
PPT
2. โครงสร้างภาษาซี
PDF
โปรแกรม Matlap
PDF
หน่วยที่ 4 การสร้างแบบสอบถาม
PDF
นางสาว นันทิยา แก้วตา 58170108 02
3.5 การแสดงผลและการรับข้อมูล
แนวคิดในการเขียนโปรแกรม
ภาษา C เบื้องต้น
1 test
3.6 การเขียนโปรแกรมคำนวณ
ตัวอย่างโปรแกรมลงBlog
2 การรับข้อมูลและการแสดงผลข้อมูล 8-10-2555
งานPPT
2. โครงสร้างภาษาซี
โปรแกรม Matlap
หน่วยที่ 4 การสร้างแบบสอบถาม
นางสาว นันทิยา แก้วตา 58170108 02
Ad

Viewers also liked (10)

PPTX
Enqezny Project
PDF
Get startedhfg with dropbox
PDF
BSide 2016 Information-Driven Product Design
DOCX
Giúp xương chắc khỏe hơn
PDF
PDF
An Overview of the FIRST LEGO League Program at New Braunfels Public Library
PPTX
Unit Test Lab - Why Write Unit Tests?
PPTX
Strategy Pack AW15 Pans
PPTX
تطبيقات قوقل في التعليم
PPTX
VMware Vsphere Graduation Project Presentation
Enqezny Project
Get startedhfg with dropbox
BSide 2016 Information-Driven Product Design
Giúp xương chắc khỏe hơn
An Overview of the FIRST LEGO League Program at New Braunfels Public Library
Unit Test Lab - Why Write Unit Tests?
Strategy Pack AW15 Pans
تطبيقات قوقل في التعليم
VMware Vsphere Graduation Project Presentation
Ad

Similar to Computer programming (20)

DOCX
ชื่อนางสาวรัตนาวดี   ติมุลา   รหัสนิสิต 59670107 กลุ่ม 3301  
DOCX
ชื่อนางสาวรัตนาวดี   ติมุลา   รหัสนิสิต 59670107   กลุ่ม 3301
DOCX
ชื่อนางสาวรัตนาวลี     ติมุลา    รหัสนิสิต 59670108  กลุ่ม 3301
DOC
การเขียนคำสั่งควบคุมขั้นพื้นฐาน
PDF
ภาษาซีเบื้องต้น
PPT
ภาษาซี
PDF
Intro c
PDF
C lu
PDF
lesson 3
PDF
PDF
content 3
PDF
59170065 พัชริกา
PDF
บทที่ 2 ตัวแปร
PDF
ทบทวนภาษา C(1)
PPT
1. ประวัติภาษาซี
PDF
ภาษา C
PPT
C slide
PDF
งานนำเสนอ1
ชื่อนางสาวรัตนาวดี   ติมุลา   รหัสนิสิต 59670107 กลุ่ม 3301  
ชื่อนางสาวรัตนาวดี   ติมุลา   รหัสนิสิต 59670107   กลุ่ม 3301
ชื่อนางสาวรัตนาวลี     ติมุลา    รหัสนิสิต 59670108  กลุ่ม 3301
การเขียนคำสั่งควบคุมขั้นพื้นฐาน
ภาษาซีเบื้องต้น
ภาษาซี
Intro c
C lu
lesson 3
content 3
59170065 พัชริกา
บทที่ 2 ตัวแปร
ทบทวนภาษา C(1)
1. ประวัติภาษาซี
ภาษา C
C slide
งานนำเสนอ1

Computer programming

  • 1. 1 กด Ctrl N เพื่อที่จะสร้างหน้าใหม่ในการทางาน
  • 2. 2 การใช้งานของภาษา C ต้องมี การกาหนดฟังก์ชันหลักการเขียนภาษา C คือ void main() { ……….. } #include <stdio.h> void main() { } 1 2 #include <stdio.h> เป็นคาสั่ง include ใช้สาหรับรวมเอา ไฟล์ส่วนหัว หรือ Header file เข้ามา ในโปรแกรม เพื่อให้เราเรียกใช้ ฟังก์ชั่นต่างๆ ในภาษา C
  • 3. 3 int x,y,z; x = 20; y = 2; z = x + y; printf("%d + %d = %dn",x,y,z); printf("Hello Geoinformaticsnnn"); printf("My name is Jariya Jongkamnnn"); printf("Doraemon"); 3 กรอกโค้ดที่ต้องการหา int x,y,z; int คือ กาหนดตัวแปร x = 20; y = 2; z = x + y; printf("%d + %d = %dn",x,y,z); printf("Hello Geoinformaticsnnn"); printf("My name is Jariya Jongkamnnn"); printf("Doraemon");
  • 4. 4 จากนั้นกด f11 เพื่อที่จะแสดงหน้าจอ สีดาขึ้นมา ชื่อโปรแกรม หาค่าผลบวกของเลขจานวนเต็ม 2 จานวน ตัวแปรที่ใช้ x เก็บค่าจานวนเต็มที่ 1 วิธีการแก้ปัญหาใช้สมการ sum = x + y y เก็บค่าจานวนเต็มที่ 2 เพื่อให้รู้ค่าของตัวแปรที่เรากาหนดว่า x = 20; sum เก็บค่าผลบวกของจานวนเต็มทั้ง 2 จานวน y = 2; ชนิดของข้อมูล x, y, sum เป็นข้อมูลชนิดเลขจานวนเต็ม (integer) x + y= 22 4
  • 5. 5 #include "stdio.h" void main() { ขั้นตอนแรกของการใช้ภาษา C } 1 2 int num1, num2, sum; ขั้นตอนการประกาศตัวแปร int num1, num2, sum;
  • 6. 6 int num1, num2, sum; กรอกโค้ดที่ต้องการหา printf("please insert to number1:"); scanf("%d",&num1); printf("please insert to number2:"); scanf("%d",&num2); sum = num1 * num2; printf("%d x %d = %d",num1,num2,sum); กด f11 เพื่อแสดงค่า ผลลัพธ์ของข้อมูลที่ ต้องการหา 3 4 ขั้นตอนการแสดงผลในการหาผลคูณ แสดงค่าผลลัพธ์ที่ต้องการหาของโค้ดนี้คือการกาหนด num 1=5 num2=2 sum = num1 * num2; หรือ 5 x 2 = 10
  • 7. 7 int ce, sum; กรอกโค้ดที่ต้องการหา printf("please insert to C.E.:"); scanf("%d",&ce); sum = ce + 543; printf("C.E. convert to B.D. is:%d",sum); กด f11 เพื่อแสดงค่าผลลัพธ์ ของข้อมูลที่ 1 2 ผลรับที่ได้จากการหาค่าของ โจทย์จงแปลง C.E.(ค.ศ) เป็น B.D (พ.ศ)
  • 8. 8 แสดงค่าผลลัพธ์ที่ต้องการหาของโค้ดนี้คือการกาหนด โจทย์area = 0.5 * (w1 + w2) *h; w1 = 5 w2 = 3 h = 4 area = 0.5 * (w1 + w2) *h; หรือ 0.5 x ( w1 + w2 ) x 4 = 16 float w1,w2,h,area; printf("please insert to w1:"); scanf("%f",&w1); printf("please insert to w2:"); scanf("%f",&w2); printf("please insert to heigh:"); scanf("%f",&h); area = 0.5 * (w1 + w2) *h; printf("result area is to %f",area); 1 2 กด f11 เพื่อแสดงค่าผลลัพธ์ของข้อมูลที่
  • 9. 9 รูปที่ 1 char A = 'a'; A = A + 15; printf("A result is %c",A); 1 2 กด f11 เพื่อแสดงค่าผลลัพธ์ของข้อมูลที่ การกาหนดตัวแปรโดยการหาค่าตัวอักษรภาษาอังกฤษ A-Z เช่น char A = 'a'; A = A + 15; โดยเริ่มนับตั้งแต่ A จนถึงตัวที่ 15 ผลลัพธ์ที่ได้คือ P
  • 10. 10 รูปที่ 2 char B = 'b'; B = B + 20; printf("B result is %c",B); กด f11 เพื่อแสดงค่าผลลัพธ์ของข้อมูลที่ 1 2 การกาหนดตัวแปรโดยการหาค่าตัวอักษรภาษาอังกฤษ A-Z เช่น char B = 'b'; B = B + 15; โดยเริ่มนับตั้งแต่ B จนถึงตัวที่ 20 ผลลัพธ์ที่ได้คือ V
  • 11. 11 โปรแกรมสอบถามอายุมากกว่าหรือเท่ากับ60ปีให้บอกว่าแก่ แต่ถ้าน้อยกว่า 60ปี ให้บอกว่าหน้าอ่อน If และ else • If เป็นคาสั่งที่ใช้ในการตรวจจับผลเปรียบเทียบที่เป็นจริง แต่ สาหรับผลการเปรียบที่เป็นเท็จ เราจะใช้else ในการ ตรวจสอบ หรือถ้าแบบเข้าใจได้คือ else จะทาตรงกันข้ามกับ if • ถ้าต้องการให้ผู้ใช้โปรแกรมของเรากรอก อายุ โดยอายุที่กรอกต้องมากกว่าหรือเท่ากัน 60 ปี ถ้าไม่ถึงให้แสดงว่ายังไม่แก่ 1. วิเคราะห์โจทย์ กาหนดชนิดตัวแปรเป็น และตั้งชื่อตัวแปรว่า age 2. ใช้ if (age >= 60) และใช้else ถ้าอายุยังไม่ถึง 60 ปี int age; printf("How old are you?:"); scanf("%d",&age); if(age >= 60) { printf("You are old!!!!n"); } else { printf("You are young(*_*)n"); } printf("good bye (^/^)"); return 0; } 1 2 กด f11 เพื่อแสดงค่าผลลัพธ์ของ
  • 12. 12 โปรแกรมการใช้ภาษา C คานวณหาเกรด • else if ((score >=65) && (score <=69)) • printf("Grade C+"); • else if((score >=60) &&(score <= 64)) • printf("Grade C"); • else if ((score >=55) && (score <= 59)) • printf("Grade D+"); • else if ((score >=50) && (score <= 54)) • printf("Grade D"); • else • printf("Grade F!!!!"); • return 0; • int score; • printf("Please input your score:"); • scanf("%d",&score); • if((score >=80) && (score<=100)) • printf("Grade A"); • else if ((score >=75) && (score <=79)) • printf("Grade B+"); • else if ((score >=70) && (score <=74)) • printf("Grade B"); กด F11เพื่อจะแสดงผลว่าเราจะได้เกรด อะไร
  • 13. 13 การใช้โปรแกรมคานวณหาสูตรคูณแม่ 2 โดยใช้ภาษา C ในการคานวณ การใช้ภาษา c ค้นหาว่ามีพี่ชายหรือไม การใช้โปรแกรมคานวณหาสูตรคูณแม่ 2 โดยใช้ภาษา C ในการคานวณ การใช้ภาษา c ค้นหาว่ามีพี่ชายหรือไม่
  • 14. 14 • คาสั่ง for นี้ใช้ในกรณีเราต้องการทาซ้าโดยทราบจานวนครั้งที่แน่นอน เช่น ถ้าต้องการทาซ้า 20 ครั้ง , 30 ครั้ง , 40 ครั้ง เรามักจะใช้for • การใช้for เราต้องกาหนดจานวนครั้งลงไปว่าจะวนกี่ครั้งซึ่งในการวนด้วยคาสั่ง for นี้จะต้องสร้างตัวแปรขึ้นมาเพื่อทา หน้าที่เป็น “ตัวนับ” (Counter) ซึ่งโดยส่วนมากจะใช้รูปแบบเลขจานวนเต็ม integer เพราะจะเป็นตัวที่คอยบอกว่าตอนนี้ ครบตามจานวนแล้วหรือยัง ถ้ายังก็วนต่อไปเรื่อยๆ หลักการใช้for
  • 15. 15 การใช้ while กับ do while การใช้while จะแตกต่างกับ do while จะมีลักษณะการใช้งานคล้ายๆ กันแต่แตกต่างกันตรงที่ว่า while จะมีการตรวจสอบเงื่อนไขก่อน ถึงจะเริ่มทาในครั้งแรก และยังจะตรวจสอบเงื่อนไขสาหรับตอบต่อๆ ไปอีกด้วย แต่ do while จะเริ่มทาทางานตามคาสั่งก่อน 1 ครั้ง จากนั้นถึงจะตรวจสอบเงื่อนไงสาหรับรอบต่อ ๆไป while (condition) { statement1; statement2; ... statementN; } รูปแบบการใช้งานของ while จะเริ่มต้นด้วยการกาหนดเงื่อนไข ที่จะให้ทางานเป็น Loop ก่อนเสมอ และภายใน statement ใน Loop ควรจะมี statement ที่ทาการเปลี่ยนแปลงค่าตัวแปรที่ใช้ตรวจสอบ มิเช่นนั้น Loop อาจทางานไม่หยุด การใช้ while กับ do while
  • 16. 16 ในตัวอย่างนี้ จะพิมพ์ตัวเลขตั้งแต่ 1 ถึง 10 เงื่อนไขที่ให้ loop ทางานคือ ตราบใด ที่ ตัวแปร count น้อยกว่าหรือเท่ากับ 10 ให้ทางานต่อไปเรื่อยๆ while (count <= 10) โดยที่ ตัวแปร count จะมีค่าเริ่มต้นเท่ากับ 1 และภายใน Loop จะมีการเปลี่ยนแปลงค่าของตัวแปร count คือ ทุกๆ รอบการทางาน ตัวแปร count จะมีค่าเพิ่มขึ้นมา 1 count++ การใช้while (count <= 10)
  • 17. 17 ข้อแตกต่างของ do while จาก while คือ do while จะเริ่มทางานครั้งแรกโดยไม่ตรวจสอบเงื่อนไขเลย แต่จะเริ่มตรวจสอบเงื่อนไขสาหรับรอบครั้งถัดไป do { statement1; statement2; ... statementN; } while (condition); รูปแบบการใช้งาน จะแตกต่างจาก while ตรงที่ว่า คาสั่ง while (condition) จะย้ายจากบรรทัดบนสุดไปอยู่บรรทัดท้ายสุด สิ่งที่เปลี่ยนแปลงไปคือ ใช้do while เข้ามาแทน while
  • 19. 19 • ทดลองสร้าง 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 , เช่นเดียวกับ ทางคณิตศาสตร์ทั่วไป >>x = [1 2 3 4 5] X = 1 2 3 4 5 ผลลัพธ์ที่เราได้มีทั้งหมด 5 จานวน 1 2
  • 20. 20 • เวกเตอร์อีกลักษณะหนึ่งคือ Column vector จะสร้างคล้ายๆกันแต่เครื่องหมายที่จะแยกสมาชิกออกจากกันจะเปลี่ยนไปใช้ เครื่องหมาย semicolon ; แทน หรือทาการสร้าง row vector ก่อนแล้วทาการ transpose ด้วยเครื่องหมาย ‘ เช่น >> y = [4;5;6;7;8] Y = 4 5 6 7 8 หรือ y = [ 4 5 6 7 8] >> y’ >> y = [4;5;6;7;8] Y = 4 5 6 7 8 >> y = [4;5;6;7;8] ผลลัพธ์ออกมาจะเป็นแนวตั้งถ้าเติม เครื่องหมายนี้ปิดท้าย จะเป็นการหยุดเพื่อหาค่าตัวแปร 1 2
  • 21. 21 ต้องการหาค่าโดยเพิ่มขึ้นทีละ 3 เช่น [ 0 : 3 : 20 ] โดยแสดงกราฟ กราฟแบบเส้น >> x = [ 0 : 3 : 20 ] แบบเส้น กาหนด >> plot (x จุดสิ้นสุด 20ระยะห่างระหว่างช่วง 3เริ่มนับที่ 0 >> x = [ 0 : 3 : 20 ] 3 4
  • 24. 24 การเลือก GUIDE Application Options • การเลือก GUIDE Application Options เมื่อเราต้องการจะใช้GUIDE นั้น ครั้งแรก บน MATLAB COMMAND WONDOW ที่prompt เราสั่ง » guide จากนั้น Layout Editor จะปรากฏขึ้น ซึ่งมีลักษณะดังรูป
  • 25. 25 คลิก Select เพื่อวาดตาราง 1 3 คลิกเลือก Titie แล้วพิมพ์ข้อข้อตามที่ต้องการ 4 หัวข้อที่ปรับแก้ 5 ดับเบิลคลิก Panel จะขึ้นเป็นตาราง 2
  • 26. 26 คลิก Select เพื่อวาดตาลางที่ 2 6 คลิก Toggle Button เพื่อสร้างช่องแสดง ผลลัพธ์และช่องสาหรับปุ่มเครื่องคิดเลข 7 พิมพ์guibe แล้ว enter >> กด File >> Preferences >> ติกชช่อง แรก >> กด ok ดับเบิลคลิก Panel จะขึ้นเป็นตาราง Title พิมพ์เครื่องคิดเลข Tag คือการตั้งชื่อไฟล์นั้นๆ
  • 28. 28 • ขั้นตอนแรกเป็นการอ่านไฟล์คู่ภาพที่จะนามาทา 3D โดยที่เรากาหนดได้แก่ • l1 เป็นค่าตัวแปรที่อ่านไฟล์แล้วเก็บค่าภาพทางด้านซ้ายมือ • l2 เป็นค่าตัวแปรที่อ่านไฟล์แล้วเก็บค่าภาพทางขวามืv • rgb2gray เป็นฟังก์ชันที่แปลงจากภาพสีให้เป็นค่าระดับสีเทาเพื่อง่ายต่อการหาจุดที่น่าสนใจในขั้นตอนต่อไป • imread เป็นฟังก์ชันไว้อ่านไฟล์ภาพต่างๆ เช่น .jpg, .TIFF, .PNG, . BMP ตัวอย่าง : L1 = rgb2gray(imread('left.jpg')); L2 = rgb2gray(imread('right.jpg')); %read image and transform gray L1 = rgb2gray(imread('left.jpg')); L2 = rgb2gray(imread('right.jpg')); 3 ขั้นตอนที่ 1 เขียนให้อ่านไฟล์คู่ภาพ
  • 29. 29 ฟังก์ชัน imshowpair เป็นการแสดงแบบคู่ภาพพร้อมกัน ซึ่งประกอบด้วย(ค่าตัวแปร1, ค่าตัวแปรที่2 ) imshowpair(L1,L2,'montage'); title('L1(left);L2(right)'); figure; imshowpair(L1,L2,'ColorChannel','red-cyan'); title('Composite Image (Red - Left Image, Cyan – Right Image)'); เปลี่ยนภาพเทา เป็น แดง-ฟ้าอ่อน ตรง Titerจะพิมพ์ตัว เล็กหรือตัวพิมพ์ใหญ่ ก็ได้ hold on; ให้ภาพอยู่ในเฟรม เดียวกัน 4
  • 30. 30 ขั้นตอนที่ 2 เลือกจุดที่น่าสนใจในคู่ภาพ เลือกจุดที่น่าสนใจในคู่ภาพของแต่ละภาพ ซึ่ง blobs1 และ blobs2 เป็นชื่อตัวแปรของแต่ละภาพ ซึ่งจะเก็บค่าตามที่ ฟังก์ชัน detectSURFFeatures เป็นฟังก์ชันตรวจจับพื้นที่ที่มีลักษณะคล้ายกันของทั้ง 2 ภาพ โดยแสดงออกมาเป็นวงกลมใช้ ฟังก์ชัน 'MetricThreshold', 2000 เช่นนี้ blobs1 = detectSURFFeatures(L1,'MetricThreshold',2000); blobs2 = detectSURFFeatures(L2,'MetricThreshold',2000); 5 ขั้นตอนที่ 2 เลือกจุดที่น่าสนใจในคู่ภาพ
  • 31. 31 ขั้นตอนที่ 3 หาจุดสมมติที่ตรงกัน การค้นหาตาแหแน่งของจุดที่เหมือนกันของแต่ละภาพ matchedPoints1 = validBlobs1(indexPairs(:,1),:); matchedPoints2 = validBlobs2(indexPairs(:,2),:); ใช้ค่าความแตกต่างสัมบูรณ์ sum of absolute differences (SAD) ในการกาหนดเป็นตัวชี้ของการจับคู่ของเส้น indexPairs = matchFeatures(features1, features2, 'Metric','SAD','MatchThreshold', 5) ใช้ฟังก์ชัน extracFeatures และ matchFeatures ในการหาจุดสมมติที่ตรงกัน ในแต่ละblob ตามขั้นตอนที่แล้ว [features1, validBlobs1] = extractFeatures(I1, blobs1); [features2, validBlobs2] = extractFeatures(I2, blobs2); 6 7 8 ขั้นตอนที่ 3 หาจุดสมมติที่ตรงกัน
  • 32. 32 แสดงการจับคู่ของจุดที่เหมือนกันบนภาพผสมของคู่ภาพ figure; showMatchedFeatures(I1, I2, matchedPoints1, matchedPoints2); แสดงสัญลักษณ์ legend('Putatively matched points in L1', 'Putatively matched points in L2'); 9 10 00
  • 33. 33 ขั้นตอนที่ 4 ลบค่าผิดปกติโดยใช้Epipolar Constraint ความถูกต้องของการจับคู่ของจุดต้องเป็นที่ยอมรับของ epipolar constraints หมายความว่า จุดของคู่ภาพต้องเอน ลงบนเส้น epipolar ที่กาหนดไว้โดยเป็นจุดที่ตรงกันจริงๆ ซึ่งจะใช้การฟังก์ชัน estimateFundamentalMatrix ในการ วิเคราะห์ [fMatrix, epipolarInliers, status] = estimateFundamentalMatrix(matchedPoints1, matchedPoints2,'Method', 'RANSAC','NumTrials', 10000, 'DistanceThreshold', 0.1, 'Confidence', 99.99); if status ~= 0 || is EpipoleInImage(fMatrix', size(L1))|| is EpipoleInImage(fMatrix', size(L2)) erro(['Either not enought matching points were found']); end inlierPoints1 = matchedPoints1(epipolarInliers, :); inlierPoints2 = matchedPoints2(epipolarInliers, :); figure; showMatchedFeatures(L1, L2, inlierPoints1, inlierPoints2); legend('Inlier points in L1', 'Inlier points in L2'); 11 ขั้นตอนที่ 4 ลบค่าผิดปกติโดยใช้Epipolar Constraint
  • 34. 34 ขั้นตอนที่ 5 ปรับแก้คู่ภาพ ภาพที่ได้ ใช้ฟังก์ชัน estimateUncalibratedRectification ในการวิเคราะห์การแปลงปรับแก้ การปรับแก้ภาพโดยในการแปลงเส้นโครงของ tform1 และ tform2 และแสดงการผสมสีของภาพที่ปรับแก้ 12 13 ขั้นตอนที่ 5 ปรับแก้คู่ภาพ
  • 36. 36 ขั้นตอนที่ 6 การตัดขอบพื้นที่ซ้อนทับของภาพที่ปรับแก้ Irectified = cvexTransformImagePair(I1, tform1, I2, tform2); figure; imshow(Irectified); title('Rectified Stereo Images (Red - Left Image, Cyan - Right Image)'); 14 ขั้นตอนที่ 6 การตัดขอบพื้นที่ซ้อนทับของภาพที่ปรับแก้