web analytics

C Programming : เขียนโปรแกรมภาษา C แบบพื้นฐาน ตอนที่ 2 – If-else & Loop

cover

บทความตอนที่ 1 เราได้เรียนรู้พื้นฐาน พวกการตั้งชื่อต่างๆ แล้วก็ ประกาศตัวแปร การรับค่า ปริ้นค่า บทความนี้จะมาต่อเรื่องพื้นฐานที่สำคัญอีกหนึ่งเรื่อง คือ Operator และ loop

ตอนที่ 1

C Programming : การเขียนโปรแกรมภาษา C แบบพื้นฐาน ตอนที่ 1

 

รู้จักกับ Operator

operator คือ สัญลักษณ์พิเศษ ที่ compiler จะนำไปประมวลผล มีหลายตัว แต่ผมจะขอยกตัวที่สำคัญๆ
ยกตัวอย่างก็ บวกลบคูณหาร + – * / = ไง อันนี้เราเข้าใจ ง่ายๆ ซึ่งมีตัวอื่นๆอีก

 

Increment and decrement
++ เพิ่มค่าขึ้น 1
— ลดค่าลง 1

2

 

Compare

== เท่ากับกันมัย
!= ไม่เท่ากัน
<  , <= , > , >= มากกว่า น้อยกว่า มากกว่าหรือเท่ากับ พวกนี้คงไม่มีอะไรมาก
มักจะใช้เริ่มกับคำสั่ง if

3
Modulo

% คือ หารเอาเศษ เช่นโปรแกรม ตรวจสอบเลขคู่เลขคี่

ถ้า เป็นเลขคู่ นำค่าที่ต้องการมาหาร 2 ถ้าลงตัว มันคือเลขคู่
การหารลงตัวในที่นี้ก็คือ เศษเป็น 0

#include <stdio.h>
main(){
	int a = 100;
	
	if(a % 2 == 0){
		printf("Even");
	}
}

4

 

Assignment

+=
-=
*=
/=
คือการเขียนลัด จากรูปแบบข้างล่างนี้

  data = data + 100;
  data += 100;

ดังนั้น – * / ก็ใช้หลักการเดียวกัน

5

 

 Logical

&& คือ และ
|| คือ หรือ

ใช้ในการทำเงื่อนไข เช่น ถ้า อายุมากกว่า 20 และ มีเงินมากกว่า 1 ล้าน บอกว่าคนนี้รวย

#include <stdio.h>
main(){
	int age = 20;
	int money = 9999999;
	
	if(age >= 20 && money > 1000000){
		printf("rich man");
	}
}

6

เงื่อนไข และ หรือ ก็ทำงานตามตรรกศาสตร์เลย

 

 

รู้จักกับ if-else

ในโปรแกรมแน่นอนมันต้องมีการสร้างเงื่อนไขขึ้น เช่น ถ้าเป็นอันนี้ให้ทำอย่างนี้นะ

ใช้คำสั่ง

if( เงื่อนไข ) {  
     // do somrthing   
} else{
     // do somrthing   
}

ถ้าเงื่อนไขเป็นจริง ก็จะทำงานในกรอบ { }
กรณีที่ไม่ใช่ตามเงื่อนไข ก็ทำที่ {  } ของ else
ลองทำเลยนะ ถ้าอายุมากกว่าหรือเท่ากับ 18 ให้เข้าผับได้
และลองนำมาใช้กับ scanf ด้วยก็ได้
ให้ผู้ใช้ป้อนอายุเข้าไป ถ้าอายุมากกว่าหรือเท่ากับ 18 ก็ ให้เข้าผับได้

  #include <stdio.h>
  main(){
      int age;
      printf("Age = ");
      scanf("%d",&age);
    
      if(age >= 18){
    	  printf("\n welcome to pub.");
      }
      else{
	  printf("\n welcome to school.");
      }
  }

a1

 

ถ้ามี กรณีมากกว่านี้ละ ก็ใช้ else if() เช่น
ถ้าอายุ  25 ปีขึ้นไป เข้าผับแล้ว ก็ยังสามารถเข้า ผับ zone พิเศษได้

  #include <stdio.h>
  main(){
      int age;
      printf("Age = ");
      scanf("%d",&age);
    
      if(age >= 25){
	  printf("\n wel come to pub and special zone.");
      }
      else if(age >= 18){
    	  printf("\n welcome to pub.");
      }
      else{
	  printf("\n welcome to school.");
      }
  }

 

โปรดระวังเรื่อง ลำดับ เงื่อนไขของ if ให้ดีๆ
ถ้าเขียนแบบ code ด้านล่างนี้ แม้ใส่อายุมาเกิน 25 มันก็จะแสดง “welcome to pub” เพราะเงื่อนไขแรก >= 18 เป็นจริง ทำให้มันไม่ทำในเงื่อนไขถัดไป

        if(age >= 18){
    	     printf("\n welcome to pub.");
	}
	else if(age >= 25){
	     printf("\n wel come to pub and special zone.");
	}
	else{
	     printf("\n welcome to school.");
	}

 

หรือจะเขียนแยก if ออกมาเป็นตัวใหม่ก็ทำได้ แล้วแต่กระบวนการทำงาน

#include <stdio.h>
main(){
    int age;
    printf("Age = ");
    scanf("%d",&age);
    
    if(age >= 18){
    	printf("\n welcome to pub.");
    }else{
	printf("\n back.");
    }
	
    if(age >= 25){
	printf("\n special zone.");
    }
}

1

รู้จักกับ for loop

บางทีมีงานบางงานที่ต้องทำซ้ำๆ รู้จำนวนรอบแน่นอน การทำงานแบบวนรอบจึงเดินขึ้น

for( กำหนดค่าเริ่มต้น ; เงื่อนไข ; เปลี่ยนแลงค่า ){
// do something
}

เช่น ผมต้องการปริ้น Hello world 10 บรรทัด อาจเขียนแบบนี้

#include <stdio.h>
main(){
	printf("\n Hello world");
	printf("\n Hello world");
	printf("\n Hello world");
	printf("\n Hello world");
	printf("\n Hello world");
	printf("\n Hello world");
	printf("\n Hello world");
	printf("\n Hello world");
	printf("\n Hello world");
	printf("\n Hello world");
}

แบบ code ด้านบน ก็ทำได้เช่นกัน แต่ถ้าวันนึง อยากจะเปลี่ยนเป็นคำว่า Good bye ละ ต้องเปลี่ยน 10 ที่ หรือไม่ก็ต้องเปลี่ยนตัวนึง แล้วก็อปวางอีกหลายรอบ นี่ 10 ตัว ยังพอไหว แต่ถ้า 100 หรือ 1000 ละ โอยๆๆ

จึงเกิด for loop ขึ้น หลักการคือ กำหนดค่า ตัวนับค่าให้มันก่อน สมมุติ คือ ตัวแปร i ให้เป็น 0
จากนั้นให้มันทำไปทีละรอบ ก็เพิ่มค่าทีละ 1 โดยใช้ i++
แต่ละรอบก็ตรวจสอบว่ามันครบรึยัง โดยเงื่อนไข i < 10 รึปล่าว
ถ้ามันครบ 10 รอบ มันก็จะออกจาก for loop นั่นเอง

#include <stdio.h>
main(){
	int i;
	for(i = 0 ; i < 10 ;i++){
		printf("\n Hello world");
	}
}

7

อันนี้เป็นเพียงตัวอย่างง่ายๆ

 

เราสามารถนำ ตัวแปรที่วนลูปมาใช้ได้ด้วย เช่น ทำสูตรคูณแม่ 2

#include <stdio.h>
main(){
	int i;
	for(i = 1 ; i <= 12 ;i++){
		printf("\n2 * %d = %d ", i , i*2);
	}
}

8

แบบนี้สูตรคูณแม่อะไร จะเอาถึงเท่าไหร่ก็สามารถทำได้ในไม่กี่บบรรทัด

 

Loop ซ้อน Loop

หรือเรียกว่า Nested loop มันก็การนำ loop ไปไว้ใน loop อีกที เช่น
ปริ้น hello world 16 รอบ เขียนแบบ loop ซ้อน 2 ชั้นก็ได้
loop นึงปริ้น 4 อัน อีก loop ทำอีก 4 ครั้ง เป็น 16 รอบพอดี

9

 

รู้จักกับ While loop

loop อีกแบบคือ ทำวนรอบแต่ไม่รู้จำนวนรอบที่แน่นอน อาจทำเพื่อคำนวณอะไรบางอย่าง

while ( เงื่อนไข){

}

ถ้าเงื่อนไขเป็นจริงก็จะทำใน { } ไปเรื่อยๆ ดังนั้น อย่าลืมเปลี่ยนแปลงค่าใน การเช็คเงื่อนไขด้วย จะทำจนกว่าเงื่อนไขเป็นเท็จ

#include <stdio.h>
main(){
	int data = 2;
	
	while(data % 19 != 0){
		data += 3;
	}
	
	printf("data = %d",data);
}

14

 

อีกแบบคือ do while ที่จะทำอย่างน้อย 1 รอบก่อน แล้วค่อยเช็คเงื่อนไข

do{

}while ( เงื่อนไข);

#include <stdio.h>
main(){
	int data = 2;
	
	do{
		data += 3;
	}while(data % 19 != 0);
	
	printf("data = %d",data);
}

15

ซึ่งก็แล้วแต่การประยุกต์ และการนำไปใช้อีกทีครับ

 

การบ้าน

ลองทำ ปริ้น สามเหลี่ยม 4 แบบข้างล่างดู โจทย์คลาสสิคมากๆ กำหนดให้มี 10 แถว
เพื่อแสดงว่าเข้าใจเรื่อง for loop ต้องทำให้ได้นะ ทำได้แล้วคอมเม้นไว้ให้ด้วยนะ

11

10

12

13

 

“จงฝึกฝน และจงฝึกฝน ขั้นตอนที่สำคัญที่สุดที่จะเข้าใจคือการลงมือทำ”

จบบทความนี้แล้ว อ่านต่อในตอนที่ 3 นะครับ

(:

 

C Programming : เขียนโปรแกรมภาษา C แบบพื้นฐาน ตอนที่ 3