변수
데이터를 저장하는 상자, 집
(int score = 10; 이라고 했을 때 score 라는 상자에 숫자 10을 넣어놓은 것이라고 생각)
집을 짓기 위해서 '데이터 형식', '변수 이름', '세미콜론(;)' 3가지가 필요하다.
변수를 생성할때에는 변수를 "선언한다" 혹은 "생성한다" 라고 하며, 변수에 데이터를 넣어주는 것은 "할당"한다고 한다.\
- 데이터 형식 : 문자(string), 숫자(int, float, double)
- 변수 이름 : 변수를 구분할 수 있는 이름, 원하는 이름으로 생성 가능(영어, 숫자, 언더바로 사용하나 일부 사용 가능한 문자들이 있음)
- 변수에 할당될 값 : 값(Value), 데이터(Data), 리터럴 등
- 세미콜론(;) : 한 줄의 마무리에 꼭 넣어줘야 함
변수 생성 및 저장
문자(겨울잠)가 들어갈 변수를x, 숫자(365)가 들어갈 변수를y로 하였을 때
(365일 겨울잠 자고싶어서..)
string x = "겨울잠";
int y = 365;
* string에 숫자가 들어가거나 int에 문자가 들어가면 error 발생 (콘솔에서 확인 가능)
x의 명칭을 sleep, y의 명칭을 days라고 할 때
srting sleep = "겨울잠";
int days = 365;
sleep과 days는 하나의 변수가 된 것.
- string, int : 데이터 타입
- sleep, days : 변수 이름
- 겨울잠, 365 : 변수에 할당된 값
*변수를 만들 때엔 타입과 변수 이름을 모두 입력해야 하며 같은 이름의 변수는 만들수 없음
*대소문자 구분 필수
변수 활용
Console.WriteLine(sleep);
Console.WriteLine(days);
이렇게 입력하였을 때 콘솔창엔
겨울잠
365
라고 나타나게 된다.
변수의 키워드
C#에선 이미 예약된 단어들이 있기 때문에 변수, 메서드, 클래스 등의 이름으로 사용할 수 없으며 이러한 단어를 키워드라고 한다.
예) String Static bool case class true 등
숫자
숫자 또한 변수에 해당
- 정수(int) : 소수점이 없는 숫자, 나이/레벨/갯수 등 표현가능
- 실수 : 소수점이 있는 숫자, 경험치/공격속도/길이 등 표현가능
- - float : 소수점 7자리까지 표시가능
- - double : 소수점 15~16자리까지 표시가능
입력할 때엔 각각 f 와 d 로 표시 (50.1f, 10.224d)
문자로 표현할 때엔 "1"과 같이 따옴표를 붙여서 사용, f와 d가 없다면 d로 이해함
bool(boolean)
bool은 두가지의 값(true, false)을 가지는 자료형
주로 어떤 계산이 맞았는지 아닌지 확인할 때 사용, 특정한 상황이 되었을때 어떻게 진행될지 판단근거가 되는 것
bool isLarge = 10 > 5;
이경우엔 10보다 5가 큰지에 대해 입력하였고, 계산이 맞았기 때문에 true가 됨 (틀렸을 경우 false)
조건문
if : 조건을 체크하여 중괄호{} 안에있는 내용을 실행시킨다. 조건을 만족하지 않으면 실행하지 않음.
(조건 : 논리 연산으로 계산된게 맞는지 확인)
if(조건)
{
조건이 참일경우 실행내용
}
else if : if문 밑에 붙으며 if문을 만족하지 못했을 때 다시 조건을 체크, if와 else if가 있을 때 둘 중 하나만 실행
else if는 여러번 사용 가능
if(조건)
{
조건이 참일경우 실행내용
}
else if(조건2)
{
조건2가 참일경우 실행내용
}
else : if와 else if의 모든 조건이 거짓일 때 실행, 선택사항이며 모두 거짓인 경우에만 실행
if(조건)
{
조건이 참일경우 실행내용
}
else if(조건2)
{
조건2가 참일경우 실행내용
}
else
{
조건, 조건2가 모두 거짓일 때 실행내용
}
switch case : 변수 한개를 가지고 그 변수가 무엇인지 확인하는 조건문
switch : 변수나 식의 결과에 따라 다른 코드 블록을 실행하는 제어문
case : 변수나 식의 결과에 따라 실행할 코드 지정
if~else if로 확인할 수 있지만 한번 더 정교하게 체크 가능, 단일 값의 여러 비교 가능
switch(조건변수)
{
case 조건1
실행내용
break;
case 조건2
실행내용
break;
}
case에 들어가는 조건은 고정된 상수여야 하며 조건은 중복되면 안됨
break;로 멈춰줌
if / else와 switch case 비교
if / else : 조건이 복잡하거나 다양한 값 혹은 타입(범위, 논리 등)을 검사할때 적합
switch case : 단일 변수의 값에 대해 여러 경우를 다룰 때 효율적인 방법
반복문
for : 어떤 일을 한번이 아닌 여러번 계속 실행할 때 사용함, 명확한 회차/명확한 데이터가 있을때 사용
반복 횟수를 직관적으로 알 수 있고, 반복 조건을 한눈에 확인할 수 있어 가독성이 좋다.
- 초기식 : 반복문이 시작될 때 단 한번 실행
- 조건식 : 반복문이 실행될 때마다 평가되며, 참(true)인 경우 반복문이 계속 실행
- 증감식 : 반복문이 실행될 때마다 실행되는 식
for(초기화 ; 조건 ; 변화)
{
// 조건문이 참인 경우 실행되는 코드
}
//예시 - 10까지 세는 반복문
// for(1부터 세기 시작 ; 10까지 세기 ; +1씩 세기)
for (int i 1 = 1 ; i <= 10 ; i++)
예시는 꼭 외우기!, for 문 뒤에는 ;이 붙지않음
while : 조건만 체크하면 계속 반복 (~일때)
while 문은 조건이 우선시될때 사용, 반복 조건에 따라 조건문의 실행 횟수가 유동적이며, 이에 따라 코드가 더 간결할 수 있다.
while(조건)
{
// 조건식이 참인 경우 실행되는 코드
}
//예시 - 10까지 세는 반복문
int i = 0;
while (i < 10)
{
i++
}
do while : 조건과 상관없이 내용을 한번 실행 후 조건에 따라 반복(실행 후 반복하는 것은 while문과 동일)
do
{
실행내용
}
while(조건);
for과 while 비교
for : 반복 횟수가 정해져 있을때, 순회 혹은 정해진 횟수만큼 반복해야 할때 적합
while : 반복 횟수가 정해지지 않았을때, 조건이 참일 때까지 반복하거나 입력한 값이 특정 조건을 만족할 때까지 해야할때 적합
* 조건이 무한정 반복되면 무한반복이 되며 프로그램에 문제가 생겨서 조건을 잘 설정하는것이 중요
foreach : 끝을 지정해주는 다른 반복문과 달리, 인자로 들어온 내부 index 끝까지 알아서 순환을 해주는 반복문
- 배열에서 주로 사용
foreach ( 변수(데이터)타입, 변수명/배열, in, 컬렉션 등)
{
'내용';
}
// 예시
string[] games = new string[3] {"리그 오브 레전드", "메이플 스토리", "오버워치"};
foreach ( string, game, in, games)
{
Console.WriteLine(game);
}
// 출력값
리그 오브 레전드
메이플 스토리
오버워치
*지정할 반복변수의 타입은 배열타입과 일치해야함
조건 제어
break : break가 실행되면 진행되고 있는 구문들이 즉시 종료됨
크게 switch case, for 문에 사용
continue : 반복문에서 해당 반복을 넘기고 다음 반복으로 넘길 때 사용
배열(Array)
여러 데이터를 한가지 변수에 저장하는 기능
// '리그 오브 레전드' 게임을 변수에 저장
string game = "리그 오브 레전드";
// '메이플 스토리' 게임을 추가로 저장
game = "메이플 스토리";
// 위의 경우 '리그 오브 레전드'가 삭제되고, '메이플 스토리'가 game에 저장된다
string game = "리그 오브 레전드";
string game = "메이플 스토리";
// 위의 경우 이미 game변수가 하나 있기때문에 더 만들수 없으며, 메이플 스토리도 저장하고자 하면 다른 변수로 저장해야 함
위와 같은 경우에 여러 데이터를 한가지 변수에 저장하고 싶을땐 배열을 사용한다.
string[] game = new string[];
new는 뒤에 오는 것을 새로 만들어 주는 키워드이다.\
[]에 입력한 값 : index
// 예시 index = 3
// 변수를 만들고 바로 데이터 수 입력
string[] game = new string[3];
// 변수만 만들고 나중에 데이터 입력
string[] game;
game = new string[3];
// 배열마다 입력하는 방법
game[0] = "리그 오브 레전드"
game[1] = "메이플 스토리"
game[2] = ""
// 배열을 선언하면서 동시에 초기화, 배열의 크기는 지정하지 않고 들어갈 값만 지정
string[] games = { "리그 오브 레전드", "메이플 스토리" };
game[0] = "리그 오브 레전드"
game[1] = "메이플 스토리"
- string[] game = new string[숫자]; : 배열의 크기를 먼저 설정, 나중에 값을 할당
- string[] game;
game = new string[숫자]; : 배열 값(index)을 나중에 할당할 때 사용 - game[0] = "게임명1"; game[1] = "게임명2"; : 이미 생성된 배열에 값을 할당
- string[] games = { "게임명1", "게임명2" }; : 배열을 선언하고 바로 초기화, 순서대로 0, 1 순
Console.WriteLine(game[0]); // 출력 - 리그 오브 레전드
Console.WriteLine(game[1]); // 출력 - 메이플 스토리
배열의 데이터를 사용할 때에도 대괄호[]와 index 사용
단, 배열의 타입이 맞지 않으면 에러 발생
string[] game = new game[3];
game[0] = "리그 오브 레전드"; // 정상 - string 배열에 string 저장
game[1] = 1010; // 에러 - string 배열에 int 저장
game[2] = 150.5; // 에러 - string 배열에 float 저장
전에 "카드 뒤집기 게임"에서 사용했던 int[] arr가 배열을 사용한 예시이다.
반복문과 혼합하면 이렇게 사용도 가능하다.
int[] level = new int[3];
level[0] = 51;
level[1] = 52;
level[2] = 53;
// 0부터 세기시작; 3전까지 세기; 1씩 추가
for(int i = 0 ; i < 3 ; i++)
{
Console.WriteLine(level[i]);
}
//출력값
51
52
53
'C# > Theory' 카테고리의 다른 글
[C#] 메서드, 매개변수, 반환(return), void (0) | 2025.02.19 |
---|---|
[C#] 조건문 - 홀/짝수 구분, 등급 출력 등 (0) | 2025.02.10 |
[C#] 문자열 처리 기능 (0) | 2025.02.06 |
[C#] 기초, Using / Console 등 (0) | 2025.02.05 |
[C#] 연산/연산자 (0) | 2025.02.05 |