[커널아카데미] 백엔드 12기 1주차 회고

David·2025년 3월 30일
0

회고

목록 보기
1/2

25.03.23 커널아카데미 백엔드 개발자 과정이 시작되었다. 벌써 금요일인거 보니 이번주 열심히 공부한 것 같다. 다음주부터 아침 9시부터 저녁 10시까지 공부하려고 하는데, 이 계획이 앞으로의 6개월 동안 지속될 수 있을지는 모르겠지만, 일단 가보자고!

1주차 WIL(Weekly I learned)

1. 한 줄 요약

1) 프로그램

💡Pro(미리) + gram(쓴다)으로 컴퓨터에게 미리 행동 명령을 내리는 것을 말한다.

2) 객체지향(OOP)

💡객체지향은 규칙을 추구하는 프로그래밍이며, 객제지향에서의 핵심요소는 (1) 그룹화, (2) 관계이다.

3) 변수

💡변수는 (1) 저장공간 생성 (2) 쓰기 (3) 읽기 이 3가지를 수행한다.

4) 인코딩

💡 (1) 코드를 바꾸다. (2) 문자표

2. 수업 내용 정리

1) 변수의 명명규칙

(1) 대소문자가 구분되며 길이에 제한이 없다.
(2) 예약어(keyword, reserved word)를 사용해서는 안 된다.
(3) 숫자로 시작해서는 안 된다.
(4) 특수문자는 '_' '$' 만 허용한다.

2) 변수의 타입

저장 공간의 Type은 값에 따라 변경된다. 값은 문자와 숫자로 나뉘며, 숫자는 정수와 실수로 나뉜다. 💡문자는 정수로 치환되어 저장되기 때문에 실질적으로 값의 저장방식은 정수와 실수이다.

자료형은 기본형과 참조형으로 나뉜다

  • 기본형: 1개의 실제값(data) 저장공간 // 요소, 파일형태, 실제값(data)
  • 참조형: 0~n개의 값(주소) 저장공간 // 집합, 폴더형태, 저장주소(memory address)
    cf) 참조형 변수 간 연산을 담당하는 것은 기본형 변수이다. (참조형은 연산 X)

(1) 기본형 타입

자료형저장 가능 한 값의 범위크기 (byte)정밀도
booleanfalse, true1
char'\u0000'~'\uffff' (0~65535)2
byte-128 ~ 1271
short-32,768 ~ 32,7672
int-20억 ~ 20억4
long-900경 ~ 900경8
float± 1.4E-45 ~ 3.4E3847 자리
double± 4.9E-324 ~ 1.8E308815자리

cf) 기본형 변수인 double은 float보다 정밀도가 2배라서 double이라는 이름이 붙여졌다.
int 형 보다 작은 타입(byte, char, short)은 int형으로 변환한 후에 연산이 진행된다.

(2) 상수와 변수

  • 상수: 값을 한번 대입하면 변경 못함. - 상수를 바꾸고 싶으면 새로 만들어야 한다. (상수는 일회용)
  • 변수: x에 값을 계속 대입 가능, 하나의 저장공간을 재사용할 수 있음.

cf) 요즘은 변수보다 상수를 많이 사용하려고 한다.

  • 하드웨어의 성능이 비약적으로 발전되어 과거에는 선형적인 과정으로 프로세스를 처리했다면, 현재는 cpu가 멀티코어로 변경되어 동시에 프로세스를 처리가능하여 변수를 사용할 필요가 없게 되었다.
  • 상수를 계속 쓰게 되면 상수를 저장할 공간이 필요해졌는데, 과거에 비해 현재는 RAM 메모리가 1G => 64G로 6만배 이상 증가하게 되어 괜찮아졌다.

(3) 오차가 발생하는 이유? (overflow, underflow)

1) 원래 오차 - 이미 값 자체가 가지고 있음 ex) 1/3, 루트 2
2) 10진수 실수를 2진수 실수로 나눌때 오차 발생
3) 저장공간의 한계: ex) 1.2345678910인데 저장공간이 8자리면 뒤의 값은 날아가 오차 발생
cf) 언더플로우는 실수 0근처 부근에서 발생한다.

(4) 형변환(Casting)

ex) 1 + 3.5f = float + float 형태로 바꾸어 계산해야 한다.
형변환의 종류 - (1) 큰정수와 작은정수끼리 변환 (2) 큰 실수와 작은 실수끼리 변환 (3) 정수와 실수 변환

3) 연산자

(1) 연산자

연산자란? 계산을 수행하고 결과를 반환하는 기호이다.

=> 모든 연산자는 반드시 결과를 반환해야 한다. -> 이말은 결과를 주지 않으면 연산자가 아니다.
ex) ( ) : 괄호는 연산자가 아니다. (값을 반환하지 않기 때문에 / 일부 언어에서는 괄호를 연산자로 포함시키려고 노력함)

a. 계산 연산자(산술 연산자) + - * / %
b. 비교 연산자 >,< : 어떻게 값이 큰지 작은지 판단할 수 있냐? -> 비교하는 것 자체가 뺄셈이다.
c. 논리 연산자 && || ! (0은 거짓, 1은 참)

xyorand
0(F)0(F)0(F)0(F)
0(F)1(T)1(T)0(F)
1(T)0(F)1(T)0(F)
1(T)1(T)1(T)1(T)

d. 대입 연산자 or 대입문 '=' (수학에서는 항등함수)

    ex) x = 5; 입력값: 5 결과값: 5  
    
    => ex1에서의 대입연산자의 역할
		(1) 5W(쓰기) 
		(2) 5를 반환 

e. 증감 연산자

  • 증가 연산자(++)
  • 감소 연산자(- -)
	ex) i++ // (1) 쓰기 (2) 덧셈 
    	i+1 // (1) 덧셈

  		혼자 쓰였을 때는 i++ = ++i 

      <전위형>  		   <후위형>
       j = ++i;		   j = i++;
    => ++i;   		=> j = i;
       j = i;    	   i++;           

f. 비트 연산자

2진수 연산을 말하며, 10진수 연산보다 처리속도가 빠르다.

(2) <연산자에서 중요한 3가지>

컴퓨터는 좌,우항의 타입이 같아야 계산 가능하다.
a. 우선순위 b. 결합규칙 c. 산술변환(중요)

    ex) int i = 10;
        float f = 20.0f;
        float result = f + (float)i; // 형변환을 자동으로 타입 일치

1) 두 피연산자의 타입을 같게 일치 시킨다. (보다 큰 타입으로 일치)

		long  + int  => long + long => long
		float + int => float + float => float

2) 피연산자의 타입이 int보다 작은 타입이면 int로 변환된다.

    	int / int -> int 
		ex) int 5 / int 2 => int 2 

		int / (float) int 
		ex) 5/(float) 2 => 5 / 2.0f 
		
		float / float -> float
		ex) 5.0f / 2.0f -> 2.5f 

cf) float과 double 값을 비교할때는 float으로 바꿔서 비교해야 한다. 정밀도가 다르기 때문에 꼭 변경해야 한다.

4) 조건문 & 반복문

조건문: if(조건식) // 0~1번 동작하며 발전하면 switch문!
반복문: while(조건식) // 0~n번 동작하며 발전하면 for문!

(1) 조건문 if

조건이 1개인 경우 if문을 사용한다.
if문은 중첩으로 사용이 가능하다.
조건식이 True인 경우 A 실행
조건식이 False인 경우 B 실행

if( 조건식 ) {
	실행문A  
}
	실행문B  

if문을 간단하게 만드는 식: 삼항연산자 (조건식 ? 식1: 식2)

(2) 조건문 if-else

조건식이 True인 경우, A를 실행 후 C를 실행한다.
조건식이 False인 경우, B를 실행 후 C를 실행한다.

if ( 조건식 ) {
        실행문A    
} else {
        실행문B  
} 
실행문C

(3) 조건문 if-else if-else

조건식이 여러개 일 경우 사용한다.
조건식1이 True일 경우 A를 실행 후 D를 실행
조건식1이 False일 경우 조건식2로 이동한후 조건식2가 True이면 B를 실행 후 D를 실행
조건식2도 False인 경우 C를 실행 후에 D를 실행

if ( 조건식1 ) {
        실행문A    
} else if (조건식2) {
        실행문B  
} else {
        실행문C 
}
실행문D 

(4) 조건문 switch문

if문은 조건이 많아질수록 else-if문을 통해 계속해서 추가해야 하므로 코드의 길이가 길어질 수 밖에 없는데, switch문은 if문 보다 코드가 간결하여 쉽게 코드를 읽을 수 있다.

변수가 값1인 경우 A를 실행
변수가 값2인 경우 B를 실행
변수가 값1, 값2가 아닌 경우 C를 실행

switch ( 변수 ) { 
	case1: 실행문A 
  	 	break;
	case2: 실행문B  
    	break;
default:
     실행문C 
}

(5) 반복문 for문

for(초기화식; 조건식; 증감식); // 조건식이 참일 경우에 계속해서 반복

(6) 반복문 while문

while(조건식) {
증감식; // 조건식이 참일 경우에만 반복, 조건식이 거짓이면 문장전체를 벗어난다.
}


profile
DONE IS BETTER THAN PERFECT.

0개의 댓글

관련 채용 정보