Tool : Visual Studio
콘솔앱 만들기
새로운 언어를 익혀볼까 공부시작
실행용 프로젝트 생성
using System;//System네임스페이스사용.
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1//네임스페이스선언.
//공간 선언을 통해 중복되는 이름을 피할 수 있다. EX)ConsoleApp1.Apple클래스 ConsoleApp2.Apple클래스
{
//class는 하나의 객체를 표현한다.
//Ex)자동차(class car)가있으면 자동차의 구성요소(맴버변수)와 행동적인요소(method)를 가질 수 있다.
class Car
{
private string handle = "AMODEL";
public void carRun()
{
Console.WriteLine("자동차를 움직인다.");
}
}
//class Program은 C#에서 프로그램의 가장 첫번째 실행되는 Main메소드를 포함하는 용도로 주로 사용한다.
class Program
{
//프로그램의 주시작점.
static void Main(string[] args)
{
//System네임스페이스의 Console클래스의 WriteLine메소드 호출
System.Console.WriteLine("Syste을 이용한 호출");
Console.WriteLine("Hello World!");
}
}
}
C# 의 데이터 타입은 크게 4가지
정수
sbyte 부호 있는 8비트 정수
byte 부호 없는 8비트 정수
short 부호 있는 16비트 정수
ushort 부호 없는 16비트 정수
int 부호 있는 32비트 정수
uint 부호 없는 32비트 정수
long 부호 있는 64비트 정수
ulong 부호 없는 64비트 정수
실수 정확한 수의 표현 x 근사치를 표현한다.
float 32바이트
double 64바이트
decimal 128바이트
문자(열)
char 유니코드 16비트(2바이트)
string 유니코드 16비트 조합(1,073,741,823 문자의 나열)
불린
bool 8비트(1바이트) 참거짓
"데이터타입" "변수명";
int a;
int a = 10;
string b = "문자열";
static void main(string[] args){
// 형변환 하기 string - >int
string a = "532";
int b = 0;
b =Int32.Parse(a);
//기본 int 는 Int32사용
//Int64 저장할 수 있는 숫자범위의 차이
Console.WriteLine("문자를 숫자로 출력" + b);
// 기대 값 523
//현재 b는 숫자 523
// 형변환 하기 int - > string
string c = "";
c = b.ToString();
Console.WriteLine("숫자를 문자로 출력" + c)
// 기대값 "523"
}
+a 단항 플러스 : a 값을 그대로 변화 없음
-a 단항마이너스 : a 부호를 반대로
++a 전위증가 : 출력 또는 사용 전에 a값을 +1 하고 사용
a++ 후위증가 : 출력 또는 사용 후 a값을 +1한다
--a 전위감소 : 출력 또는 사용 전 a값을 -1 하고 사용
a-- 후위감소 : 출력 또는 사용 후 a값을 -1한다.
!a 논리부정 : a가 참인 경우 거짓으로 거짓인 경우 참으로 논리를 반전한다.
a=b-c : 대입
a 에 b-c 값을 넣는다.
a-=b : 빼기 대입 a=a-b
a+=b : 더하기 대입 a=a+b
a=b : 곱하기 대입 a=ab
조건식 ? A : B
static void Main(string[] args) {
int num1 = 1;
int num2 = 4;
Console.WriteLine(num1++); //1
Console.WriteLine(num1); //2
Console.WriteLine(++num1);//3
Console.WriteLine(num1);//3
int num3 = num1 > num2 ? 3:5;
//3 4 5
Console.WriteLine("num3은?"+num3);
//num3은? 5
}
사칙연산
+-*/%
+=
-=
*=
/=
%=
|=
^=
<<= >>=
ex)
int num1 =1;
num1+=3;
// num1 = num1+3 과 같은 의미 4
num1-=2;
//num1=num1-2 오 ㅏ같은 의미 2
==, !=, >, <, >=, <=
int a = 5;
a = (a>10) ? 1 : 0 ;
//조건식 참:거짓;
a =0;
// 보통 숫자 1은 true 0은 false -1은 오류상태로 많이들 사용한다고 한다.
! not : 논리부정 - 참은 거짓으로 거짓은 참으로 출력
&& and : 논리곱 - 둘다참이어야 참 출력
|| or : 논리합 - 둘중에 하나라도 참이면 참 출력
& 두 비트 모두 1인 경우메나 1
| 두 비트중 하나면 1이여도 1
^ 두 비트중 하나만 1이고 다른 하나가 0일 때 계산결과1, 1^1 또는 0^0은 계산결과 0
*비트연산자는 그림에 효과를 주거나 전자 또는 전기 시스템의 회로구성이 논리적 AND 게이트 등 하드웨어적인 요소가 논리연산으로 계산하기 때문에 시스템 프로그램 개발등 특수 환경에 주로 사용한다고 한다..
<< 왼쪽 시프트 : 비트를 왼쪽으로 이동시키고 오른쪽 빈칸은 0으로 채운다
">>" 오른쪽 시프트 : 비트를 오른쪽으로 이동시키고 왼쪽 빈칸은 부호비트로 채운다
어려우니까
예시... 그래도 어려워요,,
왼쪽 시프트
int a = 3; // 3 = 0000 0011 (2진수)
int b = a << 1; // 왼쪽으로 1비트 이동 → 0000 0110
Console.WriteLine(b); // 출력: 6
//간단 설명 왼쪽으로 한칸이동 = 2배
//왼쪽으로 n칸 이동 = 2ⁿ 배
오른쪽 시프트
int a = 8; // 8 = 0000 1000
int b = a >> 1; // 오른쪽으로 1비트 이동 → 0000 0100
Console.WriteLine(b); // 출력: 4
// 오른쪽으로 한칸 이동하면 = 1/2배
// 오른쪽으로 n칸 이동 = 2ⁿ으로 나눈 것과 같음
동일한 타입의 값이 많을 때 많은 변수를 선언하는 것 대신 많은 변수를 하나의 변수에 저장하고 사용 가능하게 해준다.
string[] cars = new string[10];
string[] food = {"사과", "바나나", "파인애플", "수박"};
int[] myNum = {10, 20, 30, 40, 50};
// 배열 접근방법
food[0]; // "사과"
food[1]; // "바나나"
food[3]; // "수박"
myNum[0]; // 10
myNum[2]; // 30
myNum[3]; // 40
// 배열요소 변경하기
food[0] = "귤";
//출력하면 ?
food[0]; // "귤"
// 배열의 길이 얻기
food.Lenght; //4
// 2차원 배열 선언과 초기화
// 2차원 배열은 열의 크기가 동인해야한다.
// 오류 예제
// int[,] myNums = {{1,2,3,4},{5,6,7}}; 0번째는 4, 1번째는 3 >> 이렇게 되면 오류
// int[,] myNums = {{1,2,3,4},{5,6,7,8}}; 0번쨰와 1번째를 4자리로 맞춰줘야함
int[,] myNums = {{1,2,3,4},{5,6,7,8}};
int var = myNums[0,2];
// 배열을 두고 보자면
// 0열 1열 2열 3열
// 0행 1 2 3* 4
// 1행 5 6 7 8
// 0행의 2열 = 3 이라는 뜻 !!!!!
// 대부분 1차원 배열 사용 2차원은 가끔 3차원은 종종 4차원은 거의 사용을 안한다고 한다..
// 나같아도 안해;;
//추가할 1차원배열크기 필수로입력.
int[][] myNums2 = new int[4][]; //4행짜리 가변배열 생성
myNums2[0] = new int[2] { 1, 2};
myNums2[1] = new int[3] { 3, 4, 5 };
myNums2[2] = new int[4] { 6, 7, 8, 9 };
myNums2[3] = new int[2];
//int var2 = myNums2[0,1];
int var2 = myNums2[0][1];
Console.WriteLine("var2는?" + var2);
//시각화 하자면
//myNums2 ─┬──> [1, 2]
// ├──> [3, 4, 5]
// ├──> [6, 7, 8, 9]
// └──> [0, 0]
myNums2[0][1];
// 이건 0행의 1열 값을 의미
=2'
연산자를 활용하여 비교를 통해 참 또는 거짓의 값을 얻을 수 있다.
참 거짓을 통해 코드를 선택적으로 실행할 수 있음
if문(if, else, else if), switch 문
if 문은 거의 자바와 동일
static void Main(string[] args) {
// 기본구조
switch (변수) // 비교할 값
{
case 값1:
// 실행 코드1
break; // 일치하면 브레이크로 스위치 조건문에서 빠져나온다.
case 값2:
// 실행 코드2
break;
default:
// 어떤 case에도 해당하지 않을 때 실행
break;
}
// 예시
int day = 3;
switch (day)
{
case 1:
Console.WriteLine("월요일");
break;
case 2:
Console.WriteLine("화요일");
break;
case 3:
Console.WriteLine("수요일");
break; //>> 여기서 나오겠지
case 4:
Console.WriteLine("목요일");
break;
default:
Console.WriteLine("주말");
break;
}
}
while(조건) {
실행식
}
예제
static void Main(string[]args){
int i =0;
while(i<6) {
Console.WriteLine(i);
i++;
// 기대값
//0
//1
//2
//3
//4
//5
}
}
do{} // 이건 무조건 실행
while(조건) {
}// 체크 후 실행
for(int i=0; i<6; i++){
Console.WriteLine(i);
}
for(for문 코드라인 진입과 동시에 한번만 실행될 코드;반복할 조건;중괄호안의 코드가 실행되고 매번 실행될 코드){
반복할 코드
}
static void Main(string[] args){
string[] strs = {"바나나", "사과", "파인애플", "망고"};
foreach(string i in strs) {
//문자열 i 안에 strs 를 하나씩 담겠다
Console.WriteLine(i); // 하나씩 출력하겠다
// 바나나
// 사과
// 파인애플
// 망고
}
}
try catch finally 등 자바와 유사
다음 포스팅에 함수 작성하기