프로그래밍 개론

 

-컴퓨터구조: CPU(두뇌,연산자이), 메모리/RAM(단기기억), 디스크(장기기억), 입출력(모니터,키보드..)
-컴퓨터기초: HW/SW
          sw: 운영체제(windows os), app/프로그램(브라우저, 카카오톡..)
          0과 1만 구분할수있다(1:전기가흐를때, 0:전기흐르지않을때)
-프로그래밍언어: 사람이 컴퓨터에게 명령을 내리는 방법
             저급언어(기계어,어셈블리어): 사람이 이해하기 어려운,기계가 이해하기 쉬운 언어
             고급언어(python,java,c): 사람이 이해하기 쉬운 표현
             고급언어->변환(컴파일러,인터프리터)->기계어

-프로그램 동작원리
 소스코드->(변환)기계어->실행
 디스크->메모리 적재->CPU에서 명령어 해석/실행->출력장치(화면) 표시

 *메모리 크기확인: 32G
  1byte  = 8 bit (2^8 = 256가지 수 표현), 00000000(2진수) = 0, 11111111(2진수) = 255
  1KB = 1024 byte (2^10)
  1MB = 1024 KB
  1GB = 1024 MB
  32G = 32 * 1024MB (2^35 Byte)

 *R에서는 정수형 표현 4Byte 사용 
 *기타: 11111111 = 255인 이유 설명
  b₇ b₆ b₅ b₄ b₃ b₂ b₁ b₀   (각각 0 또는 1)
  = b₇×2⁷ + b₆×2⁶ + b₅×2⁵ + ... + b₁×2¹ + b₀×2⁰


프로그래밍 기초


- 변수                         
(개념) 값이 저장되는 저장공간
(문법) 변수명 할당연산자 값
      msg <- "hello, world!"  (msg변수에 ""문자열 할당한다)
                                          (할당연산자는 오른쪽에서 왼쪽으로 할당한다)
      msg = "hello, world!"   (가능한데, <-더 권장, =는 함수의 argument값 전달시 사용?)
      val <- 10

      msg 공간을 가르킨다 [hello, world]
      *변수를 사용하는 이유: 값을 저장해두고 재사용하기 위한 목적

(부연설명-생략) 책장에 책을 두는데, 라벨을 붙이는 개념이랑 유사
             skip(R에서는 모든 변수가 객체이다(객체를 바인딩하는게 변수를 처리하는 방식))

- 변수명 명명(작명) 규칙
1) 영문자/숫자/마침표(.)/밑줄(_) 사용 가능
2) 첫 글자는 숫자가 될 수 없음
3) 이름에 띄어쓰기 사용 불가
4) 대소문자 구분, 변수명은 소문자로
5) 예약어는 사용불가(if, else, for, TRUE, FALSE, NA 등)

- 변수명 표기법
: snake표기법 권장
: (예전 base R) total.sales (dot.separated 많이 사용했었음) 

- 변수 네이밍(best-practice)
  변수는 명사형으로 기술
    ex) my_name <- '홍길동'
        #(함수 동사형) 함수: 특정 기능을 사전에 구현해둔 것(모듈)
        write_file(), print_result()

  (소문자) 지역변수 
    ex) val = 1

  (대문자) 전역변수, 상수(불변의 고정값)
    ex) MAX_VAL = 100
        FILE_NAME = 'data.excel'

  (logical 변수)is_를 앞에 붙인다.
    ex) is_error = FALSE



- 자료형


 : 데이터의 유형, 데이터 저장하는 방식

자료형               의미            예시
==============================================
수치형(numeric)     정수,실수        5, 3.14     
문자형(chracter)    문자,문자열      "C", "hello" ('', "" 모두 가능)
논리형(logical)     참,거짓         TRUE, FALSE  (대문자로 사용)

*numeric
 (정수형) integer, (실수형) double
*문자,문자열
 char:길이1, string:길이 0이상
 R은 모두 character 형으로 간주
*TRUE = T, FALSE = F 
 약어로 T,F 라는 논리변수에 TRUE, FALSE 저장되어있다.
 변수이기 때문에 변경가능하지만, 변경하지 않는것이 좋다.
*R은 동적 형변환 지원하는 언어(동적 타입 언어), 실행시에 자료형이 결정
 ex) val <- 1
     val <- "hello"
 ex) 정적 타입 언어 예
 int val = 5;

기타(skip)
(complex) 복소수
(raw) 이진데이터

-그외의 값
 NULL : 값이 비어있음
   ex) val <- NULL
 NA  : Not a available, 값이 없거나 알수없음 (결측값)
 NaN : Not a number(수학적 오류)
   ex) 0/0 
 inf, -inf : 무한대(infinite)
   ex) 1/0

-자료형 확인(내장함수)


# 함수: (중등과정) y = f(x), 입력 x에 대응하는 출력 y가 존재할때 함수라고한다.
# 프로그래밍 함수의 개념
# (정의) 사전에 특정 작업을 수행하는 코드를 미리 구현해둔 모듈(기능)
# (동작) x를 입력받아 기능을 수행하고 y를 리턴한다.
# ex) 출력값 = print(입력값)

(무슨 자료형인지 체크) typeof, mode, class
종류           차이점                  출력결과
======================================================================
typeof      내부저장방식         integer/double, character, logical
mode        전통적분류           numeric, character, logical
class       객체의 자료형(종류)   numeric, character, logical + 객체의 자료형
                              (skip) 예시 typeof(matrix(1:4, 2, 2))
                                         typeof(data.frame(x=1:3))

(특정 자료형인지 체크) is.numeric(), is.character(), is.logical(), is.integer(), is.double()
  결과값이 TRUE, FALSE로 나온다

-자료형 변환: as.numeric(), as.logical(), as.character()



(실습) day02.R 스크립트 파일 생성

# 자료형 실습
# 실행 단축키: ctrl + 엔터

# 1.기본 자료형
# 문자
print("hello")
# 오류
print(hello)
# 오류
#print("abc)

# 수치
print(3.14)
print(5)
print(10L)

# 논리
print(TRUE)
print(FALSE)
print(true)

# 2.변수 생성 및 초기화
name = 'juk' # 오른쪽의 값이 왼쪽의 변수에 저장된다(초기화된다)
print(name)
val = 3.14
print(val)
is_error = FALSE
print(is_error)

# cat 함수(기능): 인자값 여러개를 받아서 모두 출력해준다.
cat("name:", name)
cat("name:", name, ", val:", val)

#값 복사(call by value/call by reference->함수 시간에)
#swap(값 교환) 예제
num1 <- 1
num2 <- 2

# todo. num1=num2, num2=num1, 그런데 num1에 값을 교체하는순간 num1의 값은 잃어버림
tmp <- num1   # num1의 값이 tmp에 복사됨
num1 <- num2  
num2 <- tmp 
cat(num1, num2, tmp)

# 3.자료형 확인(내장 함수)
# (무슨 자료형인지 체크) typeof, mode, class

typeof(name)
typeof(val)
typeof(is_error)

mode(name)
mode(val)
mode(is_error)

class(name)
class(val)
class(is_error)

# (특정 자료형인지 체크) is.numeric(), is.character(), is.logical(), is.integer(), is.double() 
is.numeric(age)
is.numeric(name)
is.character(name)
is_true = is.logical(is_error)
print(is_true)

# 4.자료형 변환(명시적 형변환)
as.numeric('1') 
as.numeric('abc') 
as.numeric(TRUE) 
as.numeric(FALSE) 

val = as.character(100)
print(val)
as.character(TRUE)

as.logical(1.5)
as.logical(0) 
as.logical('a')
as.logical('true')



'프로그래밍 > R' 카테고리의 다른 글

R언어, 제어문  (0) 2025.09.20
R 매트릭스 (matrix, 행렬)  (0) 2025.09.14
R언어 벡터  (0) 2025.09.09
R 연산자  (1) 2025.09.08
R 프로그래밍 개론  (0) 2025.09.06

+ Recent posts