2021년 10월 17일 일요일

닷넷교육, C# 조건문, 제어문, 반복문(if, switch, for, while, forEach)

닷넷교육, C#  조건문, 제어문, 반복문(if, switch, for, while, forEach)


IF문

if (condition) statement : 어떤 조건의 참, 거짓을 판단하여 실행을 제어하는 구조에 사용. condition 부분의 결과값은 반드시 true또는 false가 되어야 한다.

(No implicit conversion from int to bool ) 

다른 언어들의 경우: 0 이나 -1을 false로 나머지를 true로 암시적 형 변환 

int x; 
… 
if(x) …//must be if (x!=0) in c#              if(x=0) …//must be if (x==0) in c# 

[예] 

enum Suit { Clubs , Hearts , Diamonds , Spades }; 

Suit trumps = Suit.Hearts; 
if ( trumps == Suit.Clubs ) color = "Black"; 
else if ( trumps == Suit.Hearts ) color = "Red"; 
else if ( trumps == Suit.Diamonds ) color = "Red"; 
else color ="Black"; 

SWITCH문


switch문의 변수 값과 일치하는 case로 분기(진입점) , 변수값이 일치하는 case가 없을 경우 default로 분기하며 break문을 만나면 switch문 외부로 분기(종단점) 

[예] 
enum Suit { Clubs , Hearts , Diamonds , Spades }; 
Suit trumps = Suit.Hearts; 
switch(trumps) { 
  case Suit.Clubs: 
  case Suit.Spades: 
      color = "Black" ; break; 
  case Suit.Hearts: 
  case Suit.Diamonds: 
      color = "Red" ; break; 
  default: 
      color = "ERROR"; break; 


반복문 (while, do~while, for, foreach) 

1. while문 

형식: 
while (condition) 

  statements; 


조건이 참인 동안에 statement를 실행. 


//1부터 100까지 수중 홀수 출력
static void Main(string[] args)

        {

            int i = 0;

            while (i < 100)

            {

                i += 1;

                if (i % 2 != 0)

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

            }

                        

        } 



2.do~while문 

형식 : 

do{ 
    statements; 
} while (condition); 


while문과의 차이는 조건에 맞지 않더라도 statement를 한 번은 수행하는 구조입니다. 그러나 while문에서는 조건에 맞지 않으면 statement를 한 번도 수행하지 않을 수도 있습니다. 

[예] 

//1부터 100까지 수중 홀수 출력
static void Main(string[] args)

        {

            int i = 0;

            do

            { 

i+=1;

              if (i % 2 != 0)

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

            }

            while (i<100);

         }


3. for문 

형식: 

for(초기치; 조건; 업데이트 실행){ 
statements; 

일반적인 for문과 같다. 

[예] 

//1부터 100까지 수중 홀수 출력
static void Main(string[] args)

        {           

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

                if (i % 2 != 0)                                 

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

        }


사용자로부터 숫자를 입력받아 그 수까지 짝수의 합을 반복문을 통해 구하는 예제


using System;

 

namespace ConsoleApp1

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("숫자를 입력하세요. ");

            string str = Console.ReadLine();

            int m = 0;

            bool parsed = Int32.TryParse(str, out m);

 

            if (!parsed)

            {

                Console.WriteLine("숫자도 입력 못하세요!!");

                Environment.Exit(0);

            }

 

            int i = 0, sum = 0;

            while(i <= m)

            {

                if (i % 2 == 0) sum += i;

                i++;

            }

            Console.WriteLine("1부터 {0}까지의 짝수합 {1}", m, sum);

 

            i = 0; sum = 0;

            do

            {

                if (i % 2 == 0) sum += i;

                i++;

            } while (i <= m);

            Console.WriteLine("1부터 {0}까지의 짝수합 {1}", m, sum);

 

            sum = 0;

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

            {

                if (i % 2 == 0) sum += i;

            } 

            Console.WriteLine("1부터 {0}까지의 짝수합 {1}", m, sum);

 

        }

    }

}



LAB.

1. 다음과 같은 결과를 출력하는 C# 프로그램을 작성하세요.

 

2 4 6 8 10

 

2. 숫자를 입력하면 다음과 같이 출력하는 C# 프로그램을 작성하세요. 

 

[출력] 

입력숫자 : 10

 

10까지의 숫자 : 1 2 3 4 5 6 7 8 9 10

10까지의 숫자합은 : 55

 

3. 10개의 숫자를 입력받아 입력받은 수를 출력하고 합, 평균을 구해 출력하세요. 

 

Input the 10 numbers :

숫자-1 :1

숫자-2 :2

숫자-3 :3

숫자-4 :4

숫자-5 :5

숫자-6 :6

숫자-7 :7

숫자-8 :8

숫자-9 :9

숫자-10 :10

합 : 55

평균 : 5.5

 

 

4. 다음과 같이 출력결과를 만들어내는 C# 프로그램을 작성하세요.

 

출력을 원하는 구구단 단수 : 3

1x2 = 2, 2x2 = 4, 3x2 = 6

1x3 = 3, 2x3 = 6, 3x3 = 9

1x4 = 4, 2x4 = 8, 3x4 = 12

1x5 = 5, 2x5 = 10, 3x5 = 15

1x6 = 6, 2x6 = 12, 3x6 = 18

1x7 = 7, 2x7 = 14, 3x7 = 21

1x8 = 8, 2x8 = 16, 3x8 = 24

1x9 = 9, 2x9 = 18, 3x9 = 27


결과 : http://ojc.asia/bbs/board.php?bo_table=Cyber&wr_id=10562 


4. foreach문 

형식: 

foreach(item in 배열 또는 컬렉션){ 
  statements; 


배열: 여러 개의 데이터를 하나의 변수 또는 객체에 담아둔 것 
컬렉션: 자유로운 형태로 여러 개의 데이터를 담아둘 수 있다. ArrayList, HashTable, ICollection 등이 있다. 

실행순서는 배열이나 컬렉션에서 하나의 항목을 읽은 후 statement를 수행하고, 다음 foreach로 가서 다음 읽을 것이 있으면 다시 읽고 statement를 실행하는 순서로 동작한다. 만약 다음 읽을 것이 없다면 루프를 빠져 나온다. 


using System;
using System.Collections.Generic;
using System.Text;

namespace Ex15
{
    // 사용자가 만드는 모든 배열은 기본적으로 Array 클래스를 상속합니다.
    // 배열도 객체다.

    class Program
    {
        static void Main(string[] args)
        {
            int[] arr = new int[2];                     int[] arr2 = new int[2] { 10, 20 };
            int[] arr3 = new int[] { 10, 20 };            int[] arr4 = { 10, 20 };            

for (int i = 0; i < 2; i++)
            {
                Console.WriteLine(arr4[i]);
            }

            for (int i = 0; i < arr3.Length; i++)
            {
                Console.WriteLine(arr3[i]);
            }

            foreach (int i in arr2)
            {
                Console.WriteLine(i);
            }
        }
    }
}


이번에는 제어를 조절할 수 있는 break, continue에 대해 알아 보자. 


break : 반복문 내의 임의의 지점에서 루프를 빠져나가야 할 때 break문을 사용한다. 싸고 있는 루프 중 가장 가까운 루프를 빠져 나간다. 
continue : 루프의 남은 부분을 skip하고 루프의 처음으로 제어를 옮긴다.


[LAB]

 

1. 10진수를 이진수로 변환

 

 

 

2. 버블정렬

버블정렬(Bubble sort)은 두 인접한 원소를 검사하여 정렬하는 방법이다. 시간 복잡도가 O(n^2)로 상당히 느리지만, 코드가 단순하기 때문에 자주 사용된다.

 

버블정렬 코드를 구현하고 테스트 하세요.

 

3. 선택정렬

선택정렬은 키를 기준으로 나머지 값들 중 최소 또는 최대값을 선택하여 이 값을 키값과 바꾸면서 정렬하는 것이다.

 

[오름차순정렬의 예]

주어진 리스트 중에 최소값을 찾아서 그 값을 맨 앞에 위치한 값과 교체한다.

맨 처음 위치를 뺀 요소들에 대해 같은 방법으로 교체한다.

 

 

선택정렬 코드를 구현하고 테스트 하세요.


[LAB]두 수를 입력받아 사칙연산을 수행하는 프로그램을 작성하세요.

  • switch case문 이용

  • 두 수의 입력은 콤마로 구분해서 Console.ReadLine으로 받으세요.

 

[채워주세요]

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace 사칙연산

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("두수를 입력하세요."); 

            Console.WriteLine("예 : 3,5");

            string str = Console.ReadLine(); 

            str.Trim();

            string[] strarr = str.Split(',');

 

            if (strarr.Length != 2)

            {

                Console.WriteLine("숫자2개를 콤마로 구분해서 입력하세요~"); 

                return;

            }

 

            int first, second;

            try

            {

                first = //여기 채워주세요 ; 

                second = //여기 채워주세요 ;             

}

            catch

            {

                Console.WriteLine("입력이 잘못되었습니다."); 

                return;

            }

 

            Console.WriteLine("{0} + {1} = {2}", first, second, Calc(first, second, "+"));

            Console.WriteLine("{0} - {1} = {2}", first, second, Calc(first, second, "-"));

            Console.WriteLine("{0} * {1} = {2}", first, second, Calc(first, second, "*"));

            Console.WriteLine("{0} / {1} = {2}", first, second, Calc(first, second, "/"));

        }

 

        static double Calc(int first, int second, string op)

        {

            double result = 0;

            switch (op)

            {

                //여기 채워주세요

            }

            return result;

        }

    }

}


댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...