안녕하세요. 우당탕탕 개발일지 입니다. 응용 소프트웨어에서 C#을 배우게 되어 간단하게 정리한걸 올리겠습니다.
중간고사 범위까지 C# 문법 전부가 범위였고 또 교수님도 이미 언어 몇개 배웠다고 가정하고 알아서 공부해오라 하셔서 블로그 설명이 친절하지 않을 수 있습니다. 공부한 사이트 첨부 해주겠습니다.
1. C# 기초문법 _ C# 프로그래밍 언어
C# 특징
→ 객체 지향 프로그래밍,
→.NET Framework을 이용하여 프로그래밍하는 대표적인 언어.
→ 원도우,웹, 모마일 등등 에서 사용되는 범용 프로그래밍.
C# 프로그램 : .cs라는 확장자 사용. 별도의 헤더 파일 없음.
2. C# 기초 문법_ 데이터 타입
⭐⭐Object는 모든 데이터 타입의 기본 클래스 임.
C# 데이터 타입: int,double,string,…
.NET 데이터 타입: System.Int32 , System.Doubleㅡ…
float f = 123.45F;
double d1 =123.45;
double d2 =123.45D;
decimal d = 123.45M;
//실수에 아무것도 안붙이면 double
char c ='C';
string s ="hello";
Nullable Type
int? i = null;
i = 101;
Console.WriteLine(i);//101
bool? b = null;
Console.WriteLine("b="+ b); // b=
//int? 를 int로 할당
Nullable<int> j = null;
j = 10;
int k = j.Value;
Console.WriteLine(k); //10
3. C# 기초 문법_변수 및 상수
로컬변수는 기본값을 할당받지 못하기 때문에 반드시 사용 전에 값을 할당해야 하는 반면, 필드(= 전역 변수 )는 값을 할당하지 않으면, 해당 타입의 기본값이 자동으로 할당된다.
class CSVar
{
//필드 (클래스 내에서 공통적으로 사용되는 전역 변수)
int globalVar;
const int gv = 20;
const int MAX = 1024;
public void Method1()
{
// 로컬변수
int localVar;
const int lv = 80;
// 아래 할당이 없으면 에러 발생
localVar = 100;
Console.WriteLine("전역변수"+globalVar); //0 _ 정수라서 자동으로 0 할당.
Console.WriteLine("로컬 변수"+localVar);//100
Console.WriteLine("상수_local"+lv); //80
Console.WriteLine("상수_global"+gv); //20
}
}
class Program
{
// 모든 프로그램에는 Main()이 있어야 함.
static void Main(string[] args)
{
// 테스트
CSVar obj = new CSVar();
obj.Method1();
}
}
상수 키워드 : const
상수와 변수의 차이점은, 변수는 프로그램 중간에 값을 변경할 수 있지만, 상수는 초기에 정한 값을 중간에 변경할 수 없다. const는 컴파일시 상수값이 결정된다.
4. C# 기초 문법_배열
배열: 동일한 데이터 타입의 집합.
- 인덱스 0부터 시작.
- C#은 1차 배열부터 최대 32차 배열까지 가질 수 있다.
- 배열은 reference 타입이라 배열을 다른 객체나 메서드에 전달할 때, 직접 모든 배열 데이타를 복사하지 않고, 배열 전체를 가리키는 참조 값(Reference pointer)만을 전달.
int[] arr = new int[10];
int[] arr1 = { 1, 2, 3, 4, 5 };
Console.WriteLine(arr.Length);
foreach (var i in arr1)
{
Console.WriteLine("arr1["+i+"]="+ i);
}
int[,] arr2 = new int[3, 2];
Random rand = new Random();
for(int i=0; i<arr2.GetLength(0); i++)
{
for(int j=0; j<arr2.GetLength(1); j++)
{
arr2[i,j]=rand.Next(100);
Console.WriteLine("arr2["+i+","+j+"] ="+ arr2[i, j]);
}
}
//int[,] brr2 = { { 0,1},{3,4},{ 5,6} }; // [3,2]
int[,] brr2 = { { 0, 1, 2, 3 }, { 4, 5, 6, 7 } }; //[2,4]
for (int i = 0; i<brr2.GetLength(0); i++)
{
for (int j = 0; j<brr2.GetLength(1); j++)
{
Console.WriteLine("brr2["+i+","+j+"] ="+ brr2[i, j]);
}
}
2차원 배열
string[,] arr2D = new string[,]
{
{ "1", "2" },
{ "11", "22" }
};
/*
arr[0,0] = "1"
arr[0,1] = "2"
arr[1,0] = "11"
arr[1,1] = "22"
*/
3차원 배열
string[,,] arr = new string[,,] {
{ {"1", "2"}, {"11","22"} },
{ {"3", "4"}, {"33", "44"} }
};
/*
arr[x, y, z]
arr[0, 0, 0] → "1"
arr[0, 0, 1] → "2"
arr[0, 1, 0] → "11"
arr[0, 1, 1] → "22"
arr[1, 0, 0] → "3"
arr[1, 0, 1] → "4"
arr[1, 1, 0] → "33"
arr[1, 1, 1] → "44"
*/
가변 배열
int[][] A = new int[3][];
//각 1차 배열 요소당 서로 다른 크기의 배열 할당 가능
A[0] = new int[2];
A[1] = new int[3] { 1, 2, 3 };
A[2] = new int[4] { 1, 2, 3, 4 };
A[0][0] = 1;
A[0][1] = 2;
⚠️⚠️가변 배열은 arr.Length/ arr[i].Length 이렇게 써야함. 가변 배열은 GetLength()사용 못함.
int[][] arr = new int[2][];
arr[0] = new int[] { 1, 2 };
arr[1] = new int[] { 3,4,5 };
for (int i = 0; i < arr.Length; i++)
{
for (int j = 0; j < arr[i].Length; j++)
{
Console.Write(arr[i][j] + " ");
}
Console.WriteLine();
}
퀴즈 _ 가변 배열
Q 문제 1. 가변 배열 선언 및 특정 요소 출력⭐️⭐️
아래 조건에 따라 가변 배열을 선언하고, A[2][1]의 값을 출력하는 코드를 작성하시오.
- 3개의 1차원 배열을 가진 가변 배열 A를 선언
- 각각의 요소는 다음과 같은 크기와 값을 가짐:
- A[0] = { 10 }
- A[1] = { 20, 30 }
- A[2] = { 40, 50, 60 }
<정답>
int[][] A = new int[3][];
A[0] = new int[] { 10 };
A[1] = new int[] { 20, 30 };
A[2] = new int[] { 40, 50, 60 };
Console.WriteLine(A[2][1]); // 결과: 50
<정답>
Console.Write("행 수: ");
int rows = int.Parse(Console.ReadLine());
int[][] jagged = new int[rows][];
for (int i = 0; i < rows; i++)
{
Console.Write($"{i}행 열 수: ");
int cols = int.Parse(Console.ReadLine());
jagged[i] = new int[cols];
for (int j = 0; j < cols; j++)
{
jagged[i][j] = j; // 인덱스 번호로 초기화
}
}
// 전체 출력
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < jagged[i].Length; j++)
{
Console.Write(jagged[i][j] + " ");
}
Console.WriteLine();
}
<참고한 사이트>
https://www.csharpstudy.com/CSharp/CSharp-Intro.aspx
C# 프로그래밍 언어 - C# 프로그래밍 배우기 (Learn C# Programming)
C# 프로그래밍 언어 C#은 마이크로소프트에서 개발된 객체 지향 프로그래밍 언어로서 Java 나 C++와 비슷한 면들을 많이 가지고 있다. C#을 이야기 하면 자연스럽게 .NET Framework을 함께 이야기 해야
www.csharpstudy.com
'[프로그래밍 언어 & Tool] > [C][C++][C#]' 카테고리의 다른 글
[C#] C++ 배운 사람을 위한 C# 기초 문법 정리 (3)_ 연산자,조건문, 반복문, yield (0) | 2025.04.29 |
---|---|
[C#] C++ 배운 사람을 위한 C# 기초 문법 정리 (2)_ 문자열, enum (0) | 2025.04.29 |
[C#] 2차원 배열 정렬하기(1)_ counting sort (0) | 2025.03.31 |
[C언어] 구조체(struct)_ 개념 문제 (1번 ~9번) 정답 (1) | 2024.10.11 |
[C언어] 구조체(struct)_ 개념 문제 (1번 ~9번) (0) | 2024.10.11 |