C# 문법 종합반 1주차
1.C#의 char은 2byte 이다.
C/C++ 에서는 1byte , C#은 단일문자인 char이 유니코드를 포맷하고있기에 2byte로 처리
C/C++
1.ASCII(아스키코드) 인코딩 사용 0 - 127까지 값으로 표현 할 수 있는 문자를 저장 가능
2.다국어 지원을 위해 wchar_t 타입을 사용하여 2바이트 이상 문자로 제어 가능
C#
1.UTF-16 인코딩을 사용하여 유니코드 문자를 저장 가능
2.유니코드 문자(UTF-16의 코드유닛)를 저장하기 위한 자료형으로 전 세계 다양한 문자집합 사용가능
2.리터럴 상수 : C#에서는 컴파일러에 의해 상수 값으로 처리 되며,
변수나 상수에 할당되거나 연산에 사용
프로그램에서 직접 사용되는 상수 값 또는 소스코드에 직접 기록되어 있는 값을 의미함
ex) int num = 10 , int 0x10 (16진수 int) , 0b10 (2진수 int) ,3.14(double), 3.14f(float) , 문자열내 따옴표 사용하기 등등...
(중요)
3. 변수란 ? : 데이터(숫자,문자)를 저장하고 사용하기 위해 할당받은 공간
int num; //변수를 선언 ->데이터 저장을 위한 '공간'을 할당 받음)
num = 10; // 변수 초기화 (변수에 데이터를 대입,저장함)
(중요)
4.코드컨벤션 : 협업시 코드 작성시 지키는 약속
(밑에 예시대로 꼭 할 필요는 없음, 밑에는 대부분 이렇게 많이함)
4-1.식별자 표기법
PascalCase : 클래스 메서드 프로퍼티 , 단어의 첫글자는 대문자 이후에도 단어 첫글자 대문자
ex)ClassName,MethodName,
cameCase : 변수 , 매개변수, 로컬변수 ,단어의 첫글자는 소문자 이후로는 대문자
ex)variableName,paremeterName
대문자 약어 : 전부 대문자를 사용 , ID , HTTP,FTP
4-2.들여쓰기 : 탭 또는 스페이스 4칸
4-3.중괄호 위치 항상 새로운 줄에 시작
4-4.빈줄 사용 : 관련 없는 코드 사이에는 빈줄을 사용하여 구분
메서드,클래스 등의 블록 사이에는 두줄을 띄어 씀
5.형변환 : 명시적 형변환 , 암시적 형변환
5-1.명시적형변환
int num1 = 10;
long num2 = (long)num1;
5-2.암시적 형 변환
1.작은 데이터 타입에서 더 큰 데이터 타입으로 대입
byte num1 = 10;
int num2 = num1;
2.리터럴 값
float result = 1;
3.정수형과 부동소수점 연산 수행 : 결과는 부동소수점으로 변환됨
int num1 =10;
float num2 = 3.14f;
float result = num1 + num2;
6.입력받은 문자열 Split으로 바로 분리하기
namespace Test
{
internal class Program
{
static void Main(string[] args)
{
Console.Write("이름을 입력하십시오 : ");
string name = Console.ReadLine();
Console.WriteLine("반갑습니다. 휴먼 - {0} ", name);
Console.Write("두개의 숫자를 입력하십시오 : ");
string input = Console.ReadLine();
//문자열 입력 받아서 바로 분리해서 배열로 사용하기
string[] numbers = input.Split(' '); // 문자열을 공백으로 구분하여 배열로 만듬
int num1 = int.Parse(numbers[0]); //첫번째 값을 정소루 변호나하여 저장
int num2 = int.Parse(numbers[1]); //두번째 값을 정소루 변호나하여 저장
//
int sum = num1 + num2;
Console.WriteLine("{0} + {1} = {2}", num1, num2, sum);
}
}
}
7.var 키워드 : 변수를 선언시에 변수의 자료형이 컴파일러에 의해 자동으로 결정
사용 이유 :
1.변수 선언시 초기화 하는값의 자료형에 따라 변수의 자료형이 결정될때
2.변수 선언 시점에 자료형을 정확히 알 수 없는 경우
8.비트 연산 : 유니티에서 마스크레이어 체크할때 사용되기에 알아둬야함
(플래그 연산이라고도 함)
9.String 메서드 확인하기
Split('분리할 단일문자') : 문장을 분리자에 의 분리
IndexOf("검색할 단어") : 문장에서 해당 단어 검색 후 해단 문자열의 index 반환
Replace("검색 단어" , "대체 단어") : 검색한 단어위치를 대체 단어로 변경
문자열 -> 숫자 : int.Parse(string 변수);
숫자->문자열 : 숫자 변수.ToString();
비교1(문자열 값 비교) : str1 == str2 (bool 값 리턴)
비교2(문자열 대소 비교) : Compare(str1,str2) (int 값 리턴)
변수가 0보다 작으면 str1 < str2 / 변수가 0보다 크면 str1 > str2
포멧팅 :
1. 문자열 형식화 : Format("{0} + {1}" ,num1 , num2);
2. 문자열 보간 : string message = $"{num1} + {num2}";
위에 메서드를 활용한 예시 코드
namespace Test
{
internal class Program
{
static void Main(string[] args)
{
string str1 = "Hello,World";
string str2 = new string('h', 5);
string str3 = str1 + " " + str2;
Console.WriteLine(str3);
string[] str4 = str1.Split(',');
Console.WriteLine(str4[0]);
Console.WriteLine(str4[1]);
int index = str1.IndexOf("World");
Console.WriteLine(index); //단어가 문장의 어디에 있는지 index로 반환함
string newStr = str1.Replace("World", "Universe");
Console.WriteLine(newStr);
Console.WriteLine(str1);
string str5 = "123";
int num = int.Parse(str5);
Console.WriteLine(num);
num += 10;
Console.WriteLine(num.ToString());
Console.WriteLine(str1 == str2);
Console.WriteLine(string.Compare(str1 ,str2)); // str1 - str2
//대소비교시 아스키코드의 정수값을 가져오기에 소문자가 더욱 크다.
string name = "John";
int age = 30;
string message = string.Format("My Name is {0} and {1}", name, age);
Console.WriteLine(message);
message = $"My Name is {name} and {age}";
Console.WriteLine(message);
}
}
}
C# 문법 종합반 1주차 과제 제출
더보기
더보기
//1.이름과 나이를 입력 받고 출력하는 코드를 작성하세요
//namespace Test
//{
// internal class Program
// {
// static void Main(string[] args)
// {
// Console.Write("이름을 입력 하십시오 : ");
// string name = Console.ReadLine();
// Console.Write("나이를 입력 하십시오 : ");
// string age = Console.ReadLine();
// Console.WriteLine("이름 : {0} / 나이 : {1} ", name, age);
// }
// }
//}
//2.두 수를 입력 받고 사칙연산의 결과를 출력하세요
//namespace Test
//{
// internal class Program
// {
// static void Main(string[] args)
// {
// string[] numbers;
// do
// {
// Console.Write("두 수를 입력해 주십시오 : ");
// numbers = Console.ReadLine().Split(' ');
// if(numbers.Length != 2)
// {
// Console.WriteLine("\n문제 발생");
// Console.WriteLine("1.숫자가 두개 초과 및 미만입니다.");
// Console.WriteLine("2.숫자를 스페이스바로 분리하여 주십시오.");
// Console.WriteLine("다시 입력해주십시오.\n");
// }
// } while (numbers.Length != 2);
// float num1 = float.Parse(numbers[0]);
// float num2 = float.Parse(numbers[1]);
// string result;
// Console.WriteLine("덧셈 : {0} ", num1 + num2);
// Console.WriteLine("뺄셈 : {0} ", num1 - num2);
// result = string.Format("{0:N2}", num1 * num2);
// Console.WriteLine("곱셈 : {0} ", num1 * num2);
// result = string.Format("{0:N2}", num1 / num2);
// Console.WriteLine("나눗셈 : {0} ", num1 / num2);
// }
// }
//}
//3.섭씨온도를 화씨온도로 변환하는 프로그램을 만들어주세요
//namespace Test
//{
// internal class Program
// {
// static void Main(string[] args)
// {
// Console.Write("섭씨(C) 온도를 입력하십시오 : ");
// float celsius = float.Parse(Console.ReadLine());
// float fahrenheit = (celsius * 9 / 5) + 32;
// string message = $"화씨(F) 온도 : {fahrenheit}";
// Console.WriteLine(message);
// }
// }
//}
//4.BMI 지수를 계산하는 프로그램을 만들어봅시다
//BMI = 체중 / (신장^2)
//namespace Test
//{
// internal class Program
// {
// static void Main(string[] args)
// {
// Console.Write("체중을 입력 하십시오 : ");
// float weight = float.Parse(Console.ReadLine());
// Console.Write("신장을 입력 하십시오 : ");
// float height = float.Parse(Console.ReadLine());
// float BMI = weight / (height * height) * 10000;
// string result = string.Format("{0:N2}",BMI);
// Console.Write("당신의 BMI 지수 : {0}", result);
// }
// }
//}