ยกตัวอย่างในเรื่องการเปรียบเทียบสมมติว่าเราเขียนโปรแกรมขึ้นเพื่อมาตรวจสอบรหัสผ่าน เมื่อโปรแกรมถามหารหัสผ่านแล้ว ผู้ใช้ก็จะต้องพิมพ์รหัสผ่านเข้าไป จากนั้นโปรแกรมจะนำค่าที่ได้ไปเปรียบเทียบกับค่าที่ถูกกำหนดเอาไว้ ถ้าตรงกันผู้ใช้งานทำรายการได้ แต่ถ้าไม่ได้ก็จะฟ้องออกมาว่ารหัสผิดพลาด คล้ายๆ ตึก ATM
เครื่องหมายในการเปรียบเทียบ
•จะใช้เมื่อเราต้องการให้มีการเปรียบค่า 2 ค่าว่าเท่ากัน มากกว่า หรือน้อยกว่าหรือไม่โดยอาจจะเปรียบเทียบระหว่างตัวแปรกับค่าตัวเลข หรือระหว่างตัวแปรกับตัวแปรก็ได้ เพื่อให้โปรแกรมดำเนินการตามที่เรากำหนดไว้ ซึ่งมีเครื่องหมายที่ใช้ในการเปรียบเทียบดังนี้
>มากกว่า <น้อยกว่า
>=มากกว่าหรือเท่ากัน <=น้อยกว่าหรือเท่ากัน
!=ไม่เท่ากัน ==เท่ากัน
5 > 3 เป็น จริง
9 < 11 เป็น จริง
5 >= 5 เป็น จริง
4 <= 3 เป็น เท็จ
คำสั่ง if
•คำสั่งตรวจสอบเงื่อนไขในภาษา C คำสั่งแรกที่เราจะเรียนรู้กันคือ if แปลว่า ถ้า ซึ่งมีหน้าที่ตามชื่อของมันเลย นั่นคือ เราจะใช้ if เพื่อตรวจสอบผลของการเปรียบเทียบว่าเป็น “จริง” หรือ “เท็จ”รูปแบบ if (การเปรียบเทียบ) เช่น
1 #include “stdio.h”
2 void main()
3 {
4 int age;
5 printf(“How old are you “);
6 scanf(“%d”,&age);
7 if (age >= 60)
8 printf(“You are old\n”);
9 printf(“Good Bye”);
10 }
Flowchart of if statement
นอกจากตัวเลข จะสามารถเปรียบเทียบได้แล้ว ยังสามารถใช้ตัวอักษร เช่น ‘a’,’b’,’m’ ในการเปรียบเทียบกันได้เช่น โปรแกรมถามเพศ โดยให้ผู้ป้อนค่าใช้ตอบ m (male) หรือ f (female) ที่จำเป็นต้องมีการรับค่าตัวอักษร 1 ตัว เราจะเขียนได้ดังนี้
1 #include “stdio.h”
2 void main()
3 {
4 char gender;
5 gender = ‘m’;
6 if (gender = = ‘m’)
7 printf(“Male”);
8 }
{
char ch1 ='g';
char ch2 = 'k';
printf("ch1 = %d\n",ch1);
printf("ch2 = %d\n",ch2);
if (ch2 > ch1 )
printf("ch2 is more than ch1\n ");
}
จุดน่าสังเกตในการใช้ if
•เพราะเหตุใดเราใช้ if แล้วไม่ต้องตามหลังด้วย semicolon ; ซึ่งตามกฎต้องใส่ ; ปิดท้ายคำสั่งเสมอ เพราะ if และเงื่อนไขที่อยู่ในวงเล็บนั้นยังถือว่าเป็นคำสั่งที่ยังไม่สมบูรณ์ มันจะต้องมีคำสั่งใดๆ ตามหลัง if หนึ่งชุดคำสั่งก่อน จึงถือว่าเป็นคำสั่งสมบูรณ์ เช่น
• if ( age >= 60)
printf(“You are old\n”);
prtintf(“Good bye”);
โจทย์
•ให้นิสิตเขียนโปรแกรมสอบถามผู้ใช้ว่ามีพี่ชาย หรือน้องชาย หรือไม่ ถ้ามีให้ถามอายุของพี่ชาย หรือน้องชาย ด้วย
1. วิเคราะห์ปัญหา
กำหนดชนิดข้อมูลเป็นแบบ char และตัวแปรชื่อ brother
กำหนดตัวกำหนดชนิดข้อมูลเป็นแบบ int และแปรชื่อ age
1. วิเคราะห์ปัญหา
กำหนดชนิดข้อมูลเป็นแบบ char และตัวแปรชื่อ brother
กำหนดตัวกำหนดชนิดข้อมูลเป็นแบบ int และแปรชื่อ age
2. ปัญหา
if (brother = = ‘y’) ถ้าเป็นจริงให้ใส่อายุ
if (brother = = ‘y’) ถ้าเป็นจริงให้ใส่อายุ
Code Ex.
#include “studio.h”
void main()
{
char brother;
int age;
pritnf (“Do you have brother?:”);
scanf (“%c”, & brother);
if (brother == ‘y’) ;
{
printf(“How old is he? :”);
scanf(“%d”, age);
printf(“He is %d years old.\n”,age);
}
printf(“Good bye”);
}
if (brother == ‘y’) ;
{
printf(“How old is he? :”);
scanf(“%d”, age);
printf(“He is %d years old.\n”,age);
}
printf(“Good bye”);
}
if และ else
•If เป็นคำสั่งที่ใช้ในการตรวจจับผลเปรียบเทียบที่เป็นจริง แต่ สำหรับผลการเปรียบที่เป็นเท็จ เราจะใช้ else ในการตรวจสอบ หรือถ้าแบบเข้าใจได้คือ else จะทำตรงกันข้ามกับ if1. วิเคราะห์โจทย์
กำหนดชนิดตัวแปรเป็น และตั้งชื่อตัวแปรว่า age
2. ใช้ if และใช้ else ถ้าอายุยังไม่ถึง 60 ปี
Code Ex.
#include “stdio.h”
Void main()
{
int age;
scanf(“%d”,&age);
if(age
>= 60)
{
printf(“You are old\n”);
else
{
printf(“You are young\n”);
}
printf(“Good
Bye”);
return 0;
}
}
การเปรียบเทียบพร้อมๆ กัน
•ในการเขียนโปรแกรมที่ซับซ้อนมากขึ้น บางครั้งเราต้องการการตรวจสอบค่าตัวแปรหลายๆ ตัวพร้อมกัน และต้องทำคำสั่งใดคำสั่งหนึ่งหรือชุดคำสั่ง เมื่อผลการเปรียบเทียบเป็นจริงทุกค่าเท่านั้น เช่น ใช้ if ตรวจสอบว่าค่าตัวแปร a กับ b นั้นมากกว่า 0 ทั้งคู่หรือไม่ ซึ่งเขียนโปรแกรมได้ดังนี้โดยใช้ if
int a= 20;
int b = 6;
if (a > 0)
{
if (b > 0)
{
printf(“Yes !! a > 0 and b > 0”);
}
}
int a= 20;
int b = 6;
if (a > 0)
{
if (b > 0)
{
printf(“Yes !! a > 0 and b > 0”);
}
}
เครื่องหมายทางตรรกะมีอยู่ 2 แบบดังนี้
&& เครื่องหมาย “และ” (AND)
|| เครื่องหมาย “หรือ” (OR)
&& (AND)
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.”);
}
หรือ (OR)
int b = 6;
int c = 8;
if ((a < 0) || (b < 0) || (C > 5))
{
printf(“Yes!! OK.”);
}
คำสั่ง if และ else if
จากตัวอย่างที่ผ่านมา เราได้ศึกษาถึงการตรวจสอบเงื่อนไขโดยใช้ if และ else ซึ่งจะใช้ในกรณีที่มีแค่เงื่อนไขเดียว เช่นIf (a == 0)
printf(“OK”);
Else
printf(“Not Ok”);
•ถ้าเราต้องการเปรียบเทียบตัวแปร a กับค่าอื่นๆ เช่น a == 20,
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”);
คำสั่ง switch…case
•การใช้คำสั่ง switch case จะคล้ายกับคำสั่ง if else if แต่จะง่ายกว่าและดูเข้าใจได้ง่ายกว่า คำสั่ง switch ใช้ได้ดีกับการตรวจของค่าตัวแปรนั้นดังเช่นswitch (ค่าตัวแปร)
{
case ค่าที่ 1 : สิ่งที่ต้องการให้ทำ
case ค่าที่ 2 : สิ่งที่ต้องการให้ทำ
case ค่าที่ 3 : สิ่งที่ต้องการให้ทำ
…
default : สิ่งที่ต้องการให้ทำ ถ้าอยู่นอกเหนือจากข้างบน
}
การทำซ้ำ (Iteration)
•เนื้อหา
-ทำไมจึงต้องมีการทำซ้ำ
- คำสั่งที่ใช้ในการทำซ้ำ
การทำซ้ำคือ การสั่งให้โปรแกรมทำงานอย่างใดอย่างหนึ่งวนไปวนมาเรื่อยๆ จนกระทั่งครบตามจำนวนครั้งหรือตามเงื่อนไขที่เรากำหนดไว้ ทำไมถึงต้องมีการทำซ้ำด้วย และทำซ้ำมีประโยชน์อย่างไร
-ทำไมจึงต้องมีการทำซ้ำ
- คำสั่งที่ใช้ในการทำซ้ำ
การทำซ้ำคือ การสั่งให้โปรแกรมทำงานอย่างใดอย่างหนึ่งวนไปวนมาเรื่อยๆ จนกระทั่งครบตามจำนวนครั้งหรือตามเงื่อนไขที่เรากำหนดไว้ ทำไมถึงต้องมีการทำซ้ำด้วย และทำซ้ำมีประโยชน์อย่างไร
•ตัวอย่างที่ 2 การอ่านข้อมูลจากไฟล์ เราจะต้องเขียนโปรแกรมให้อ่านมาทีละชุดและทำอย่างนี้เรื่อยๆ จนกระทั่งสิ้นสุดไฟล์นั้นตัวอย่าง ถ้าเราต้องการเขียนชื่อ นามสกุลตัวเอง 1000 ครั้ง ถ้าเราไม่รู้จักการทำซ้ำเราต้องเขียนโค้ดแบบนี้
void main()
{
printf(“Krissana
Imsawas\n”); // ครั้งที่ 1
printf(“Krissana
Imsawas\n”); // ครั้งที่ 2
printf(“Krissana
Imsawas\n”); // ครั้งที่ 3
…
…
printf(“Krissana
Imsawas\n”); // ครั้งที่ 99
printf(“Krissana
Imsawas\n”); // ครั้งที่ 1000
}
–แบบมีจำนวนรอบแน่นอน เช่น กรณีที่ต้องแสดงชื่อตัวเอง 1000 ครั้งบนจอภาพ การทำซ้ำแบบนี้จะใช้ for
–แบบเงื่อนไขเป็นตัวตัดสินว่าจะทำซ้ำต่อไปหรือไม่ ใช้ในกรณีที่ต้องการให้โปรแกรมทำซ้ำไปเรื่อยๆ ตราบใดที่เงื่อนไขที่กำหนดยังคงเป็นจริง เช่น ให้โปรแกรมคำนวณไปเรื่อยๆ ถ้าผลคำนวณยังคงเป็นบวก แต่ถ้าเป็น 0 หรือ ติดลบเมื่อไหร่ก็ให้จบโปรแกรมทันที อาจจะใช้การทำซ้ำทั้ง 2 คำสั่ง คือ do…while และ while
คำสั่ง for
•คำสั่ง forนี้ใช้ในกรณีเราต้องการทำซ้ำโดยทราบจำนวนครั้งที่แน่นอน เช่น ถ้าต้องการทำซ้ำ 20 ครั้ง , 30 ครั้ง , 40 ครั้ง เรามักจะใช้ for
•การใช้ for เราต้องกำหนดจำนวนครั้งลงไปว่าจะวนกี่ครั้งซึ่งในการวนด้วยคำสั่ง for นี้จะต้องสร้างตัวแปรขึ้นมาเพื่อทำหน้าที่เป็น “ตัวนับ” (Counter) ซึ่งโดยส่วนมากจะใช้รูปแบบเลขจำนวนเต็ม integer เพราะจะเป็นตัวที่คอยบอกว่าตอนนี้ครบตามจำนวนแล้วหรือยัง ถ้ายังก็วนต่อไปเรื่อยๆ
•การใช้ for เราต้องกำหนดจำนวนครั้งลงไปว่าจะวนกี่ครั้งซึ่งในการวนด้วยคำสั่ง for นี้จะต้องสร้างตัวแปรขึ้นมาเพื่อทำหน้าที่เป็น “ตัวนับ” (Counter) ซึ่งโดยส่วนมากจะใช้รูปแบบเลขจำนวนเต็ม integer เพราะจะเป็นตัวที่คอยบอกว่าตอนนี้ครบตามจำนวนแล้วหรือยัง ถ้ายังก็วนต่อไปเรื่อยๆ
for (กำหนดค่าเริ่มต้นให้กับตัวนับ;
เปรียบเทียบตัวนับครบจำนวนครั้งที่ต้องการหรือยัง;
เพิ่มค่า / ลดค่าตัวนับ)
{
คำสั่งหรือกลุ่มคำสั่งที่ต้องการให้ทำซ้ำ
}
เช่น
for (count = 0; count < 10; count ++)
{
….
}
{
คำสั่งหรือกลุ่มคำสั่งที่ต้องการให้ทำซ้ำ
}
เช่น
for (count = 0; count < 10; count ++)
{
….
}
#include “stdio.h”
void main()
{
int count;
printf(“Begin\n”);
for (count = 0; count < 10; count++)
printf(“Hello %d\n”,count);
printf(“End\n”);
}
คำสั่ง for
#include "stdio.h"
void main()
{
int mother = 2;
int count;
printf("Begin\n");
for(count = 1;count <= 12; count++)
{
int count;
printf(“Begin\n”);
for (count = 0; count < 10; count++)
printf(“Hello %d\n”,count);
printf(“End\n”);
}
void main()
{
int mother = 2;
int count;
printf("Begin\n");
for(count = 1;count <= 12; count++)
{
printf("%d x %d = %d\n",mother, count, mother *count);
printf("%d x %d = %d\n",mother, count, mother *count);
}
printf("End\n");
}
printf("End\n");
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น