19.03.26 상수,열거형식, var 타입 등

개임개발/과제 2019. 3. 27. 01:04
728x90
반응형
 - 상수 (const) -

상수 필드 또는 지역 상수를 선언할 때는 const 키워드를 사용합니다.

상수 필드 및 지역 상수는 변수가 아니며 수정할 수 없습니다.상수는 숫자, 부울 값, 문자열 또는 null 참조일 수 있습니다.

 

public const double X = 1.0, Y = 2.0, Z = 3.0;

 

출처 https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/const

 

 

 

 - 열거형식 (enum) -

 enum 형식은 열거자 목록이라고 하는 명명된 상수 집합으로 구성된 고유 형식인 열거형을 선언하는 데 사용됩니다.

대개 네임스페이스의 모든 클래스가 같은 수준으로 열거형에 액세스할 수 있도록 네임스페이스 내에서 직접 열거형을 정의하는 것이 좋습니다.

하지만 특정 클래스나 구조체 내에 열거형이 중첩될 수도 있습니다.기본적으로 첫 번째 열거자 값은 0이며 그 이후의 열거자 값은 순서대로 1씩 증가됩니다.예를 들어 다음 열거형에서 Sat0, Sun1, Mon2등입니다.

 

enum Day {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

 

 

출처 https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/enum

 

 


- var 타입 -

Visual C# 3.0부터 메서드 범위에서 선언된 변수에 암시적 "형식" var을 사용할 수 있습니다.암시적 형식 지역 변수는 형식을 직접 선언한 것처럼 강력한 형식이지만 컴파일러가 형식을 결정합니다.i의 다음 두 선언은 기능이 동일합니다. 

(즉, 변수앞에 넣으면 자동으로 받는 값에 맞게 타입이 변한다 좋음!!)

 

var i = 10; // Implicitly typed.
int i = 10; // Explicitly typed.

 

출처 https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/var

 

 

박싱(Boxing) 과 언박싱 (UnBoxing)
형식 변환 (문자를 숫자로, 숫자를 문자로)
산술연산자 (+, -, *, / %)
객체와 개체의 차이 

 

728x90
반응형

'개임개발 > 과제' 카테고리의 다른 글

19.03.27 static  (0) 2019.03.28
19.03.26 과제  (0) 2019.03.27
19.03.25 값 복사와 참조 복사  (0) 2019.03.25
19.03.22 오우거 잡기  (0) 2019.03.24
19.03.22 Stack 과 Heap  (0) 2019.03.24
:

19.03.26 과제

개임개발/과제 2019. 3. 27. 00:46
728x90
반응형

2019_03_27_00_18_46

2019_03_27_00_31_49

 

다음 코드를 보고 읽고 쓰세요 (음성파일로 대체 가능) x 20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Study_03
{
    class Program
    {
        static void Main(string[] args)
        {
            new App();
 
            Console.ReadKey();
        }
    }
}
 
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Study_03
{
    class App
    {
        //생성자 
        public App()
        {
            var character = new Character("홍길동");
            Console.WriteLine("케릭터의 이름 : {0}", character.name);
            character.Move(1.2f, 3.5f);
        }
    }
}
 
cs



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Study_03
{
    class Character
    {
        public string name; 
 
        //매개변수 1개 있는 생성자
        public Character(string name)
        {
            this.name = name;
        }
 
        //기능 (이동)
        public void Move(float x, float y)
        {
            Console.WriteLine("{0}이 ({1},{2})로 이동했습니다."this.name, x, y);
 
        }
    }
}
 
cs




728x90
반응형

'개임개발 > 과제' 카테고리의 다른 글

19.03.27 static  (0) 2019.03.28
19.03.26 상수,열거형식, var 타입 등  (0) 2019.03.27
19.03.25 값 복사와 참조 복사  (0) 2019.03.25
19.03.22 오우거 잡기  (0) 2019.03.24
19.03.22 Stack 과 Heap  (0) 2019.03.24
:

19.03.25 값 복사와 참조 복사

개임개발/과제 2019. 3. 25. 16:31
728x90
반응형

* 값 복사란? *


다른말로 깊은복사 라고도 한다.

얕은 복사와 달리 객체가 가진 모든 멤버(값 형식이든 참조 형식이든)가 복사되는 것을 말한다.

객체가 참조타입의 멤버를 포함할 경우 참조값의 복사가 아닌 참조된 객체 자체가 복사되는 것을 값 복사라 한다.




* 참조 복사란? *


다른말로 얕은 복사 라고도 한다.

얕은 복사는 객체가 가진 멤버의 값들을 새로운 객체로 복사를 하는데 만일 객체가 참조타입의 멤버를 가지고 있다면

참조값만 복사된다.




* 복사란? *

객체가 복사된다는 것은 기존 객체와 같은 값을 가지는 새로운 객체를 만든다는 것이다.

객체는 멤버(필드)를 가진다멤버는 값 형식일 수도 있고 참조형식일 수도 있다.

객체가 가진 값 형식(Value Type) 과 참조형식(Reference Type) 의 복제 방식에 따라

얕은복사와 깊은 복사로 개념이 나뉜다.

 

 

 

---참조 복사와 값 복사의 차이점---


참조복사는 원본 개체 안의 참조와 복제 안의 참조가 동일한 개체를 가리키기 때문에

원복 개체나 복사 개체 둘중에 하나만 값이 변해도 나머지 하나도 같이 값이 변한다.

값 복사는 참조 복사와는 달리 가리키고 있는 개체의 값이 변해도 서로 영향을 주지 않는다.

 

 

 

 

 


관련 링크

http://egloos.zum.com/itbaby/v/4715037

http://blog.naver.com/PostView.nhn?blogId=adonise007&logNo=220578209008&parentCategoryNo=4&categoryNo=&viewDate=&isShowPopularPosts=true&from=search



728x90
반응형

'개임개발 > 과제' 카테고리의 다른 글

19.03.26 상수,열거형식, var 타입 등  (0) 2019.03.27
19.03.26 과제  (0) 2019.03.27
19.03.22 오우거 잡기  (0) 2019.03.24
19.03.22 Stack 과 Heap  (0) 2019.03.24
19.03.22 문자열 표현식 예제  (0) 2019.03.22
:

19.03.22 오우거 잡기

개임개발/과제 2019. 3. 24. 21:51
728x90
반응형
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace study_01
{
class Program
{
static void Main(string[] args)
{
//몬스터의 이름은 오우거 입니다.
//몬스터의 체력은 100입니다
//몬스터는 사남고 무섭습니다.
//용사의 이름은 홍길동 입니다.
//용사의 체력은 80입니다.
//용사의 공격력은 4입니다.
//용사가 몬스터를 공격했습니다.
//몬스터의 체력은 96입니다.(96.44%)
string monster_name = "오우거";
float monster_phy = 100.0F;
string soldier_name = "홍길동";
float soldier_phy = 80.0F;
float soldier_power = 4.0F;
float percentage = 100.0F;
int attack_ = 0;
float phy_attack = monster_phy - soldier_power;
float phy_percentage = (phy_attack / monster_phy) * percentage;
Console.WriteLine("몬스터의 이름은" + monster_name + "입니다.");
Console.WriteLine("몬스터의 체력은" + monster_phy + "/" + monster_phy + "입니다.");
Console.WriteLine("몬스터는 사납고 무섭습니다.");
Console.WriteLine("용사의 이름은" + soldier_name + "입니다.");
Console.WriteLine("용사의 체력은" + soldier_phy + "/" + soldier_phy + "입니다.");
Console.WriteLine("용사의 공격력은" + soldier_power + "입니다.");
Console.WriteLine("용사가 몬스터를 공격했습니다.");
Console.WriteLine("몬스터의 체력은" + phy_attack + "/" + monster_phy + "(" + phy_percentage + "%)입니다.");
char soldier_attack;
Console.WriteLine("추가로 공격을 하시려면 y를 누르세요.");
soldier_attack = (char)Console.Read();
for (int i = 0; i < 25; i++)
{
switch (soldier_attack)
{
case 'y':
for (phy_attack = 92; phy_attack > 0;)
{
Console.WriteLine("용사가 몬스터를 공격했습니다.");
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("데미지" + 4 + "!", Console.ForegroundColor);
Console.ResetColor();
Console.WriteLine("몬스터의 체력은" + phy_attack + "/" + monster_phy + "입니다.");
phy_attack -= soldier_power;
while (true) {
Console.WriteLine("공격을 더 하시겠습니까? (Y/N)\t");
ConsoleKeyInfo attack = Console.ReadKey();
if (attack.Key == ConsoleKey.Y)
{
Console.WriteLine("몇 회 공격하시겠습니까?\t");
attack_ = int.Parse(Console.ReadLine());
{
Console.WriteLine("입력된 횟수" + attack_ + "회");
Console.WriteLine("용사가 몬스터를 공격했습니다.");
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("데미지" + 4 + "!", Console.ForegroundColor);
Console.ResetColor();
Console.WriteLine("몬스터의 체력은" + phy_attack + "/" + monster_phy + "입니다.");
phy_attack -= soldier_power * attack_;
}
}
}
while (false)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("몬스터가 사망하였습니다.", Console.ForegroundColor);
Console.ResetColor();
}
}
break;
}
}
}
};
}
------------------------------------------------------아직 다 못했습니다.-------------------------------------------------------------


 

728x90
반응형

'개임개발 > 과제' 카테고리의 다른 글

19.03.26 과제  (0) 2019.03.27
19.03.25 값 복사와 참조 복사  (0) 2019.03.25
19.03.22 Stack 과 Heap  (0) 2019.03.24
19.03.22 문자열 표현식 예제  (0) 2019.03.22
19.03.22 과제 데이터 타입 예제  (0) 2019.03.22
:

19.03.22 Stack 과 Heap

개임개발/과제 2019. 3. 24. 17:10
728x90
반응형

Stack 이란?

 

스택은 컴퓨터에서 사용되는 기본 데이터 구조 중 하나로 데이터를 후입선출(LIFO : Last In, First Out, FILO : First In, Last Out) 구조로 유지하는 추상 데이터형(abstract data type)을 말한다.

컴퓨터 공학에서 스택 혹은 LIFO는 추상 데이터형으로, 두 가지 기본 연산인 삽입(push)과 삭제(pop)를 수행하는 순서를 가지는 요소(elements) 집합이다. 삽입 연산은 데이터 요소를 스택의 최상위(top)에 추가하고 기존의 요소들은 그 아래에 두는 연산이다. 삭제 연산은 스택의 현재 최상위 요소를 제거하고 이를 반환하는 연산이다. LIFO라는 용어는 이러한 연산들로 인한 스택의 특성으로부터 기인한 것으로, 스택에서는 각 요소가 삽입 연산의 순서와 반대로 가장 먼저 삽입되어 스택에 들어간 요소가 가장 최후에 삭제된다는 특성을 나타낸다. 스택은 선형 자료구조로 구조의 한쪽 끝(top)에서만 삽입과 삭제 연산이 일어나는 제한된 데이터 구조이다.

 

 

Stack 포스팅

https://docs.microsoft.com/ko-kr/dotnet/api/system.collections.stack?view=netframework-4.7.2

https://terms.naver.com/entry.nhn?docId=2837556&cid=40942&categoryId=32841

 

 

 

 

Heap란?

Heap (힙) 영역은 참조 형식의 변수 할당 이다.

힙 영역은 스택에 반대되는 개념의 메모리라고 볼 수 있다. 힙에는 new를 이용하여 생성된
메모리가 복사된다. 즉, 메소드 내에서 선언된 변수는 스택에, new를 이용한 메모리는
힙에 복사되는 것이다. 
어떠한 객체 생성을 통해 값을 설정하면, 스택에는 이에 대한 메모리 주소가 생겨난다.
힙에는 이에 따른 실질적인 값이 들어간다.

힙 메모리에서 중요한 점은 다음과 같다.
1. 스택에는 메모리 주소가, 힙에는 실질적인 값이 복사된다.
2. 새로운 객체 변수에 기존의 변수를 할당하면 스택의 메모리 주소만 복사된다.
3. 값을 변경하면 메모리를 참조하고 있는 모든 변수의 값은 동일해진다.


Heap 포스팅

https://blog.naver.com/ever_green23/221003845504

 

728x90
반응형

'개임개발 > 과제' 카테고리의 다른 글

19.03.25 값 복사와 참조 복사  (0) 2019.03.25
19.03.22 오우거 잡기  (0) 2019.03.24
19.03.22 문자열 표현식 예제  (0) 2019.03.22
19.03.22 과제 데이터 타입 예제  (0) 2019.03.22
19.03.22 과제 for문  (0) 2019.03.22
:

19.03.22 문자열 표현식 예제

개임개발/과제 2019. 3. 22. 22:18
728x90
반응형

*문자열 이란?*

 

문자열은 말 그대로 문자의 열, 즉 개별문자들이 열거된 자료형 입니다.

C#에서 문자열이라는 자료형은 결국 개별 문자들의 배열입니다.

개별 문자는 char 자료형으로 표현이 가능합니다. 즉 char배열이 곧 문자열이 됩니다.

 

예시)

string str = "홍길동";

Console.WriteLine(str[0].ToString() + str[1].ToString() + str[2].ToString());

 

콘솔에 출력되는 결과는 문자열('홍길동')이 그대로 출력이 됩니다.

이렇듯 string 키워드를 사용해 표현한 문자열을 배열 첨자를 이용해 각 개별 문자를 참조할 수 있습니다

결국 string 이라는 문자열은 char의 배열이라는 것을 알 수 있는 것이죠.

 

 

 

문자열은 String 객체로 표현됩니다

C#에서는 문자열을 위해 String 이라는 클래스를 미리 정의해 두었습니다

String 클래스는 문자열이라는 것을 추상화한 자료형인데요, 내부적으로 Char 배열로 문자열을 표현하며

문자열 연결, 검색, 삽입 등과 같은 문자열과 관련된 유용한 기능들을 제공해 줍니다

 

다음과 같이 String 객체를 생성할 수 있습니다

String str = new String(new char[]{'','',''});

Char 배열을 전달하여 String 클래스의 인스턴스를 생성하였습니다

 

그런데 이전의 예에서는 단순히 string str = "홍길동"의 형태로 문자열을 생성했는데 지금은 String 객체를 정의했습니다. 차이가 있을까요?

 

string 키워드는 String 클래스의 별칭입니다. 즉 문자열을 쉽게 다룰 수 있도록 string 키워드로 제공하는 것입니다.

따라서 String 객체로 문자열을 생성하나 string 키워드로 생성하나 동일한 것으로 보시면 되겠습니다

 

 

 

 

문자열 관련 링크

http://www.mkexdev.net/Article/Content.aspx?parentCategoryID=1&categoryID=5&ID=683

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/char

 

 

 

 

----------------------------------------------------------예제 문제--------------------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {

            /*예제
             * 다음 문자("일,이,삼,사")를 char 배열에 넣고 그 값을 string 형식으로 변환시켜 화면에 출력하시오. */

 

 

            char[] problem = new char[4];
            problem[0] = '일';
            problem[1] = '이';
            problem[2] = '삼';
            problem[3] = '사';

       
            string b = new string(problem);


            Console.WriteLine("출력된 결과 값 = " + b + "");
 

 

 

        }
    }
}

728x90
반응형

'개임개발 > 과제' 카테고리의 다른 글

19.03.25 값 복사와 참조 복사  (0) 2019.03.25
19.03.22 오우거 잡기  (0) 2019.03.24
19.03.22 Stack 과 Heap  (0) 2019.03.24
19.03.22 과제 데이터 타입 예제  (0) 2019.03.22
19.03.22 과제 for문  (0) 2019.03.22
:

19.03.22 과제 데이터 타입 예제

개임개발/과제 2019. 3. 22. 21:34
728x90
반응형

*int의 정의*

 

 

* 부호 있는 정수 = 0보다 작은 정수(-정수)

* 부호 없는 정수 = 0보다 큰 정수(+정수)

 

int 정의 포스팅

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/int

http://www.csharpstudy.com/CSharp/CSharp-datatype.aspx

 

 

 

 

*리터럴이란?*

리터럴 정의 포스팅 링크

https://boycoding.tistory.com/155

 

 

 

 

*float 정의*

float 키워드는 32비트 부동 소수점 값을 저장하는 단순 형식을 나타냅니다.

다음 표에서는 float 형식의 전체 자릿수와 근사 범위를 보여 줍니다.

 

 

 

float 정의 포스팅

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/float

http://www.csharpstudy.com/CSharp/CSharp-datatype.aspx

 

 

 

 

*long의 정의*

 

long 포스팅 링크

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/long

http://www.csharpstudy.com/CSharp/CSharp-datatype.aspx

 

 

 

*double의 정의*

 

 

double 정의 포스팅 링크

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/double

http://www.csharpstudy.com/CSharp/CSharp-datatype.aspx

 

 

*char의 정의*

 

char 정의 포스팅 링크

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/char

http://www.csharpstudy.com/CSharp/CSharp-datatype.aspx

 

 

 

*string의 정의*

-추가-

(1) 문자 등을 1차원적으로 나열한 것을 가리킨다.
(2) 하나의 계속되는 비트(bit), 문자(character), 레코드(record) 등을 나타낸다. 이들을 비트 스트링(bit string), 문자열(character string), 레코드 스트링(record string)이라고도 한다.

 

 

 

string 정의 포스팅 링크

https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/strings/

http://www.csharpstudy.com/CSharp/CSharp-datatype.aspx

https://terms.naver.com/entry.nhn?docId=838364&cid=42344&categoryId=42344

 

 

 

 

 

 

 

 

 

 

 

------------------------------------------------------------------------예제문제-------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {

            /*문제
             * 다음의 숫자와 문자들을 변수와 지정한 데이터 타입 형식을 사용하여 화면에 출력되도록 표현하시오.
             * a) 12월 30일 (int 사용)
             * b) pi=3.14 (float 사용)
             * c) 크리티컬 데미지 200000000 (long 사용)
             * d) 나의 레벨 230 (double 사용)
             *
             * e)   오 (char 사용)
             *      픈 (char 사용)
             *      월 (char 사용)
             *      드 (char 사용)
             *   
             * f) 데이터베이스 (string 사용)
             *
             */


            int problem_a1 = 12;
            int problem_a2 = 30;

            float problema_b = 3.14F;


            long problema_c = 200000000;

            double problema_d = 230;
       
            char[] problema_e = new char[4];
            problema_e[0] = '오';
            problema_e[1] = '픈';
            problema_e[2] = '월';
            problema_e[3] = '드';

            string problema_f = "데이터베이스";


            Console.WriteLine(+problem_a1 + "월" + problem_a2 + "일");
            Console.WriteLine("pi="  +problema_b+ "");
            Console.WriteLine("크리티컬 데미지" + problema_c + "");
            Console.WriteLine("나의 레벨" + problema_d + "");

            foreach (char c in problema_e)
            {
            Console.WriteLine(c+" ");
            }

            Console.WriteLine(""+problema_f+"");

 

 


        }
    }
}

728x90
반응형

'개임개발 > 과제' 카테고리의 다른 글

19.03.25 값 복사와 참조 복사  (0) 2019.03.25
19.03.22 오우거 잡기  (0) 2019.03.24
19.03.22 Stack 과 Heap  (0) 2019.03.24
19.03.22 문자열 표현식 예제  (0) 2019.03.22
19.03.22 과제 for문  (0) 2019.03.22
:

19.03.22 과제 for문

개임개발/과제 2019. 3. 22. 20:26
728x90
반응형
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            
            
            for(int i = 4; i <= 5; i++)
            {
                Console.WriteLine(i);
            }
            
            /* i의 값은 4이다.
           * 4는 5보다 작거나 같다
           * 비교연산자 결과 값이 true 이므로 본문으로 이동한다.
           * i의 값은 4이다
           * 4를 출력한다.
           * 반복으로 이동한다.
           * i의 값은 4이다
           * 증가연산자에 의해서 i의 값이 5가 된다.
           * i의 값 5는 5와 작거나 같다.
           * 비교연산자 결과 값이 true 이므로 본문으로 이동한다.
           * i의 값은 5이다.
           * 5를 출력한다.
           * 반복으로 이동한다.
           * 증가연산자에 의해서 i의 값이 6이 된다.
           * i의 값은 6이다.
           * i의 값 6은 5와 작거나 같다.
           * 비교연산자 결과 값이 false 이므로 반복문이 중단된다.
           * 출력된 결과값 4,5                                  */
 
 
        }
    }
}
 
cs

 

 

 

 

 

*for문 이란?*

for 문은 지정된 부울 식이 true로 계산되는 동안 문 또는 문 블록을 실행합니다.for 문 블록 내 원하는 지점에서 break 문을 사용하여 루프를 중단하거나 continue 문을 사용하여 루프의 다음 반복을 한 단계 실행할 수 있습니다 goto, return 또는 throw 문으로 for 루프를 종료할 수도 있습니다.

 

 

 

for문 포스팅 링크

 https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/for 

 https://ko.wikipedia.org/wiki/For_%EB%A3%A8%ED%94%84

 https://blog.naver.com/sasayakki/221366956434

 

 

 

 

for문 유튜브 강의 

https://youtu.be/zr57ueefhHA

728x90
반응형

'개임개발 > 과제' 카테고리의 다른 글

19.03.25 값 복사와 참조 복사  (0) 2019.03.25
19.03.22 오우거 잡기  (0) 2019.03.24
19.03.22 Stack 과 Heap  (0) 2019.03.24
19.03.22 문자열 표현식 예제  (0) 2019.03.22
19.03.22 과제 데이터 타입 예제  (0) 2019.03.22
: