분류 전체보기 152

C# 객체지향 문법 [캡슐화]

관련성이 있는 데이터와 그 데이터를 다루는 메서드를 객체 안에 구현하는 것이 일반적인 통념이고, 더 나아가서는 객체의 밖에서 알 필요가 없는 내부 멤버를 숨기기도 하는데, 이를 두고 캡슐화(encapsulation)라는 용어를 사용한다.double pi = 3.14;double GetAreaOfCircle(double radius) //원의 넓이를 반환하는 함수{ return radius * radius * pi;}void Print(double value){ Console.WriteLine(GetAreaOfCircle(value));}Print(10); //출력 결과: 314객체가 없어 파일로 구분해줄 수 있다.ex) 모든 코드를 math.c라는 파일안에 넣어 둘 수 있다. 어찌 보면 파일로..

C# 2025.05.13

C# 객체지향 문법 [생성자, 종료자, 정적멤버, 인스턴스 멤버, 네임스페이스]

생성자C# 클래스에는 특별한 용도의 메서드가 있다.클래스에 생성자 메서드를 추가하면 객체가 '생성'되는 시점에 해당 메서드가 자동으로 호출된다. 이런 점에서 생성자는 다른 여타 메서드와 구별된다는 특징이 있다.class 클래스_명{ 접근_제한자 클래스_명(타입 매개변수명, ....) { }}//생성자는 이름이 클래스명과 동일하며 반환타입을 명시하지 않는다는 점을 제외하면 //일반 메서드를 정의하는 방법을 따른다.(constructor를 줄여서 ctor라고 부르기도 한다.)반환 타입이 없고 클래스 이름과 동일한 public Person 메서드를 정의해두면 코드에서 new Person을 실행하는 시점에 해당 메서드의 코드가 실행된다.-> 생성자에는 말 그대로 객체를 생성하는 시점에 실행되야 할 코..

C# 2025.05.13

C# 객체지향 문법 [클래스, 필드, 메서드]

'책'이라는 개념을 보면, 어떤 공통적인 특징을 만족해야 '책'이라고 부를 수 있는가?책에는 '제목'이 있다. 이와 마찬가지로 'ISBN 식별자', '내용', '저자', '페이지 수'가 책에 포함될 수 있다.이러한 특징을 C#의 자료형으로 나타내는 것이 가능하다.책제목stringISBN 식별자decimal내용string저자string페이지 수int특정 사물의 특징 중에는 자료형으로 표현할 수 있는 여러 가지 값이 존재하고, 객체지향에서는 이를 속성(attribute)라고 한다.사물의 특징에는 속성만 있는 것은 아니다. 인간이라는 범주에 속하는 영희라는 객체가 책과 상호작용할 때 대표적으로 '책을 펼치고', '책을 덮는다'는 행위(behavior)를 한다.이러한 행위까지 포함한다면 책은 다음과 같은 특징으..

C# 2025.05.12

C# [제어문]

선택문C#의 선택문(selection statements)으로 if와 switch 구문이 있다. 두 단어 모두 C#의 예약어이며 그에 따른 일정한 형식의 문법이 있다.bool 자료형이 나오는 C# 연산자를 알아야 하는데, 전형적인 선택문에는 반드시 '조건'이 따르게 되고, 그 조건의 평가는 참/거짓으로 나오기 때문이다.관계 연산자, 논리 연산자연산의 결과가 참/거짓으로 나오는 C#의 연산자로는 관계 연산자(relational operator)와 논리 연산자(logical operator)가 있다.6가지 관계 연산자관계 연산자평가 방식예제>좌측 피연산자가 우측 피연산자보다 크면 참, 같거나 작으면 거짓bool result = 10 > 20; //거짓좌측 피연산자가 우측 피연산자보다 작으면 참, 같거나..

C# 2025.05.09

C# [배열]

배열(array)이란 무엇이고 왜 필요한가?개발자를 편리하게 만들어주는 것이 배열이다.개발자가 관리해야할 제품의 수의 양이 많다면 코드의 양도 증가하는데, 배열을 사용해 이 문제를 해결 할 수 있다.int box1 = 1000;int box2 = 2000;int box3 = 3000;//이렇게 관리하는 것이 아닌 배열을 선언해 사용한다.int[] boxs = new int[5];string[] names = new string[1000];new라는 예약어와 함께 배열을 정의하기 위한 대괄호(square bracket) 문장부호를 볼 수 있다.C#에서 new 키워드는 참조 형식과 함께 사용되는 경우 그에 필요한 메모리 힙(Heap)에 할당하는 역할을 한다.변수를 선언할 때 대괄호를 사용하면 해당 변수가 배..

C# 2025.05.07

C# [기본 문법 요소]

각 프로그래밍 언어는 저 마다 나름의 문법과 어휘 구조를 가지고 있다.C#도 예외는 아니며, 한 가지 집고 넘어가야 할 것이 바로 '예약어(또는 키워드)', '식별자', '리터럴' 개념이다.예약어, 키워드예약어(reversed word) 또는 키워드(keyword)는 C# 언어에서 문법을 표현하기 위해 미리 예약된 단어를 의미한다.예약어 예시)sbyte, byte, short, ushort, int, uint, long, ulongfloat, double, decimalchar, stringbool식별자식별자(identifier)는 프로그래밍을 하면서 임의로 선택해서 이름을 지을 수 있는 단어를 말한다.namespace ConsoleApp2; class Program { static void Ma..

C# 2025.05.07

C# [형 변환]

각 자료형은 서로 변환하는 것이 가능할 수도 있고 그렇지 않을 수도 있다.부가적인 코드를 지정하지 않고 자연스럽게 형 변환(Type Conversion)되는 것을 '암시적 변환'이라고 한다.개발자가 명시적으로 형 변환임을 알리는 것을 '명시적 변환'이라고 한다.암시적 변환 1바이트의 byte 데이터가 2바이트의 short 형에 대입된다면 문제되는 것이 있는가?- 없다. byte 데이터에는 0 ~ 255 범위의 수가 담기는데, short 형 데이터에는 -32,768 ~ 32767 범위의 값을 담을 수 있기 때문이다.이 처럼 범위가 작은 데이터 타입에서 그 값을 충분히 담을 수 있는 큰 타입으로 형 변환하는 것은 컴파일러가 '암시적 변환(Implicit conversion)'으로 간주해서 오류 없이 컴파일 ..

C# 2025.05.05

C# [기본 자료형]

자료형(Data Type)은 프로그램에서 데이터를 담을 수 있는 일정한 형식을 말하며, 기본 자료형(Built-in-Types)은 개발자가 별도로 코드를 만들지 않아도 C# 언어에서 자체적으로 제공하는 데이터 형식을 의미한다.정수형 기본 타입컴퓨터는 0과 1이라는 비트(bit)로 구성되어 이씩 때문에 오직 '숫자'만이 의미가 있다. 컴퓨터 세상에서는 모든 것이 숫자인데, 알파벳조차 'A' = 65, 'B' = 64... 같은 식으로 각각 대응되는 숫자로 '약속'되어 있다.비트가 표현하는 경우의 수로 인해 8비트는 2^8 = 256, 16비트는 2^16 = 65,536처럼 숫자 표현도 정해져 있다.C#뿐만 아니라 일반적인 프로그래밍 언어에서 이러한 규칙은 공통적으로 적용되며, 데이터 자료형에 따라 비트를 ..

C# 2025.05.04

C# [.NET]

닷넷은 2002년에 마이크로소프트에서 발표한 닷 넷 프레임워크(.NET Framework)에서 발전한 응용 프로그램 개발 환경→ 프로세스 가상머신일반적인 네이티브 언어로 만들어진 프로그램들이 운영체제에서 곧바로 실행되는 것과는 달리 닷넷을 기반으로 만들어진 응용 프로그램은 그에 더해 런타임 환경을 필요로 한다. 3가지 방식을 통해 배포가 가능닷넷 런타임을 시스템에 설치닷넷 런타임을 응용프로그램과 함께 배포실행 파일 내에 닷넷 런타임을 포함.NET Runtime이전에 CoreCLR이라고 불렸으며, 관련 모듈(coreclr.dll)의 이름에서 흔적을 찾아볼 수 있다. - 오픈소스 첫 번째 방식의 경우 시스템에 전역적으로 설치되므로 응용 프로그램을 빌드한 파일만 복사하면 실행이 가능하다.두 번째 방식은 응용 ..

C# 2025.05.03

컴퓨터 구조론 8장 [고성능 컴퓨터시스템 구조 / 그래픽처리유니트(GPU)]

GPU는 실시간 그래픽 처리용으로 개발되었으나, 계산 능력이 강화되어 일반적인 산술 연산 처리에도 쉽게 이용할 수 있도록 개선되면서 다양한 데이터 병렬 응용(data parallel application)들을 위한 가장 이상적인 보조 프로세서로서의 입지를 굳혀가고 있다.초기 GPU는 몇 가지 치명적인 결점들을 가지고 있었다. 프로그래밍을 위해서는 GPU 내부 구조와 그래픽 API(application program interface)에 대한 지식이 필요하다는 것과 그래픽 프로그래밍 자체가 너무 복잡하다는 것이다.기억장치에 대한 직접적인 읽기 및 쓰기와 같은 기본적인 연산은 과학 기술 응용들에 필수적인 부동소수점 연산이 지원되지 않았고, 그러한 문제점에도 불구하고 GPU가 널리 보급되기 시작한 것은 NVI..