오늘의 키워드
- 개발환경 설정
- 변수
- 코드컨벤션
C#문법 종합반 강의를 듣기 시작했다.
어렵다. 헤헷
개발환경 설정
빌드하기
메뉴에서 Build > Build Solution / F5
빌드가 성공적으로 완료되면 Output 창에서 빌드 메세지를 확인할 수 있다.
실행하기
디버그 메뉴에서 Start Without Debugging / Ctrl + F5
콘솔 애플리케이션 : 콘솔 창이 열리고 프로그램이 실행됩니다.
윈도우 애플리케이션 : 애플리케이션 창이 열리고 프로그램이 실행됩니다.
Tab 누르면 자동완성 / 기본 템플릿 작성됨
그리고 강의 듣다가 냅다 감명받아버린,, 공부를 시작하는 우리에게 해주고 싶은 말
💡 무엇(What)일까 고민하는 것보다 중요한것은 왜(Why) 에 집중하는 것입니다.
여기서의 키워드는 “의도” 입니다.
우리는 자동차가 무엇인지? 어떻게 굴러가는지보다 브래이크를 왜 밟아야 하는지를 먼저 학습합니다.
💡 “빠르게 실패하기”
얼마나 좋은 코드를 작성했는가보다 얼마나 많은 코드를 접해보고 오류를 해결해 보았는지가
진정한 실력으로 이어집니다
약간.. 수능 이후로 간만에 이정도 공부량을 소화해보는 것 같은데,
그런 정신없는 와중에 살짝 혼미해져가던 본질을 슬쩍 깨닫게 되는 느낌이었달까
중요한게 무엇인지를 깨달을 수 있어 좋았다.
프로그래밍 기본요소
using System
C#에서 기본적으로 제공하는 네임스페이스(System 네임스페이스)를 사용하기 위한 코드
Console 클래스를 사용하기 위해 필요
namespace
코드를 구성하는 데 사용되며 클래스 및 기타 네임스페이스의 컨테이너
class Program
C# 클래스를 정의하는 키워드입니다. 클래스 이름은 Program로 지정
static void Main()
C#의 진입점(entry point)
Main 메서드는 프로그램이 시작할 때 자동으로 호출되는 메서드
Main 메서드는 프로그램 실행에 필수적
Console.WriteLine("Hello World");
콘솔에 출력할 내용을 지정하는 코드
WriteLine 메서드는 새 줄을 시작하고 출력할 문자열을 인자로 받는다
{ }
코드 블록의 시작과 끝을 나타내는 중괄호
모든 C# 문은 세미콜론으로 끝남
프로젝트의 속성을 보면 자주 사용되는 것들은 전역 Using을 비주얼 스튜디오에서 미리 해놓았음.
원래 유징이 몇개 있어야 하는데 비주얼 스튜디오에서 미리 해놓은 것이므로 따로 쓸 필요가 없다!
Console.WriteLine
C#에서 콘솔 출력할 때 사용하는 메소드.
WriteLine 과 Write
WriteLine : 인수로 전달된 값을 출력하고 줄 바꿈(new line) 문자열을 추가합니다.
즉, 출력한 후에는 다음 줄로 커서가 이동합니다.
Write : Console.WriteLine 메소드와 유사하지만, 줄 바꿈 문자열을 추가하지 않습니다.
즉, 출력한 후에는 다음 출력이 이어서 출력됩니다
>> WriteLine 과 Write는 줄바꿈을 하느냐 마느냐의 차이!
.
이스케이프 시퀸스(Escape Sequence)
문자열 내에 특수한 문자를 포함시키기 위해 사용되는 특별한 문자 조합
// 한줄 주석
/* */ 여러 줄 주석, 시작과 끝을 명시해서 주석 처리 됨.
Ctrl+Space 를 통해 IntelliSense를 호출해서 메서드나 변수에 대한 정보와 예제를 볼 수 있습니다
Tab , Tab+Tab 을 통해 자동완성 가능 (Tab은 코드 자동완성, Tab+Tab은 코드 템플릿까지 자동완성)
변수와 자료형
1. 자료형
이러한 기본 자료형을 이용해 변수를 선언하고 값을 저장할 수 있다.
자료형의 크기, 표현범위, 부호 여부 등 특성에 따라 세분화된 자료형으로 구분
예를 들어, C#에서 정수형 자료형으로는 sbyte, byte, short, ushort, int, uint, long, ulong이 있으며, 각각의 자료형은 메모리의 크기와 표현 범위가 다릅니다.
ex)
유저의 번호 저장한다면 127명 이하일때는 sbyte 자료형을 사용 가능
하지만, 128명 부터는 저장불가!
이때 우리가 음수의 번호를 사용하지 않는다면 byte 자료형으로 선언 함으로써 255번까지 저장 가능
범위나 크기 잘 생각 해야할듯!
세분화 하는 이유
- 메모리의 효율적인 사용
세분화된 자료형을 사용하면,
해당 자료형이 필요한 크기만큼의 메모리를 할당하여 메모리의 효율적인 사용을 가능하게 합니다. - 정확한 데이터 표현
세분화된 자료형을 사용하면, 데이터의 특성에 따라 정확한 표현이 가능합니다.
예를 들어, 부동소수점 자료형인 float과 double은 소수점 이하 자릿수가 다르며, 각각의 자료형은 다른 범위의 값까지 표현이 가능합니다. - 타입 안정성
세분화된 자료형을 사용하면, 코드의 타입 안정성을 유지할 수 있습니다.
예를 들어, 정수형 자료형으로 byte를 사용하면, 해당 자료형이 가질 수 있는 값의 범위를 벗어날 경우 오류가 발생하므로, 코드의 안정성을 보장할 수 있습니다.
2. 리터럴
- C#에서는 다양한 종류의 리터럴을 지원
- 각각의 리터럴은 다른 형식으로 표현되며, 다양한 값의 범위를 가지고 있습니다.
정수형 리터럴
10 (int)
0x10 (16진수 int)
0b10 (2진수 int)
10L (long)
10UL (unsigned long)
부동소수점형 리터럴
3.14 (double)
3.14f (float)
3.14m (decimal)
문자형 리터럴
'A' (char)
'\n' (개행 문자)
'\u0022' (유니코드 문자)
문자열 리터럴
"Hello, World!" (string)
"문자열 내 "따옴표" 사용하기"
@"문자열 내 개행 문자 사용하기"
3. 변수
변수 :
데이터 (숫자,문자 등) 을 저장하고, 사용하기 위해 할당받은 공간
필요에
따라 데이터 저장하거나 수정 가능
ex 게임 제작 시 플레이어 재화나 공격력, HP 등의 정보를 저장하기 위해 사용
변수 선언하기
자료형 변수이름 ; == int num;
변수 선언과 초기화
int num; - 변수 선언
num = 10; - 변수 초기화
int num = 10; - 변수 선언과 초기화 동시에 수행
한번에 여러개 가능
int num1, num2, num3 = 10;
num1 = num2 = num3 = 10;
변수 명
변수 명에도 규칙이 있다.
키워드
C#에서 이미 등록된 단어들 - 변수, 메소드, 클래스 등의 이름으로 사용할 수 없음
키워드 예시
abstract as base bool break byte case catch char checked class const continue
decimal default delegate do double else enum event explicit extern
false finally fixed float for foreach goto if implicit in int interface internal is
lock long namespace new null object operator out override
params private protected public readonly ref return
sbyte sealed short sizeof stackalloc static string struct switch
this throw true try typeof uint ulong unchecked unsafe ushort using
virtual void volatile while
식별자
변수, 메서드, 클래스, 인터페이스 등에 사용되는 이름.
키워드와 동일하게 사용할 수 없음!!!
식별자 규칙
1. 첫 문자는 알파벳, _ (언더스코어) 가 올 수 있다
2. 두번째 문자부터는 알파벳, 언더스코어, 숫자 사용가능
3. 대소문자 구분
4. 키워드와 같은 이름 사용 불가!!
식별자 예시
// 좋은 예시
int playerScore;
string playerName;
float itemPrice;
// 나쁜 예시 (중요 의미 있는 변수명 짓기)
int x1; // 변수명이 의미를 알기 어려움
string a; // 변수명이 명확하지 않음
// 오류 예시
int 1stNumber; // 변수명은 숫자로 시작할 수 없음
string my-name; // 변수명에 하이픈(-)을 사용할 수 없음
float total$; // 변수명에 특수문자($)를 사용할 수 없음
a,b,c 이런 것 보단 GameScore 이런식으로 직관적이게 짓는 것이 좋다!
코드는 기본적으로 위에서 아래로, 왼쪽에서 오른쪽으로 읽기 때문에
숫자가 처음에 오면 인식을 제대로 못함.
_ 말고 - 는 사용불가!
특수문자도 안됨
코드 명을 짓는 것에도 개발자들 사이에서의 약속이 있다.
(서로 알아보고 유지보수를 위함)
코드 컨벤션
개발자들 사이에서 약속된 코드 작성 규칙.
프로그래밍 언어마다 다를 수 있음
- 식별자 표기법
- PascalCase: 클래스, 메서드, 프로퍼티 이름 등에 사용됩니다.
단어의 첫 글자는 대문자로 시작하며, 이후 단어의 첫 글자도 대문자로 표기합니다.
예를 들어, ClassName, MethodName, PropertyName과 같은 형태입니다. - camelCase: 변수, 매개변수, 로컬 변수 이름 등에 사용됩니다.
단어의 첫 글자는 소문자로 시작하며, 이후 단어의 첫 글자는 대문자로 표기합니다.
예를 들어, variableName, parameterName, localVariableName과 같은 형태입니다. - 대문자 약어: 예외적으로 전체 글자가 모두 대문자인 식별자도 있습니다.
대표적으로 ID, HTTP, FTP 등이 있습니다.
- PascalCase: 클래스, 메서드, 프로퍼티 이름 등에 사용됩니다.
- 들여쓰기
- 탭(tab) 또는 스페이스(space) 4칸을 사용하여 코드 블록을 들여씁니다.
- 중괄호 위치
- 중괄호({})는 항상 새로운 줄에서 시작합니다.
- 빈 줄 사용
- 관련 없는 코드 사이에는 빈 줄을 사용하여 구분합니다.
- 메서드, 클래스 등의 블록 사이에는 두 줄을 띄어씁니다.
- 주석
- // 한 줄 주석을 사용합니다.
- /* / 여러 줄 주석을 사용할 때는 / 를 다음 줄에서 시작하고, */ 를 새로운 줄에서 끝내도록 합니다.
ex
class MyClass
{
// 필드는 camelCase 표기법을 사용합니다.
private int myField;
// 프로퍼티는 PascalCase 표기법을 사용합니다.
public int MyProperty { get; set; }
// 메서드는 PascalCase 표기법을 사용합니다.
public void MyMethod()
{
if (true)
{
// 중괄호는 새로운 줄에서 시작합니다.
}
// 코드 블록은 탭(tab) 또는 스페이스(space) 4칸으로 들여씁니다.
// 관련 없는 코드 사이에는 빈 줄을 사용하여 구분합니다.
// 블록 사이에는 두 줄을 띄어씁니다.
/*
여러 줄 주석을 사용할 때는
/ * 를 새로운 줄에서 시작하고,
* / 를 새로운 줄에서 끝내도록 합니다.
*/
// 한 줄 주석은 이렇게 사용합니다.
int a = 10; // 코드 끝에도 한 줄 주석을 사용할 수 있습니다.
}
}
숙제
1. 이름과 나이를 입력받고 출력하는 코드
2. 간단한 사칙연산 계산기 만들기
Console.WriteLine(num1 + num2);
Console.WriteLine(num1 - num2);
Console.WriteLine(num1 / num2);
Console.WriteLine(num1 * num2);
Console.WriteLine(num1 % num2);
Console.WriteLine(); 을 넣어주변 빈 줄이 생성되서 나눠주기 좋다.
3. 섭씨온도 화씨온도 바꾸기
공식은 화씨 = (섭씨 * 9/5) + 32 입니다.
이렇게 했었는데 생각해보니 화씨는 정수가 아니라 소수점으로 나오므로 float 해줘야함
이렇게 고쳐주었다.
4. bmi 계산기 만들기
BMI = 체중(kg) / 키(m)^2
^는 제곱이다
1강의 절반정도만 정리해도 길이가 너무 길다!!!!!
사실 강의만 들을 때는 이해가 잘 안됐는데 숙제를 하면서 오히려 이해가 됐던 것 같다.
휴 열심히 해야지
'제출용 > TIL' 카테고리의 다른 글
내일배움캠프 9일차 TIL + 텍스트 RPG (3) | 2024.04.25 |
---|---|
내일배움캠프 8일차 TIL + 자료형, 연산자, 문자열 (0) | 2024.04.24 |
내일배움캠프 6일차 TIL + 5 주변기능학습 (0) | 2024.04.22 |
내일배움캠프 5일차 TIL + 4 르탄이 카드 뒤집기 (1) | 2024.04.19 |
내일배움캠프 4일차 TIL + 3 고양이 밥주기 게임 (2) | 2024.04.18 |