4. 배열과 함수

이규성·2023년 10월 4일
0

TIL

목록 보기
4/106

10/4 C# 배열과 함수에 대해 공부하였다.

배열

다수의 데이터를 한 가지의 변수에 저장하는 것

[3]이 데이터가 들어갈 슬롯 갯수 Index이다 0, 1, 2, 3~ 순서로 생성

// 변수를 만들고 바로 방을 만들기
string[] game = new string[3];

// 혹은

string[] game;
game = new string[3];

Index에 데이터를 저장하는 방법

string[] game = new string[3];
game[0] = "Leage of Legends"
game[1] = "메이플 스토리"

출력 방법

Console.WriteLine(game[0]); // 출력 - League of Legends 
Console.WriteLine(game[1]); // 출력 - 메이플 스토리

배열은 정수int, 실수float, 문자string 각 타입에 맞게 생성이 가능하다.

배열의 반복

숫자가 순차적으로 변화한다면 for반복문 사용이 가능하다.

int[] year = new int[4]
year[0] = 2020;
year[1] = 2021;
year[2] = 2022;
year[3] = 2023;

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

데이터를 저장하는 방법도 가능하다.

int[] year = new int[4]
for(int i = 0 ; i < 4 ; i++)
{
	year[i] = 2020 + i;
	Console.WriteLine(year[i]);
}

foreach반복문으로 조건문을 작성하지 않고 배열을 처음부터 끝까지 반복시킬 수 있다.

foreach(데이터 타입 변수 이름 in 배열)

string[] games = new string[3] {"League of Legends", "메이플 스토리", "디아블로"};
foreach(string game in games)
{
		Console.WriteLine(game);
}

배열은 만들어지는 순간 Index에 기본 데이터 값이 생성된다. 데이터 입력을 하지 않으면 데이터 타입의 기본값이 출력된다.

string[] test = new string[2];
Console.WriteLine(test[0]);
// ""출력 즉 공백

int[] year = new int[2];  
Console.WriteLine(year[0]);
// 0 출력

bool[] check = new bool[2];
Console.WriteLine(check[0]);
// false 출력

간략하게 배열을 생성하는 방법들

string[] game = new string[3] {"League of Legends", "메이플 스토리", "디아블로"};
int[] year = new int[4] {2020, 2021 2022, 2023};
// 중괄호를 통해 바로 데이터를 입력

string[] game = new string[] {"League of Legends", "메이플 스토리", "디아블로"};
// 대괄호 안의 Index 값을 비워서 데이터 갯수가 맍지 않는 에러를 방지

string[] game = {"League of Legends", "메이플 스토리", "디아블로"};
// new를 생략한 '암시적'배열

// Index는 0, 1, 2~ 순서이므로 헷갈리지 않기
배열을 생성하는 방법이 여러가지라서 상황에 알맞게 사용할 수 있는 지식이 필요해 보인다.

함수

미리 만들어진 코드들 중 원하는 기능이 없을 때 함수를 직접 만들어서 사용이 가능하다.

void Hello()
{
    body
}

int GetPoint()
{
    Console.WriteLine();
    return 100;
}

void = 반환되는 값의 변수 타입, void는 반환되는 값이 없다는 뜻
int = 반환되는 값이 있다면 자료형 타입을 입력, 반환되는 값과 자료형 타입이 일치해야 한다.
Hello = 함수 이름
() = 매개변수
return = 반환되는 값
body = 출력될 함수의 기능
함수의 출력은 함수이름();

ex1) hp가 5에서 데미지를 1씩 반복하여 받고 0이되면 종료

int hp = 5;

Attack();    // 데미지 : 1    현재체력 : 4
Attack();    // 데미지 : 1    현재체력 : 3
Attack();    // 데미지 : 1    현재체력 : 2
Attack();    // 데미지 : 1    현재체력 : 1
Attack();    // 데미지 : 1    현재체력 : 0
Attack();    // Console X
...

void Attack()
{
		if(hp < 1)
		{
		    return; // 함수 종료
		}

		--hp;
		Console.Write("데미지 : 1    현재체력 : " + hp);
}

// return으로 hp가 1 미만이 되었을 때 함수가 종료되도록 한다.

ex2) 데미지가 1 고정이 아닌 매개변수를 통해 작동

int hp = 5;

void Attack(int damage)
{
		if(hp < 1)
		{
		    return;
		}

		hp -= damage;
		Console.Write("데미지 : " + damage + "    현재체력 : " + hp);
}
damage(2); // 데미지 2 현재체력 3 - 출력

// -=의 의미는 hp - damage 와 같다.

ex3) 여러 매개변수

void DisplayMyInfo(int level, string name, string job)
{
		Console.WriteLine("레벨 : " + level + " 이름 : " + name + " 직업 : " + job);
}
DisplayMyInfo(10, "이썽이", "전사");
// 레벨 : 10 이름 : 이썽이 직업 : 전사 - 출력

// 매개변수와 입력하는 값의 타입은 일치해야 한다.

ex4) 자주 실수하는 내용

int hp = 5;

int GetPoint()
{
		if(hp < 1)
		{
				return 200;
		}

		return 0; <- 기본 return 값 설정
}

// if조건문에 return값을 입력 했더라도 if조건에 만족하지 않았을 때의 기본 return값을 필히 입력해주어야 한다.

Feedback

배열과 함수는 유독 선택지가 많게 느껴진다. 알맞은 상황에 적절하게 사용하기 위해선 계속된 문제 풀이와 반복 숙달이 요구되는 것 같다.

0개의 댓글