C# 기초 Hello World 코드 구조, 챕터1 과제
using System;
namespace HelloWorld
{
class Program
{
static void Main(String[] args)
{
Console.WriteLine("Hellow World");
}
}
}
using System; C#에서 기본적으로 제공하는 네임스페이스(system 네임스페이스)를 사용하기 위한 코드 Console 클래스 사용하기 위해 필요함
namespace 는 코드를 구성하는데 사용됨 클래스 및 기타 네임스페이스 컨테이너
class Program 은 C# 클래스를 정의하는 키워드
static void Main() 은 C# 진입점(entry point) Main은 프로그램 시작할때 자동 호출, 필수적
Console.WriteLine("value"); 콘솔에 출력할 내용 지정 WriteLine 메서드는 새줄 시작하고 출력할 문자를 인자로 받음
Console.Write
Console.WriteLine과 유사하지만 줄바꿈 xConsole.Write("Hello! "); Console.Write("We are Learning "); Console.WriteLine("at TeamSparta"); [출력] Hello! We are Learning at TeamSparta
Console.WriteLine("Hello\nWorld");
// 출력결과
// Hello
// World
Console.WriteLine("Name\tAge");
Console.WriteLine("Kero\t30");
Console.WriteLine("Young\t25");
// 출력결과
// Name Age
// Kero 30
// Young 25
Console.WriteLine("We learn \"C# Programming\"");
// 출력결과
// The book is called "C# Programming"
Console.WriteLine("He said, \'Hello\' to me.");
// 출력결과
// He said, 'Hello' to me.
Console.WriteLine("C:\\MyDocuments\\Project\\");
// 출력결과
// C:\MyDocuments\Project\
Console.WriteLine("Hello\bWorld");
//출력 결과
// HellWorld
변수와 자료형
변수를 세분화 해서 사용하는 이유
1. 메모리 효율적 사용을 위해
2. 정확한 데이터 표현
3.타입 안정성
리터럴(literal)
리터럴은 무엇이고 어떤 역할을 하는가
리터럴의 종류, 예시
정수형 리터럴
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), "문자열 내 "따옴표" 사용하기", @"문자열 내 개행 문자 사용하기"
int num = 20;
float f = 3.1f;
char c = 'A';
string str = "Hello";
int num1 = 0x10;
int num2 = 0b1010;
long num3 = 1000000000L;
변수
데이터를 저장하고 사용하기 위한 할당받은 공간
필요에 따라 데이터를 저장하거나 수정 가능
변수 선언
자료형 변수이름;
int num;
int num1, num2, num3
변수 초기화
변수이름 = 값;
int num; //변수 선언
num = 10; // 변수 초기화
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
//선언과 동시에 초기화도 가능
int num = 10; //변수 선언과 초기화를 한 번에 수행
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
// 한번에 여러개 변수 초기화 가능
int num1, num2, num3 = 10; (x)
num1 = num2 = num3 = 10;
C# 에서는 이미 예약된 단어들이 있어 특정 단어는 변수, 메소드, 클래스 등의 이름으로 사용할수없다
이러한 단어를 키워드라 함 (Keywords)라고 함
키워드들
식별자
변수, 메서드, 클래스, 인터페이스 등에 사용되는 이름, 이 이름은 키워드와 동일하게 사용 불가
규칙
첫 문자는 알파벳, 언더스코어(_) 가능
두번째 문자부터 알파벳, 언더스코어 가능
대소문자 구분
키워드와 같은 이름 x
//Good Ex
int PLayerScore;
string PLayerName;
float itemPrice;
//Bad Ex
int x1; //변수명의 의미 알 수 없음
string a; //변수명이 정확하지 않음
//Err Ex
int 1stNumber; // 변수명은 숫자로 시작 x
string my-name // 하이콘 (-) 사용 불가
float tatal$ //변수명에 특수문자 x
코드 컨벤션 (Code convention)
코드 컨벤션은 개발자 사이에서 약속된 코드 작성 규칙, 코드의 가독성을 높이고 유지보수 싑게하기 위함
1. 식별자 표기법
PascalCase: 클래스 메서드 프로피티 이름등에 사용됨. 단어의 첫 글자는 대문자, 이후 단어의 첫글자도 대문자 Ex) ClassName, MethodName,PropertyName
camelCase: 변수, 매개변수, 로컬 변수 이름등에 사용됨. 단어의 첫글자는 소문자, 이후 단어 첫 글자는 대문자 Ex) vasriableName, parameterName, localVariableName
대문자 약어: 에외적으로 전체 글자가 모드 대문자인 식별자 있음 Ex)ID, HTTP, FTP 등
들여쓰기: 탭 또는 스페이스 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; // 코드 끝에도 한 줄 주석을 사용할 수 있습니다.
}
}
과제
static void Main(String[] args)
{
Console.WriteLine("이름을 입력하세요:");
string name = Console.ReadLine();
Console.WriteLine("나이를 입력하세요:");
int num = int.Parse(Console.ReadLine());
Console.WriteLine($"Hello,{name}, 당신은 {num} 세 이네요 ");
}
Int num = Console.ReadLine(); 은 안됨 문자열로 반환, 문자열을 int로 변환하지 않고 바로 정수형 변수에 저장하려고 시도하면 오류가 발생.
그래서 int.Parse();를 통해 무조건 정수를 입력한다는 가정하에 정수로 변환