과제 문제점
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 |