[C#이 보이는 그림책] 1. 기본적인 프로그램

ssu_hyun·2022년 4월 1일
0

C#

목록 보기
2/22

Key point

문자 표시

  • Write()
    : 모니터에 문자를 표시하는 메소드
  • WriteLine()
    : 모니터에 문자를 표시하고 줄을 바꾸는(Line:행을 의미) 메소드
  • Main()
    : 프로그램의 시작 지점(entry point:엔트리 포인트), 프로그램을 실행시키면 맨 먼저 처리된다.
  • 프로그램은 클래스 안에서 작성하는 것

다양한 형, 값, 변수

  • 변수
    : 데이터를 저장해 두는 상자
    • C# 언어에서는 형(정수형, 실수형, 문자형 등)을 지정해 변수에 저장
    • C#은 숫자와 문자의 구별부터 숫자의 정밀도까지 엄밀하게 형을 지정해줘야 한다.

용어 설명

  • 변수
    : 임시적인 데이터 저장 공간
  • 데이터형
    : 데이터 구분 기준(정수형, 실수형, 문자형 등)
  • 배열
    : 성격이 동일한 변수의 연결, 복수의 같은 형의 변수를 모아 열거한 것
  • 열거형
    : 정수형에 특정 이름을 붙이고 치환하여 사용하는 방법
  • 유니코드
    : 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준

Hello World!

using System;
class Hello { 
	public static void Main() {
    	Console.WriteLine("Hello World!");
    }
}

// 결과 : Hello World!
  • 대문자, 소문자 구별 주의
  • Main() : 프로그램의 시작, 이것이 없으면 컴파일이나 실행 불가능
  • 문자열 표시
    • Console.Write(); : ()안의 문자열 화면에 표시
    • Console.WriteLine(); : ()안의 문자열 화면에 표시하고 줄 바꿈

변수

변수의 선언과 대입

int a; // (형) (변수명); | int형 변수 a를 선언한다.
a=2;  // (변수) = (값); | 변수 a에 2를 대입한다.

변수의 표시

using system;

class Data{
	public static void Main(){
    	// 변수 a, b 선언
        int a;
        int b;
        
        // a, b에 각각 2와 3 대입
        a=2;
        b=3;
        
        // 변수 a에 변수 b의 값 대입 (a 원래 값은 삭제)
        a=b;
        
        Console.WriteLine(a); // a 변수의 값 표시
    }
}

변수 선언은 꼭 행을 나누어 쓰지 않고 한 행에 여러 개 쓸 수도 있다.

a=2; b=3;

// 두 변수 선언
int a; int b;
int a,  b;

// 한 변수의 선언과 대입
int a; a = 2;
int a=2;

// 두 변수의 선언과 대입
int a; int b;
a = 2; b = 3;
int a = 2, b = 3;

수치형(정수형과 실수형)

정수형

  • s : '부호가 붙는, signed'의 의미
  • u : '부호가 붙지 않는, unsigned'의 의미
  • 형에 따라 메모리를 사용하는 양이 다르다
    • byte -(2배)-> short -(2배)-> int -(2배)-> long
형의 이름읽는 방법들어갈 값의 범위크기(비트 수)
sbyte에스바이트128-128~1271278
byte바이트00~2552558
short쇼트32768-32768~327673276716
ushort유쇼트00~655356553516
int인트2147483648-2147483648~2147483647214748364732
uint유인트00~4294967295429496729532
long9223372036854775808-9223372036854775808~9223372036854775807922337203685477580764
ulong유롱00~184467440737095516151844674407370955161564

실수형

  • 소수점 이하를 사용할 수 있는 실수형
  • float -(2배)-> double
형의 이름읽는 방법들어갈 값의 범위크기(비트 수)
float플로트±1.51045±1.5 * 10^{-45} ~ ±3.41038±3.4 * 10^{38}32
double더블±510324±5 * 10^{-324} ~ ±1.710308±1.7 * 10^{308}64
  • decimal형
    • 컴퓨터 계산의 반올림 오차를 없애고 소수점 이하의 값을 28자리까지 정확히 표현한 형
형의 이름읽는 방법들어갈 값의 범위크기(비트 수)
decimal데시멀±11028±1 * 10^{-28} ~ ±7.91028±7.9 * 10^{28}128

문자와 문자열

문자

  • 유니코드(Unicode) 문자 1개
  • char라는 형의 변수에 저장하고 크기는 16비트이며 문자는 ' 로 묶어 표현한다.
char a = 'A'; 
char a = "A";

문자의 표시

// 문자 A를 그대로 지정하여 표시
Console.WriteLine('A');

// 문자 A를 문자 코드(유니 코드)로 지정하여 표시
Console.WriteLine('\u0041');

// 컴파일 에러 : 문자열을 하나의 문자형 변수에 대입할 수는 없다.
char a = "가";
char a = "abc";

문자열

  • 복수의 문자를 모은 것
  • string이라는 형에 저장하고 문자열은 "로 묶는다.
string sweet = "candy";
  • 문자열은 + 연산자를 사용해 연결할 수 있다. 한쪽이 수치가 대입되어 있어도 문자로 취급되어 연산이 아니라 문자열에 붙는다.
using System;

class sweets{
	static void Main(){
    	string candy = "캔디";
        int a = 3;
        
        string basket = candy + a + "개";
        Console.WriteLine(basket);
    }
}

// 결과 : 캔디 3개

배열

  • 같은 형의 변수 여러 개를 한 개로 모은 것
  • 대량의 데이터를 취급할 때나 복수의 데이터를 차례차례 자동으로 읽어 내고자 할 때 사용
  • new 연산자를 이용해 선언
  • 첨자 : 0부터 시작하는 배열의 인덱스 번호
  • 요소 : 각 요소에 대한 참조는 a[0], a[1], ...로 표현
int [] a = new int [4];
// (형) [] (배열명) = new (형) (배열의 크기=요소 수)

// 선언과 동시에 초기화하려면 {}안에 값을 입력
int [] a = new int [] {1, 2, 3, 4};
// 이 때 []안에는 요소 수를 세지 않아도 상관X
// {}에 데이터 수에 따라 자동으로 요소 수 결정됨

// 위 코드는 아래와 같이 줄여쓸 수도 있다.
int [] a = {1, 2, 3, 4};
/*
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
*/

배열 요소의 참조와 대입

각 배열의 요소는 보통의 변수와 같이 참조와 대입이 가능하다.

int [] a = new int [4];
int n = 1;

// a[0]~a[3]에 값을 대입
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;

// a[1]의 값 2 표시
Console.WriteLine(a[n]);

다차원 배열

  • 두 개 이상의 차원을 가진 배열
  • 배열이 요소 수에 따라 가로로 확장해 가는 1차원이었다면, 2차원은 가로와 세로로 확장해 간다.
    • 차원 수에 따라 []안에 ,를 사용
    • 요소수는 [z, y, x] 방향의 순서대로 되어있다.
// 1차원 배열
int [] a = new int [3];

// 2차원 배열
int[ , ] a = new int [2, 3];

//3차원 배열
int[ , , ] a = new int [2, 2, 3];
1차원 배열2차원 배열3차원 배열
// 다차원 배열에 대한 대입, 초기화, 참조
using System;

class Number {
	
    static void Main() {
		int[,] a= {
			{10, 20},
    		{30, 40},
    		{50, 60}
		};
		a[1,1] = 0;
        
		Console.WriteLine("a[0,0]="+a[0,0]+'\t'+"a[0,1]="+a[0,1]);
        Console.WriteLine("a[1,0]="+a[1,0]+'\t'+"a[1,1]="+a[1,1]);
        Console.WriteLine("a[2,0]="+a[2,0]+'\t'+"a[2,1]="+a[2,1]);
      }
 }

// 결과 : a[0,0]= 10  a[0,1]= 20
//	     a[0,0]= 30  a[0,1]= 0
//       a[0,0]= 50  a[0,1]= 60

재그 배열

  • 2차원 이상의 배열에서 각 방향의 요소 수가 일정치 않은 배열
  • 재그(jag)는 '들쭉날쭉하다'는 의미
int [][] a = new int [3][];
a[0] = new int[3] {10, 20, 30};
a[1] = new int[2] {40, 50};
a[2] = new int[1] {60};

// 선언과 동시에 초기화
int [][] a = new int [][] {
 	new int[] {10, 20, 30},
 	new int[] {40, 50},
 	new int[] {60}
 };

배열의 요소 수

  • length 사용
// 1차원 배열
int [] a = new int[4];
int b = a.length // 4


// 다차원 배열
int [ , ] a = new int[3, 2];
int b = a.length // 6 = 3*2

// 재그 배열 : 각 열의 요소 수 구할 수 있다.
int [][] a = new int [][] {
 	new int[] {1, 2, 3},
 	new int[] {4, 5}, 
};
int b = a.length; // 2
int c = a[1].length; // 2
1차원 배열다차원 배열재그 배열

열거형

  • 정수값에 특정 이름(식별자)을 붙인 것
  • enum을 먼저 선언
enum Animal {mouse, cat, bird, dog, koala, pig, lion};
// Animal : 열거형명
// mouse, cat, bird, dog, koala, pig, lion : 열거정수(쉼표로 구분)
  • 각 식별자에는 0부터 차례로 1씩 증가하는 정수값이 할당됨
enum Animal {mouse, cat, bird, dog=100, koala, pig=200, lion};
  • 임의의 수를 주면 그 수로부터 1씩 증가해 감
  • int형이 아닌 정수형을 기본으로 하여 열거형을 만들고 싶다면 :(콜론)을 이용하여 형을 지정해주면 된다.
enum Animal:byte {mouse, cat, bird, dog=100, koala, pig=200, lion};
  • 식별자를 참조하려면 열거형명.열거정수와 같이 적는다.
using System;

class Enumsample
{
	enum Animal { mouse, cat, bird, dog=100, koala, pig=200, lion };
    
    static void Main() {
    	
        Animal a;
        a = Animal.dog;
        
        Console.WriteLine(Animal.cat);  // cat
        // (int)를 앞에 붙여 형을 변환하면 정수값을 참조할 수 있다.
        Console.WriteLine((int)Animal.dog);  // 100
        Console.WriteLine((int)Animal.lion);  // 201
        Console.WriteLine(a);  // dog
    }
}

  • 복습 : 연습문제 2번, 3번, 4번, 5번

0개의 댓글