Part1 -> Section1 -> Basic -> 010. Loops

     วันนี้เราจะมาศึกษาการเขียนโปรแกรมเพื่อทำงานแบบวนซ้ำๆ เป็นส่วนที่สำคัญมากในการเขียนโปรแกรม ซึ่งเรามีตัวช่วยอยู่หลายตัวให้เลือกใช้ เราจะมาดูทีละตัวกันเลยว่าใช้งานอย่างไร

The while loop

     while loop เป็น loop ที่ง่านต่อการเริ่มศึกษา ซึ่งการทำงานของมันก็คือ มันจะทำงานใน block code ไปเรื่อยๆ จะกว่าเงื่อนไขที่เราส่งเข้าไปจะเป็น false ลองดูจากตัวอย่าง

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int number = 0;

            while (number < 5)
            {
                Console.WriteLine("Number: " + number);
                number += 1; // equal to number = number + 1
            }

            Console.ReadLine();
        }
    }
}


ผลลัพธ์ได้ดังนี้
โปรแกรมจะปรินท์ตัวเลข 5 ครั้ง เริ่มจากเลข 0 และจะบวกค่าเพิ่มขึ้นทีละ 1 ทำไปเรื่อยๆจนกระทั้งตัวแปร number มีค่ามากกว่าหรือเท่ากับ 5 (number < 5) เงื่อนไขเราจึงจะเป็น false และออกจะ loop ไป มีข้อสังเกตนิดนึง number +=1 นี้คือการเขียนแบบย่อของ number = number + 1 มีค่าเท่ากันชอบแบบไหนก็ใช้แบบนั้นนะคัช

The do while loop

     ตัวนี้อธิบายง่ายๆเลย คือ เหมือนกับ while loop ทุกประการ แตกต่างอยู่แค่จุดเดียวคือ ในรอบแรกที่ do while loop ทำงานนั้น มันจะไม่ตรวจสอบเงื่อนไข (เฉพาะรอบแรกเท่านั้น ส่วนรอบอื่นๆจะตรวจสอบเงื่อนไขปกติเหมือนกันกับ while loop) ลองดูตัวอย่างด้านล่าง

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int number = 0;

            do
            {
                Console.WriteLine("Number: " + number);
                number += 1; // equal to number = number + 1
            } while (number < 5);

            Console.ReadLine();
        }
    }
}

ผลลัพธ์จะได้เหมือนกันกับในตัวอย่าง while loop

The for loop

     for loop นี้ มีรูปแบบการเขียนที่ดูเป็นระบบมากกว่าแบบ while ลองดูจากตัวอย่าง

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int number = 5;
            for (int i = 0; i < number; i++)
            {
                Console.WriteLine("Number: " + number);
            }

            Console.ReadLine();
        }
    }
}

ผลลัพธ์จะได้เหมือนกันกับในตัวอย่าง while loop จะสังเกตว่ารูปแบบ จะดูเป็นระเบียบ โดยตัวนับ (counter) จะถูกประกาศในบล็อคของ for loop การทำงานจะเป็นดังนี้ คือ
1. ประกาศตัวแปรตัวนับ (counter) โดยกำหนดค่าเริ่มต้นเป็นศูนย์ int i =0;
2. ตรวจเช็คเงื่อนไข ในตัวอย่างนี้คือ i < number ซึ่งในรอบแรกจะเป็น 0 < 5 ซึ่งเป็น true
3. ทำงานใน block code ซึ่งตรงนี้คือ ปรินท์ตัวเลขออกมา
4. เปลี่ยนค่าตัวนับ (counter) ซึ่งตรงนี้คือ i++ (i++ จะเทียบเท่ากับ i+=1 และ i = i+1) เพิ่มค่าตัวนับทีละหนึ่ง
จากนั้นโปรแกรมก็จะทำงานไปเรื่อยๆ จนกระทั่งการตรวจสอบเงื่อนไขจะเป็น false จึงจะออกจาก loop

The foreach loop

     เป็น loop ที่แตกต่างจาก loop ทั้งสามแบบก่อนหน้า foreach นี้จะเน้นไปทางวน loop เพื่ออ่านค่าจากตัวแปรที่เป็น collection (คือตัวแปรที่เก็บค่าได้มากกว่าหนึ่งค่า เช่น array, list) ลองดูจากตัวอย่างเพื่อความเข้าใจ

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> list = new List<string>();
            list.Add("Alpha");
            list.Add("Bravo");
            list.Add("Charlie");
            list.Add("Delta");

            foreach (var item in list)
            {
                Console.WriteLine(item);
            }

            Console.ReadLine();
        }
    }
}

ได้ผลลัพธ์ คือ


โปรแกรมนี้เริ่มต้นจะสร้างตัวแปร list ( List<string> หรือชนิดข้อมูล string แต่เก็บเป็น collection แบบ List) ใส่ค่าเข้าไปสี่ตัว จากนั้นก็ใช้ foreach วนตัวแปรนี้เพื่อเข้าถึงค่าแต่ละตัวในตัวแปร list แล้วปรินท์ออกมาโชว์

     บทสรุป loops นั้นมีหลายคำสั่งให้ใช้งาน ดังนั้นการเลือกนำมาใช้งานนั้นจะแล้วแต่กรณีไปว่าเราต้องการให้โปรแกรมทำอะไร และใช้ loop ตัวไหนง่ายสุด อันนี้ต้องใช้ประสบการณ์ต้องลองทำแล้วเราจะรู้เอง แต่สำหรับผมนั้น ผมจะชอบใช้งาน for loop และ foreach loop เนื่องจากว่าดูโค้ดง่ายเป็นระเบียบคัช ส่วนเรื่องความเร็วนั้นไม่แตกต่างกันมาก อันนี้อยู่ที่ความชอบล้วนๆคับ

สอบถามหรือติดตามได้ที่ https://www.facebook.com/learnaspnetmvcjquery

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Part2 -> Section1 The Basic -> 003. MVC Folder Structure

Part2 -> Section1 The Basic -> 001. Introduction

Part2 -> Section1 The Basic -> 005. Controller