본문 바로가기

   
Programming/C#

for, whil, do-while, foreach

반응형

for, while문 같은 문장

 

do-while 하나를 제외하고 같은 문장

 

for

 - 반복문

 - 특정 코드를 원하는 횟수만큼 실행하는 제어문

 

 - for (초기식; 조건식; 증감식)

{

  실행코드;

}

 

 a. 초기식 : 변수 선언 및 초기화(int i; //루프 변수)

 b. 조건식 : bool값을 갖는 표현식. 만족하면 실행코드 실행

 c. 증감식 : 조건식의 결과를 변화시킬 수 있는 표현식

 

포문의 루프형태를 인덱스 형태로 접근할때 많이 사용한다. 어떠한 값에대한 메모리방값

 

using System;

 

namespace Csharp

{

    class Loop

    {

        public static void Main(string[] args)

        {

 

              int i;

              //요구사항] 안녕하세요 x 5

              Console.WriteLine("hi");

              Console.WriteLine("hi");

              Console.WriteLine("hi");

              Console.WriteLine("hi");

              Console.WriteLine("hi");

              Hi();

              Hi();

              Hi();

              Hi();

              Hi();

 

              /*--------------------------------------------------------

                순차적으로 라인 단위로 읽는다.

                for문을 만나 i를 초기화 i 5크거나 같을때까지 i +시킨다.

                1) i=1 2) i<=5; 3) i++ 4) Console 5) } 6) i++

                이러한형태로 계속 돌다가 조건문에 조건에 맞지 않을때

                false가 나온다.

                초기값 i = 1 은 초기에 값만 셋팅해 준다.

              --------------------------------------------------------*/

              for(i=1; i<=5; i++)//가로때문에 i++ 문장 종결자를 안붙였다.

            {

                  Hi();

            }

        }

 

        public static void Hi()

        {

            Console.Write("");

        }

    }

}

 


 



using System;

 

namespace Csharp

{

    class Ace

    {

        public static void Main(string[] args)

        {

             //M1();//1~10 출력

             //M2();

             //M3();//1~10사이 짝수 출력

             //M4();//10바퀴를 5바퀴로 압축

             //M5();//10의 역순

             //M6();//1부터 10까지의 합

             //M7();

             //M8();

             //M9();

             //M10();

             //M11();

             //M13();

             M14();

        }

 

        public static void M1()

        {

            for(int i=1; i<=10; i++)

            {

                Console.WriteLine(i);

            }

        }

 

 

         public static void M2()

        {

            for(int i=1; i<=10; i++)

            {

                Console.WriteLine();

            }

        }

 

        public static void M3()

        {

            //1~10사이의 짝수 출력

            for(int i=1; i<=10; i++)

            {

                if(i % 2 == 0)

                {

                    Console.WriteLine(i);

                }

            }

        }

 


 

         public static void M4()

        {

            //1~10사이의 짝수 출력

            // or i=2; i++는 마음대로 변경가능 어떤문장도 가능 Console.WriteLine() <이렇사용해도 무방하다.> i=i+2

            //10바퀴 도는것을 5바퀴로 돌아 프로그램 효율이 더좋아진다. 가벼워진다.

            for(int i=2; i<=10; i+=2)

            {

                Console.WriteLine(i);

            }

        }

 

        public static void M5()

        {

            //10 의 역순

            for(int i=10; i>=1; i-=2)

            {

                Console.WriteLine(i);

            }

 

            for(int i=1; i<=10; i++)

            {

                Console.WriteLine(11-i);//루프는 건들수 없지만 2차 가공

            }

        }       

 



         public static void M6()

        {

            //반복문을 이용한 수치누적

            //1~10까지의 합?

            //1 + 2+ 3+ 4+ 5+ ....+9 +10

            //1 + 2

            //3 + 3

            // 6 +4

 

            //누적변수

            int sum = 0;

 

            for(int i=1; i<=10; i++)

            {

                sum = sum + i;//**

                Console.WriteLine(sum);

            }

        }

 


 

         public static void M7()

        {

            int sum = 0;

 

            for(int i=1; i<10; i+=2)

            {

                //홀수의 합

            }

 

            for(int i=3; i<30; i+=3)

            {

                Console.WriteLine(sum);

            }

        }

       

        public static void M8()

        {

            int i;

 

            for (i=0; i<=9; i++)

            {

                Console.WriteLine(i);

            }

 

                Console.WriteLine("출력문 : {0}", i); //for문은 지역변수이기 때문에 벗어나서 출력하는 것은 불가능 하다.

                //지역변수는 : 선언이 포함된 {} 안에서만 사용

                // => 메서드안에서 선언된

                // => 제어문안에서 선언된

                // => 지역변수는 동일한 이름으로 2개이상 존재 할수 없다.

        }

 

        

                    
         public static void M9()

        {

            for(;;)

            {

                Console.WriteLine("무한");//포문 무한루프

            }           

        }

 

 

 

      public static void M10()

        {

            for(int i=0, j=1; i<10 && j < 10; j+=2, i++)

            {

                Console.WriteLine("i:{0} j:{1}", i,j);

            }

        }

 

 



         public static void M11()

        {

            //분기문 : break, continue

 

           

            for(int i=1; i<11; i++)

            {

                if ( i==5)

                {

                    //break;//제어가 오면 자신이 속한 제어문 탈출

                    //if문은 자신이 속한 제어문이라고 생각 하지 않고 for 문이라고 인식한다.

 

                    //제어가 오면 자신이 속한 제어문의 시작 점프 for문으로 점프한다.

                    continue;

                }

   

                    Console.WriteLine(i);

            }

        }

 




        public static void M12()

        {

            int num = 0;

            Console.Write("오늘 상담할 학생수 : ");

            num = int.Parse(Console.ReadLine());

 

            //20명상담

            for(int i=1; i<=20; i++)

            {

                if(i == num + 1)

                {

                    break;

                }

 

                Console.WriteLine("{0}번 학생 상담중", i);

            }

        }

 

 


 

        public static void M13()

        {

            for(int i=1; i<=20; i++)

            {

                //if(i == 5 || i==12 || i==15)// i 5일때 위로 포문으로 올라간다. 스킵 개념 skip

                if(i > 5 && i < 10)

                {

                    continue;

                }

                Console.WriteLine("{0}번 학생 상담중", i);

            }

        }

 


 

   public static void M14()

        {

            //구구단

            //반복문은 패턴을 찾아야 한다.

            Console.WriteLine("===========");               

            Console.WriteLine("    5    ");

            Console.WriteLine("===========");

 

            for(int j=5, i=1; i<=10; i++)

            {

                 Console.WriteLine("{0} * {1, 2} = {2, 2}", j,i, j*i);

            }

        }

 

    }

}

 




**문법적으로 다중 for문의 제한은 없다. 보통 2중에서 3중으로 사용하진 않는다.

안쪽 포문은 소회전 바깥쪽 포문은 큰회전

 

using System;

 

namespace Csharp

{

    class Ace

    {

        public static void Main(string[] args)

        {

            //M1();

            //M2();

            //M3();

            M4();

        }

 

        public static void M1()

        {

            for (int i=0; i<10; i++)

            {

                for (int j=0; j<10; j++)

                {

                    //2중 포문 or 중첩된 포문

                    Console.WriteLine("Hello");

                }

                Console.WriteLine("Hi");

            }

        }

 


 

   public static void M2()

        {

            for (int i=0; i<10; i++)

            {

                for (int j=0; j<10; j++)

                {

                    for(int k=0; k<10; k++)

                    {

                        //3중 포문 or 중첩된 포문 x 로 표현됨 10*10*10

                        Console.WriteLine("Hello");

                    }

                }

                Console.WriteLine("Hi");

            }

        }

 

        public static void M3()

        {

            for (int i=0; i<10; i++)

            {

                for (int j=0; j<10; j++)

                {

                    //2중 포문 or 중첩된 포문

                    Console.WriteLine("i : {0} j : {1}", i, j);

                }

            }

        }

 



 

          public static void M4()

        {

            for (int i=0; i<10; i++)

            {

                for (int j=10; j>0; j--)

                {

                    if (i == 5)

                    {

                        break;//j for문만 탈출한다.

                    }

                    //2중 포문 or 중첩된 포문

                    Console.WriteLine("i : {0} j : {1}", i, j);

                }

            }

        }

 

 

    }

}

 




while

 - while(조건식)

    {

      조건문

    }

using System;

 

namespace Csharp

{

    class Ace

    {

        public static void Main(string[] args)

        {

            While();           

        }

 

        public static void While()

        {

            int i = 1;

 

            while(i < 10)

            {

                Console.WriteLine(i);

                i++;

            }

        }

 

    }

}

 

 


do while

 - do

   {

         실행코드;

   }while(조건식);

 

특징 : 조건은 나중에 검사한다. 만족하면 반복실행 만족할때까지 반복실행 = 선실행 후조건

 

using System;

 

namespace Csharp

{

    class Ace

    {

        public static void Main(string[] args)

        {

            int n = 0;

           

            do

            {

                Console.WriteLine(n);

                n++;

            } while (n <= 10);

        }

    }

}

 




난수발생기

 

using System;

 

namespace Csharp

{

    class Ace

    {

        public static void Main(string[] args)

        {

            //난수 발생기

            // - 임의의 숫자를 발생시키는 발생기

            Random rnd = new Random();           

 

            for (int i=0; i<=6; i++)

            {

                //int num = rnd.Next();//0~21

                //int num = rnd.Next(10);

                //int num = rnd.Next(10, 20);

                int num = rnd.Next(1, 46);

                Console.WriteLine(num);

            }        

        }

    }

}

 













 
 
반응형