C#/C#언어

2일차_수업내용

minquu 2021. 3. 9. 22:20
반응형

과제 문제점
1. enum = 영어로만
2. 변수 선언시 = 일괄적으로 카멜케이스로 하기
3. 실습을 최대한 많이 해보는 것이 중요하다.
   연습을 해야하는 데 -> 패턴을 살펴봐야한다.

 

-------

 

전 수업 복습

 

형식의 종류

 

값형식                                  참조형식
스택(LIFO구조_차례대로 쌓는)    힙 (스택에 메모리 주소값이 담긴다.) / 메모리주소가 없을 시 가버지 콜렉터로 된다.

 

값형식의 종류
모든 숫자 형식 (int, float 등등), bool, char
값 형식은 메모리 스택에 쌓인다.

 

외우기 - int_모든 정수 숫자 형식은 값 형식이다. (암기)
float _ 부동 소수점 형식 (값 형식이다.)
bool _ 논리 형식 (기본값(false)이 담기면 값이 존재한다.)
char _ 문자 형식 _ 단일 문자를 나타낸다. (Hello-> H  E  L  L O)
안에를 뜯어내면 하나하나 숫자로 의미한다. (아스키 표)
리터럴 _ 고정된 값을 대표하는 용어 _ 3 / 3.14f / true

참조형식의 종류
외우기 _ 힙 메모리에 넣어지고 스택에 주소가 찍힌다.
object _ 모든 .net 클래스 형식 계층 구조의 루트


문자열 형식 _ 힙에 저장된다.
string _ 개체의 순차적인 컬렉션 문자 + 문자 + 문자 => 문자열
 
.net -> 가상머신 (CLR)을 사용하여 만든다. 

Const _ 상수 // 컴파일 시간에 변경할 수 없는 값.

enum _ 열거형식 _ 상수의 집합이다. 
선언(클래스안 또는 위) -> 변수 선언 -> 변수값할당 -> 변수값 출력
enum - 인트 형식으로 변환 사용가능 (enum 변수{0, 1, 2} [상수에 순서가 인트로 표현되는 것])

var _ 암시적 형식, 지역 변수(main_ {}가 끝나면 메모리가 해제)는 형식을 직접 선언한 것 처럼 강력하지만, 컴파일러가 형식을 결정
                
char _ 문자 형식, /// char -> int 전환방법  (서치를 하면서 찾아가는 것)
         int x = Convert.ToInt32('j');
         Console.WriteLine(x);

팁 _ 어떤것을 찾을 때는 -> 구글 -> 코드 검색 -> 검증(코드를 넣을 때는 그대로 넣기)하는 단계 실시 (main에 넣어보고)
실행보고 - 맞으면 -> 사용하기

 

-----------

 

본 수업 

 

산술 연산자 : 

숫자 피연산자를 사용하여 산술 연산을 실행 
이진 * 곱하기 / /나누기(int로 받으면 소수점은 짤린다.) / % 나머지(나누고 난 나머지 값) / + 더하기 - 빼기
단항 ++ 증분 -- 감소 + 더하기 - 빼기
() 치면 우선순위 변경 가능하다.

 

using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 33;
            int b = 8;
            Console.WriteLine(a + b);
            Console.WriteLine(a - b);
            Console.WriteLine(a * b);
            Console.WriteLine(a / b);
            Console.WriteLine(a % b);
        }
    }
}

★복합 할당 식 (줄여서 쓰는 것)

 

using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 5;
            a += 9;
            Console.WriteLine(a);  // output: 14
            a -= 4;
            Console.WriteLine(a);  // output: 10
            a *= 2;
            Console.WriteLine(a);  // output: 20
            a /= 4;
            Console.WriteLine(a);  // output: 5
            a %= 3;
            Console.WriteLine(a);  // output: 2
        }
    }
}

 

 

증가/증감연산자 (전위,후위)

++a : 먼저 계산을 하고 a 연산 
a++ : a 연산하고 ++를 한다.
--a : 위 와 비슷
a-- : 위 와 비슷

 

using System;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            int level = 1;
            string name = "홍길동";

            Console.WriteLine("{0}님이 레벨업을 했습니다. +{1}", name, level++);
            Console.WriteLine("{0}님의 레벨이 {1}가 되어습니다.", name, level);

            int reinforce = 3;
            string weaponName = "장검";

            Console.WriteLine("{0}+{1}", weaponName, reinforce);
            Console.WriteLine("강화시도");
            Console.WriteLine("강화실패");
            Console.WriteLine("{0}+{1}", weaponName, --reinforce);
        }
    }
}

 

비교 연산자
>, <, ==(같냐?), !=(같지 않냐?), >=, <=  

 

using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 50, b = 60;
            Console.WriteLine(a < b); // 50 < 60, True
            Console.WriteLine(a > b); // 50 > 60, False
            Console.WriteLine(a == b); // 50 == 60, False
            Console.WriteLine(a != b); // 50 != 60, True
            Console.WriteLine(a >= b); // 50 >= 60, False
            Console.WriteLine(a <= b); // 50 <= 60, True
        }
    }
}

 

 

부울 논리 연산자
이진 &&(둘 다 참이면 참),  ||  (둘 중 하나라도 참이면 참),  !; (값을 반대로 true -> false로)

 

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

namespace Study00
{
    class Program
    {
        static void Main(string[] args)
        {
            string heroName = "홍길동";
            float sight = 5.4f;
            float attackRange = 3.3f;
            float heroX = 0;
            float heroY = 0;

            string monsterName = "고블린";
            float monsterX = 4f;
            float monsterY = 3f;

            double a = Math.Pow(monsterX - heroX, 2);
            double b = Math.Pow(monsterY - heroY, 2);
            double distance = Math.Sqrt(a + b);

            //AND 논리 연산자 && 
            //모두 True 면 결과 값은 True 
            //하나라도 False면 False 

            bool isAttackAvailable = (distance <= sight) && (distance <= attackRange);
            //홍길동이 고블린을 공격할수 있는 상태인가? : False
            Console.WriteLine("{0}이 {1}을 공격할수 있는 상태인가? : {2}", 
                heroName, monsterName, isAttackAvailable);

        }
    }
}

 

비트 및 시프트 연산자 :   &, |, ~ 등등
>> ,<<    값 / 값 만큼 밀겠다.

 

--> 이진법 예시

 

 

삼항 연산자
conditon ? A : B /// 컨디션의 값이 true 일 경우 A false면 B
결과 값에 따라서 형식이 정해진다. 문자열 -> string / 숫자열 -> int

 

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

namespace Study00
{
    class Program
    {
        static void Main(string[] args)
        {
            //삼항 연산자 
            //string result = 1 > 3 ? "사실" : "거짓";
            //int result = 1 > 3 ? 100 : 200 ;

        }
    }
}

 

 

 

-----------

 

 

 

오전 수업 정리

 

연산자

+, - , *, /, %

> < >= <= == !=

& | ^ ~ << >>

&& || !

식 ? A : B 삼항연산자

 

--------

 

문(Statement)
문은 프로그램 명령이며 순서대로 실행됩니다.
문 블록은 {} 괄호로 묶여 있으면 / 중첩 블록을 포함 할 수있다.

 

 

선택 문 _ if-else, switch  
반복 문 _ for, while, do-while, foreach 문
점프 문 _ Break, continue, return

 

if-else문
if(A)
{
}
---> if 값이 트루면 {}를 실행한다.

if (A)
{
  dddd
}
else
{
 dddddd
}

-----> A 가 트루면 ddddd 아니면 ddddd

if (A)
{
}
else if (B)
{
}
else (C)
{
}

A 가 맞으면 if에서 / A가 아니면 else if / A도 아니고 B도 아니면 else

 

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

namespace Study00
{
    class Program
    {
        static void Main(string[] args)
        {
            int heroHp = 10;
            string heroName = "홍길동";
            heroHp -= 100;
            Console.WriteLine("name: {0}, hp: {1}", heroName, heroHp);

            if (heroHp <= 0) {
                Console.WriteLine("{0}님이 사망했습니다.", heroName);
                heroHp = 0;
                Console.WriteLine("name: {0}, hp: {1}", heroName, heroHp);
            }
        }
    }
}

 

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

namespace Study00
{
    class Program
    {
        static void Main(string[] args)
        {
            int reinforcePercent = 13;
            Random rand = new Random();
            int num = rand.Next(0, 101);
            if (num > reinforcePercent)
            {
                //강화 성공 
            }
            else 
            { 
                //강화 실패 
            }
        }
    }
}

 

 

nested if-else 문
중첩된 if -else 문 또는 조건문이 중첩될 수 있다.

 

 

switch문
후보 목록에서 실행할 섹션 하나를 선택하는 선택문
단일 식을 3개 이상의 조건에대해 테스트 하는 경우 스위치문이 if-else 구문 대신 사용되는 경우도 많다.

 

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

namespace Study00
{
    class Program
    {
        static void Main(string[] args)
        {
            string fruitsName = "샤인머스켓";

            switch (fruitsName) {
                case "포도":
                    Console.WriteLine("포도입니다.");
                    break;
                case "바나나":
                    Console.WriteLine("바나나입니다.");
                    break;
                case "수박":
                    Console.WriteLine("수박입니다.");
                    break;
                default:
                    Console.WriteLine("{0}입니다.", fruitsName);
                    break;
            }
        }
    }
}

 

 

반복문 
for 문 
★for문은 지정딘 부울 식이 true로 계산되는 동안 (언제까지 반복 할래?)
for (initializer; condition; iterator)  
     body
for 문에서 initializer 는 딱 한번만 수행
iterator은 수행될때마다 다시 돈다.

 

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

namespace Study00
{
    class Program
    {
        static void Main(string[] args)
        {
            int count = 0;
            for (int i = 0; i < 5; i++) {
                Console.WriteLine("줄넘기를 {0}회 했습니다.", i+1);
                count++;
            }
            //줄넘기를 1회 했습니다. 
            //줄넘기를 2회 했습니다. 
            //줄넘기를 3회 했습니다. 
            //줄넘기를 4회 했습니다. 
            //줄넘기를 5회 했습니다. 
            //**********************
            //총 줄넘기한 횟수 : 5회
        }
    }
}

 

-----

 

정리

 

정리

선택문 (두개는 연습 꼭하기)
-if-else문
-switch문

nested if-else 문 (중첩된 if문) (연습 많이하기)
- 1회 중접 된 것은 && 논리로 연산 가능 /// if 문 && 둘 다 변환 할 줄알아야함

반복문 (두 개 꼭 연습하기)
for문
while 문
do-while
foreach

점프문 (위 두 개 필수)
break문
continue문
return 

반응형

'C# > C#언어' 카테고리의 다른 글

4일차_수업내용  (0) 2021.03.11
4일차_클래스 예제연습  (0) 2021.03.11
3일차 _ 메서드 연습 예제  (0) 2021.03.10
3일차_수업_매서드(ReadLine)  (0) 2021.03.10
다양한 상황 만들기 연습  (0) 2021.03.10