C# 기초(1)

이경현·2025년 11월 10일
post-thumbnail

Tool : Visual Studio
콘솔앱 만들기

새로운 언어를 익혀볼까 공부시작


실행용 프로젝트 생성

using System;//System네임스페이스사용.
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1//네임스페이스선언.
//공간 선언을 통해 중복되는 이름을 피할 수 있다. EX)ConsoleApp1.Apple클래스 ConsoleApp2.Apple클래스
{
    //class는 하나의 객체를 표현한다. 
    //Ex)자동차(class car)가있으면 자동차의 구성요소(맴버변수)와 행동적인요소(method)를 가질 수 있다.
    class Car
    {
        private string handle = "AMODEL";

        public void carRun()
        {
            Console.WriteLine("자동차를 움직인다.");
        }
    }

    //class Program은 C#에서 프로그램의 가장 첫번째 실행되는 Main메소드를 포함하는 용도로 주로 사용한다.
    class Program
    {
        //프로그램의 주시작점.
        static void Main(string[] args)
        {
            //System네임스페이스의 Console클래스의 WriteLine메소드 호출
            System.Console.WriteLine("Syste을 이용한 호출");
            Console.WriteLine("Hello World!");
        }
    }
}

1. 데이터 타입

C# 의 데이터 타입은 크게 4가지
정수
sbyte 부호 있는 8비트 정수
byte 부호 없는 8비트 정수
short 부호 있는 16비트 정수
ushort 부호 없는 16비트 정수
int 부호 있는 32비트 정수
uint 부호 없는 32비트 정수
long 부호 있는 64비트 정수
ulong 부호 없는 64비트 정수

실수 정확한 수의 표현 x 근사치를 표현한다.
float 32바이트
double 64바이트
decimal 128바이트
문자(열)
char 유니코드 16비트(2바이트)
string 유니코드 16비트 조합(1,073,741,823 문자의 나열)

불린
bool 8비트(1바이트) 참거짓


2. 변수

2-1. 변수 선언할 때

"데이터타입" "변수명";
int a;

2-2. 변수 선언 및 초기화

int a = 10;
string b = "문자열";

2-3. 변수 선언 + 형변환 예제 코드 작성해보기

static void main(string[] args){
// 형변환 하기 string - >int
	string a = "532";
    int b = 0;
    
    b =Int32.Parse(a);
    //기본 int 는 Int32사용
    //Int64 저장할 수 있는 숫자범위의 차이
    
    Console.WriteLine("문자를 숫자로 출력" + b);
    // 기대 값 523
    //현재 b는 숫자 523
    
// 형변환 하기 int - > string
	string c = "";
    c = b.ToString();
    
    Console.WriteLine("숫자를 문자로 출력" + c)
    // 기대값 "523"
   }

3. 연산자

3-1. 연산자 종류(1) 피연산자를 a,b,c의 변수로 가정

  • 단항 : 연산에 필요한 항이 한개

    +a 단항 플러스 : a 값을 그대로 변화 없음
    -a 단항마이너스 : a 부호를 반대로
    ++a 전위증가 : 출력 또는 사용 전에 a값을 +1 하고 사용
    a++ 후위증가 : 출력 또는 사용 후 a값을 +1한다
    --a 전위감소 : 출력 또는 사용 전 a값을 -1 하고 사용
    a-- 후위감소 : 출력 또는 사용 후 a값을 -1한다.
    !a 논리부정 : a가 참인 경우 거짓으로 거짓인 경우 참으로 논리를 반전한다.

  • 이항 : 연산에 필요한 항이 두개

    a=b-c : 대입
    a 에 b-c 값을 넣는다.
    a-=b : 빼기 대입 a=a-b
    a+=b : 더하기 대입 a=a+b
    a=b : 곱하기 대입 a=ab

  • 삼항 : 조건식에 따라 A또는 B 중 하나의 결과 반환
    피연산자를 a,b,c의 변수로 가정

    조건식 ? A : B

3-2. 연산자 예제코드

static void Main(string[] args) {
	int num1 = 1;
    int num2 = 4;
    
    Console.WriteLine(num1++); //1
    Console.WriteLine(num1); //2
    
    Console.WriteLine(++num1);//3
    Console.WriteLine(num1);//3
    
    int num3 = num1 > num2 ? 3:5;
    			//3		4	5
    Console.WriteLine("num3은?"+num3);
    //num3은? 5

}

3-2. 산술연산자

사칙연산

+-*/%

3-3. 복합 대입 연산자

+=
-=
*=
/=
%=
|=
^=
<<= >>=

ex)
 int num1 =1;
 
 num1+=3;
 // num1 = num1+3 과 같은 의미 4
 num1-=2;
 //num1=num1-2 오 ㅏ같은 의미 2

3-4. 비교 연산자 : 값의 비교

==, !=, >, <, >=, <=

3-5. 조건 연산자 조건식의 결과가 참 거짓에 따라 결과를 준다.

 int a = 5;
 
 a = (a>10) ? 1 : 0 ;
 	//조건식	참:거짓;
 a =0;
 
  // 보통 숫자 1은 true 0은 false -1은 오류상태로 많이들 사용한다고 한다.

3-6. 논리 연산자

! not : 논리부정 - 참은 거짓으로 거짓은 참으로 출력
&& and : 논리곱 - 둘다참이어야 참 출력
|| or : 논리합 - 둘중에 하나라도 참이면 참 출력

3-7. 비트 연산자 : 비트연산에서는 10진수가 아닌 이진수로 계산

& 두 비트 모두 1인 경우메나 1
| 두 비트중 하나면 1이여도 1
^ 두 비트중 하나만 1이고 다른 하나가 0일 때 계산결과1, 1^1 또는 0^0은 계산결과 0
*비트연산자는 그림에 효과를 주거나 전자 또는 전기 시스템의 회로구성이 논리적 AND 게이트 등 하드웨어적인 요소가 논리연산으로 계산하기 때문에 시스템 프로그램 개발등 특수 환경에 주로 사용한다고 한다..
<< 왼쪽 시프트 : 비트를 왼쪽으로 이동시키고 오른쪽 빈칸은 0으로 채운다
">>" 오른쪽 시프트 : 비트를 오른쪽으로 이동시키고 왼쪽 빈칸은 부호비트로 채운다

어려우니까
예시... 그래도 어려워요,,

왼쪽 시프트
int a = 3;      // 3 = 0000 0011 (2진수)
int b = a << 1; // 왼쪽으로 1비트 이동 → 0000 0110
Console.WriteLine(b); // 출력: 6

//간단 설명 왼쪽으로 한칸이동 = 2배
//왼쪽으로 n칸 이동 = 2ⁿ 배

오른쪽 시프트
int a = 8;      // 8 = 0000 1000
int b = a >> 1; // 오른쪽으로 1비트 이동 → 0000 0100
Console.WriteLine(b); // 출력: 4

// 오른쪽으로 한칸 이동하면 = 1/2배
// 오른쪽으로 n칸 이동 = 2ⁿ으로 나눈 것과 같음

4. 배열

동일한 타입의 값이 많을 때 많은 변수를 선언하는 것 대신 많은 변수를 하나의 변수에 저장하고 사용 가능하게 해준다.

4-1. 기본 배열 - 문자 숫자 배열

	string[] cars = new string[10];
    string[] food = {"사과", "바나나", "파인애플", "수박"};
    
    int[] myNum = {10, 20, 30, 40, 50};
    
    // 배열 접근방법
    food[0];	// "사과"
    food[1];	// "바나나"
    food[3];	// "수박"
    
    myNum[0];	// 10
    myNum[2];	// 30
    myNum[3];	// 40
    
    // 배열요소 변경하기 
    
    food[0] = "귤";
    //출력하면 ?
    food[0];	// "귤"
    
    // 배열의 길이 얻기
    food.Lenght; //4

4-2. 2차원 배열


    // 2차원 배열 선언과 초기화
    // 2차원 배열은 열의 크기가 동인해야한다.
    // 오류 예제
   // int[,] myNums = {{1,2,3,4},{5,6,7}}; 0번째는 4, 1번째는 3 >> 이렇게 되면 오류
   // int[,] myNums = {{1,2,3,4},{5,6,7,8}}; 0번쨰와 1번째를 4자리로 맞춰줘야함
   
   int[,] myNums = {{1,2,3,4},{5,6,7,8}};
   
   int var = myNums[0,2];
   
   
 // 배열을 두고 보자면
 //  		 	 0열		1열		2열 	   3열
 // 0행		1		2		 3*		 4
 // 1행 		5		6		 7		 8
   
 // 0행의 2열 = 3 이라는 뜻 !!!!!
 // 대부분 1차원 배열 사용 2차원은 가끔 3차원은 종종 4차원은 거의 사용을 안한다고 한다..
 // 나같아도 안해;;

4-3. 가변배열

	//추가할 1차원배열크기 필수로입력.
            int[][] myNums2 = new int[4][]; //4행짜리 가변배열 생성
            myNums2[0] = new int[2] { 1, 2};
            myNums2[1] = new int[3] { 3, 4, 5 };
            myNums2[2] = new int[4] { 6, 7, 8, 9 };
            myNums2[3] = new int[2];
            
            //int var2 = myNums2[0,1];
            int var2 = myNums2[0][1];
            Console.WriteLine("var2는?" + var2);
            
            //시각화 하자면 
            //myNums2 ─┬──> [1, 2]
          	//		 ├──> [3, 4, 5]
          	//		 ├──> [6, 7, 8, 9]
          	//		 └──> [0, 0]
            
            myNums2[0][1];
            // 이건 0행의 1열 값을 의미 
            =2'
            

5. 조건문

연산자를 활용하여 비교를 통해 참 또는 거짓의 값을 얻을 수 있다.
참 거짓을 통해 코드를 선택적으로 실행할 수 있음

5-1. 조건문의 종류

if문(if, else, else if), switch 문

if 문은 거의 자바와 동일

5-2. switch 문 많은 코드중 하나를 선택해서 실행하게 됨

static void Main(string[] args) {

	// 기본구조
	switch (변수) // 비교할 값
	{
      case 값1:
          // 실행 코드1
          break; // 일치하면 브레이크로 스위치 조건문에서 빠져나온다.

      case 값2:
          // 실행 코드2
          break;

      default:
          // 어떤 case에도 해당하지 않을 때 실행
          break;
  }

  // 예시
  int day = 3;

  switch (day)
  {
      case 1:
          Console.WriteLine("월요일");
          break;
      case 2:
          Console.WriteLine("화요일");
          break;
      case 3:
          Console.WriteLine("수요일");
          break; //>> 여기서 나오겠지
      case 4:
          Console.WriteLine("목요일");
          break;
      default:
          Console.WriteLine("주말");
          break;
  }
}

6. 반복문

6-1. 종류

  • while, do&while, for, for&each

6-2. while

  • 조건이 참일 경우 중괄호 안의 코드가 무한히 실행
while(조건) {
실행식
}

예제

    static void Main(string[]args){
		int i =0;
        while(i<6) {
        	Console.WriteLine(i);
            i++;
            // 기대값 
            //0
            //1
            //2
            //3
            //4
            //5
        }
	}

6-3. do&while

  • 무조건 한번은 실행한다. 2번재 실행부터 조건체크

do{} // 이건 무조건 실행
while(조건) {

}// 체크 후 실행

6-3. for

  • 몇번이나 반복할지 정확하게 알고 있는 경우 사용
  for(int i=0; i<6; i++){
  Console.WriteLine(i);
  }
  for(for문 코드라인 진입과 동시에 한번만 실행될 코드;반복할 조건;중괄호안의 코드가 실행되고 매번 실행될 코드){
  반복할 코드
  }
  

6-3. for&each

  • 배열, ArrayList에 저장된 모든 값을 사용하여 반복한다.
static void Main(string[] args){

	string[] strs = {"바나나", "사과", "파인애플", "망고"};
    
      foreach(string i in strs) {
      //문자열 i 안에 strs 를 하나씩 담겠다
          Console.WriteLine(i); // 하나씩 출력하겠다
          // 바나나
          // 사과
         // 파인애플
         // 망고
      }
    }

7. 예외처리

try catch finally 등 자바와 유사


다음 포스팅에 함수 작성하기

0개의 댓글