본문 바로가기
TIL

11.09 (TIL)

by 오랑이귀엽다 2023. 11. 9.

메서드

메서드(Method)는 일련의 코드 블록으로, 특정한 작업을 수행하기 위해 사용되는 독립적인 기능 단위

코드의 재사용성과 모듈화를 위해 사용되며, 필요할 때 호출하여 실행

즉, 만약 수많은 코드를 작성했는데 하나를 수정하자니 일일이 바꾸기가 힘듬, 

메서드를 이용하여 좀더 포괄적으로 묶어 수정시에도 편함

 

중요성

코드의 재사용성:

메서드를 사용하면 동일한 작업을 반복해서 구현하지 않아도 된다.

필요할 때 메서드를 호출하여 작업을 수행

 

모듈화:

메서드를 사용하여 코드를 작은 단위로 분리하고 관리할 수 있다.

각 메서드는 특정한 기능을 수행하므로 코드의 구조가 더욱 명확

 

가독성과 유지보수성:

메서드를 사용하면 코드가 간결해지고 가독성이 좋아진다.

또한, 코드 수정이 필요한 경우 해당 메서드만 수정하면 되므로 유지보수가 용이

 

코드의 중복 제거:

반복적인 작업을 메서드로 묶어서 사용하면 코드 중복을 방지할 수 있다.

 

코드의 추상화:

메서드를 통해 작업 단위를 추상화하고,

메서드 이름을 통해 해당 작업이 어떤 역할을 하는지 파악할 수 있다.

 

메서드 선언과 호출

 

1) 메서드의 구조와 문법

 

[접근 제한자] [리턴 타입] [메서드 이름]([매개변수])
{
    // 메서드 실행 코드
}

 

접근 제한자(Access Modifier):

메서드에 접근할 수 있는 범위를 지정합니다. 주로 public, private, protected 등을 사용

public : 클래스 외부에서도 접근가능

private : 클래스 내부에서 만 접근가능

protected : 상속, 나와 연결고리가 있는 것만 접근가능

 

리턴 타입(Return Type):

메서드가 반환하는 값의 데이터 타입을 지정합니다. 반환 값이 없을 경우 void를 사용

 

메서드 이름(Method Name):

메서드를 호출하기 위해 사용하는 이름입니다. 호출할 때 이 이름을 사용

 

매개변수(Parameters):

메서드에 전달되는 입력 값으로, 필요한 경우 0개 이상의 매개변수를 정의

 

메서드 실행에 코드(Method Body):

중괄호({}) 안에 메서드가 수행하는 작업을 구현하는 코드를 작성

 

간단예시

 

// 예시 1: 반환 값이 없는 메서드
public void Hello()
{
    Console.WriteLine("안녕!");
}

// 예시 2: 매개변수가 있는 메서드
public void GreetPerson(string name)
{
    Console.WriteLine("안녕, " + name + " ! ");
}

// 예시 3: 반환 값이 있는 메서드
public int AddNumbers(int a, int b)
{
    int sum = a + b;
    return sum;
}

 

2) 메서드 호출 방법

메서드를 호출하기 위해서는 메서드 이름과 필요한 매개변수를 전달하여 호출

호출 시 전달되는 매개변수는 메서드의 매개변수와 순서와 타입이 일치

메서드는 호출되면 해당 메서드의 실행 코드를 수행하고, 필요한 경우 리턴 값이 있다면 반환

 

[메서드 이름]([전달할 매개변수]);

 

예를 들어, AddNumbers라는 이름의 메서드를 호출하고자 할 때는 다음과 같이 호출

 

AddNumbers(10, 20);

 

매개변수와 반환값

1) 매개변수의 개념과 활용

매개변수는 메서드에 전달되는 입력 값으로, 메서드 내에서 이 값을 활용하여 원하는 작업을 수행

매개변수는 메서드의 선언부에 정의되며, 필요한 경우 0개 이상의 매개변수를 정의

매개변수는 메서드 호출 시 전달되는 값에 따라 동적으로 결정되며, 호출 시에는 해당 매개변수의 값을 전달

 

간단예시

void PrintFullName(string firstName, string lastName)
{
    Console.WriteLine("Full Name: " + firstName + " " + lastName);
}

// 메서드 호출
PrintFullName("John", "Doe");

 

2) 반환값의 개념과 활용

반환값은 메서드가 수행한 작업의 결과를 호출자에게 반환

반환값은 메서드의 리턴 타입에 지정되며, 해당 타입의 값을 반환

메서드 내에서 계산, 조작, 처리한 결과 등을 반환값으로 사용

 

간단예시

int AddNumbers(int a, int b)
{
    int sum = a + b;
    return sum;
}

// 메서드 호출 및 반환값 사용
int result = AddNumbers(10, 20);
Console.WriteLine("Sum: " + result);

 

3) void 형식과 반환값이 없는 메서드

void는 메서드의 리턴 타입으로 사용되며, 해당 메서드가 값을 반환하지 않음

반환값이 없는 메서드는 호출되면 메서드의 실행 코드를 수행하고 호출자에게 반환하지 않음

 

간단예시

void PrintMessage(string message)
{
    Console.WriteLine("Message: " + message);
}

// 메서드 호출
PrintMessage("Hello, World!");

 

메서드 오버로딩

1) 오버로딩 개념과 활용

메서드 오버로딩은 동일한 이름의 메서드를 다양한 매개변수 목록으로 다중 정의하는 개념

매개변수의 개수, 타입, 순서가 다른 여러 메서드를 동일한 이름으로 정의하여 메서드 호출 시 매개변수의 형태에 따라 적절한 메서드가 선택되도록 할 수 있음

오버로딩은 메서드의 기능이나 작업은 동일하지만 입력값에 따라 다르게 동작해야 할 때 사용

 

간단예시

int AddNumbers(int a, int b)
{
    return a + b;
}

int AddNumbers(int a, int b, int c)
{
    return a + b + c;
}

// 메서드 호출
int sum1 = AddNumbers(10, 20);  // 두 개의 정수 매개변수를 가진 메서드 호출
int sum2 = AddNumbers(10, 20, 30);  // 세 개의 정수 매개변수를 가진 메서드 호출

 

재귀 호출

재귀 호출은 메서드가 자기 자신을 호출하는 것을 의미

재귀 호출은 문제를 작은 부분으로 분할하여 해결하는 방법 중 하나로,

작은 부분의 해결 방법이 큰 문제의 해결 방법과 동일한 구조를 갖고 있는 경우에 적합

재귀 호출은 호출 스택에 호출된 메서드의 정보를 순차적으로 쌓고,

메서드가 반환되면서 스택에서 순차적으로 제거되는 방식으로 동작

 

간단예시

void CountDown(int n)
{
    if (n <= 0)
    {
        Console.WriteLine("Done");
    }
    else
    {
        Console.WriteLine(n);
        CountDown(n - 1);  // 자기 자신을 호출
    }
}

// 메서드 호출
CountDown(5);

 

장점과 주의점

재귀 호출은 복잡한 문제를 단순한 방식으로 해결할 수 있는 장점

재귀 호출을 사용할 때 주의해야 할 점은 종료 조건을 명확히 정의

종료 조건을 만족하지 못하면 무한히 재귀 호출이 반복되어 스택 오버플로우 등의 오류가 발생

재귀 호출은 메모리 사용량이 더 크고 실행 속도가 느릴 수 있으므로, 필요한 경우에만 적절히 사용하는 것

 

구조체

여러 개의 데이터를 묶어서 하나의 사용자 정의 형식으로 만들기 위한 방법

구조체는 값 형식(Value Type)으로 분류되며, 데이터를 저장하고 필요한 기능을 제공

구조체는 struct 키워드를 사용하여 선언

구조체의 멤버는 변수와 메서드로 구성

 

간단예시

struct Person
{
    public string Name;
    public int Age;

    public void PrintInfo()
    {
        Console.WriteLine($"Name: {Name}, Age: {Age}");
    }
}

구조체의 사용

구조체는 변수를 선언하여 사용

구조체의 멤버에는 접근할 때 . 연산자를 사용

 

간단예시

Person person1;
person1.Name = "John";
person1.Age = 25;
person1.PrintInfo();

 

 

연습해보기

 

2-1 구구단 출력하기

1부터 9까지의 숫자를 각각 1부터 9까지 곱한 결과를 출력하는 프로그램을 작성

 

2-2 별 찍기

1. 오른쪽으로 기울어진 직각삼각형 출력하기:

이 부분에서는 for 루프를 사용하여 오른쪽으로 기울어진 직각삼각형을 출력하는 프로그램을 작성해야 합니다.

삼각형의 높이는 5

2. 역직각삼각형 출력하기:

 

2-3 최대값, 최소값 찾기

사용자로부터 일련의 숫자를 입력받아, 그 중에서 최대값과 최소값을 찾는 프로그램을 작성

 

2-4 소수 판별하기

사용자로부터 숫자를 입력받아 그 숫자가 소수인지 아닌지를 판별하는 프로그램을 작성

 

게임 만들기 연습

2-5 숫자 맞추기

컴퓨터는 1에서 100까지의 숫자를 임의로 선택하고, 사용자는 이 숫자를 맞추어야 합니다. 사용자가 입력한 숫자가 컴퓨터의 숫자보다 크면 "크다!"라고 알려주고, 작으면 "작다!"라고 알려줍니다. 사용자가 숫자를 맞추면 게임이 종료

 

2-6 틱택토 ( 콘솔 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'TIL' 카테고리의 다른 글

11.13 (TIL)  (0) 2023.11.13
11.10 (TIL)  (0) 2023.11.10
11.08 (TIL)  (0) 2023.11.08
11.07 (TIL)  (0) 2023.11.07
11.06 (TIL)  (0) 2023.11.06