Back-end/C++

22.3.8. - 기초 개념 정의

giggs 2022. 3. 13. 12:49

첫 번째

프로그래밍 언어를 배우는 목적은? - 컴퓨터 일 시키려고 / 사람의 언어를 컴파일시켜서 컴퓨터의 언어로


컴퓨터 장치들

 

연산장치 (CPU)

저장장치 (ram / HDD )

입출력 장치 ( 모니터/스피커/키보드/마우스 등)

 

OS - 운영체제 ( 윈도우/ 리눅스/ 안드로이드 등)

 


프로그램 작동 구조

 

프로그램 설치 시 하드디스크에 저장된다.

 

저장된 프로그램은 메모리에 올라간다.

 

cpu가 메모리에 올라가 있는 프로그램 명령어 불러다가 읽어가면서 실행되는 것이다.

이때 cpu는 1초에 100만 HDD는 1초에 5만 읽을 수 있다고 한다면 모든 장치는 HDD 속도에 맞춰진다.

1:1로 작용한다고 하면 cpu의 95%가 노는 중이다. 이 시간을 cpu idle 타임이라고 한다.

 

이 시간을 줄이기 위해 cpu와 hdd 중간에 ram이라는 곳을 둔다.

ram 은 : 비싸다 - 전원이 공급되어야지 활성화된다. - 전원 끄면 다 사라진다. - 휘발성 메모리

HDD는 : 비휘발성 메모리 - 저장장치

 


ram의 구조 

 

비트 소자로 이루어져 있다. - 

전력공급 시 0 (0V) / 공급 안될 시 1 (5V) - 이걸로 0이나 1로 저장 가능하다. - 이진수만 저장 가능하다.

 

8개 비트 한 묶음으로 - 1byte 단위로 관리

주소가 있으며 - 메모리에 접근하려면 주소를 알아야 한다.

메모리에 저장되어있는 1010 등을 보고 자료가 무엇인지 알기 위해서는 데이터 타입을 알아야 한다. 

 


 

데이터 타입 - 정수형, 실수형, 문자형, 불형

 

정수형

  • short / int / long
  • 2byte / 4byte / 4byte
  • int는 컴퓨터가 한 번에 처리할 수 있는 단위로 시스템 능력에 의존적
  • unsigned 셋 다 적용 가능
    - ( 음수 ) 안 쓰겠다.

 

실수형

  • float / double 
  • 4byte / 8byte
  •  
  • 0.5/ 1.42 ---> 고정소수점 방식
  • 1234567.89를 ( 1.23456789 x 10^6 )으로 나타내는 소수점 위치를 바꾸는 ---> 부동소수점 방식(뜰 부)
  •  
  • float - 4byte - 32it - 저장방법
  •  
  • 맨 앞은 부호 비트 => 그다음 지수부(10^6) 2^n 몇 승 형태로 저장 => 나머지 부분은 가수부로 저장
  • float 0.123456 소수점 6 자릿수까지 유효자리 - 
  • double 0.123~15 자리 수 까지 유효자리 -

 

문자형 

  • char( 1byte ) / string
  •  
  • char - 문자코드를 저장하는 데이터 타입 - 1byte 정수를 저장하는 데이터 타입 - 
  • 2^8 = 0~255 사이 저장 가능 - unsigned char -
  •  
  • 아스키코드 = 문자 모양에 대한 표준 부호 - 127개의 문자 모양 코드 - 미국 정보 표 ( ex A = '65' )

 

불형

  • 논리 타입 bool -> true or false

 


 

컴퓨터 일을 시키려면?

 

1. 먼저 일감 지정 : 박스에 담아서 -> 박스 = 변수

 

int a; ->

메모리 공간에 4byte 할당해줘 / 나 그 메모리 공간에 정수를 저장할 거야/

그리고 그 공간을 a라는 이름으로 접근할 거야..

 

 

2. 무슨 일을 할지 지정 – 연산자

 

관계 연산자

  • 연산자 < , > 등등 -> 연산자. operator
  • 연산당하는 a , b 등등 -> 피연산자, operand
  • 결과값은 논리 값 (참/거짓)

 

논리 연산자

  • ?&&? 피연산자 값들은 논리 타입 값들 좌측 참이고 우측 참이면 참!
  • and 연산자에서 앞에 값 false면 뒤에 값 계산 안 한다. false 나올 거 같은 애 앞에 두는 방식 유리
  •  
  • 관계 연산자의 결과 값은 논리 값 / 논리 연산자의 피연산자는 논리 값 둘이 잘 맞음

 

대입 연산자

  • a = 30 ;
  • left value / right value
  • left value  에는 변수만 올 수 있음 /
  • right value 에는 값이나 정수 올 수 있음

 

산술 규칙

  • 정수 (+,-,*,%) 정수 = 정수
  • 나누기 부분 체크!
  •  
  • 정수 / 정수 = 정수 but 실수 값이 나오게 하려면 한쪽을 float형으로 바꿔주면 된다.
  • 정수 / 실수 = 실수 
  • 이렇게 해줄 경우 결과 값 받는 변수도 float으로 지정 -> float sum = a / (float) b;

 

컴퓨터 일을 시키는 방법 = 변수를 통해서 / 연산자를 통해서

 


 

제어문

 

위에서부터 아래로 한줄한줄 실행됨 일방적인 실행 제어가 필요하다

 

조건에 따라서 실행되어야 할 실행되지 않아야 할 코드들 존재 - 제어 필요! - 제어문

 

분기문 실행 위치 흐름을 다른 곳으로 보내버리는 것

 

조건 분기 ( if / if-else / if-else if / swich- case )

 

if else if는 정수 값은 고정 조건이 여러 개 일 경우 사용

swich-case는 바뀌는 정수 값에 따라 처리가 달라질 경우 사용

 

무조건 분기 ( goto )

 

 


반복문

 

for / while / do-while

 

일반적으로

반복 횟수를 아는 경우 for 문을 주로 이용

반복 횟수를 모르거나 상관없이 조건이 맞을 경우 반복하도록 할 때 while 이용

do-while 은 사용 빈도 낮음

 


 

함수 지향 프로그램 C

객체 지향 프로그램 C++

 

Object – 대상 객체

추상화 내가 필요한 정보만 취해서 단순화

( ex 지도 : 지구를 대상으로 필요한 위치정보만 취해서 단순화 )

( ex 손흥민 : 동사무소 ( 주민번호; 주소; 나이 등) 게임( 능력치: 소속팀: )으로 추상화

 

 


 

review

오랜만에 듣는 실시간 강의 C++ 첫 수업 시간이었다.
비대면 강의로 진행하였고,  zoom으로 수업 진행하였다.
아예 모르고 처음 듣는 다른 학생들이 있어서 기초개념 정의 시간을 가졌다.

나는 기존에 java공부할 떄와 정처기 공부할 때 배웠던 내용들이라서
복습 개념으로 추가적인 내용나 반복 강조했던 부분들 위주로 정리하였다.