경일 메타버스 20220705~0706 14주차 2~3일 수업내용. 복습
프로그래밍 :
컴퓨터가 우리의 목적을 달성할 수 있도록 필요한 절차를 기술하는 것
코딩과의 차이점 :
코딩은 그 절차를 바탕으로 코드를 작성하는 것
프로그래밍의 파트
코어 : 문법
라이브러리 : 유틸리티 모음
메모리 :
비트가 저장되는 공간
입출력 장치
입력 :
컴퓨터로 데이터를 주는 것
출력 :
컴퓨터가 데이터를 주는 것
CPU :
중앙 처리 장치. 명령어를 처리
프로세스 :
프로그램을 실행하기 위한 여러 데이터를 관리하는 객체
코드 : 명령어 저장
힙 : 동적 할당 영역
스택 : 정적 할당 영역
데이터 : 정적 데이터 영역
텍스트 에디터 : 코드 작성
컴파일러 : 컴파일
디버거 : 디버그
IDE : 통합 개발 환경
객체 : 데이터 영역
제어문
배열 : 연속적으로 배치
모듈 : 프로그램의 일부 기능을 담당하는 것
함수
사용자 정의 타입 : 구조체
const 수식자
#define 매크로
enum 열거형
4가지 주요 개념
캡슐화 :
데이터와 알고리즘을 함께 묶어서 사용할 수 있는 것.
접근 한정자를 이용해 데이터 은닉 가능
상속 :
코드를 물려받는 것.
즉, 코드 재사용
추상화 :
구현 세부정보를 숨기는 일반적인 인터페이스를 정의하는 것
다형성 :
여러가지 형태를 가지게 되는 성질
데이터를 조직하는 방법
어떤 자료구조를 선택하는가에 따라 프로그램의 성능이 수십, 수백 배 차이 날 수 있다.
선형 자료구조
비선형 자료구조
순차 자료구조 :
메모리에 연속적으로 데이터를 배치.
배열을 사용
연결 자료구조 :
노드라는 메모리 청크에 데이터를 저장하고,
이를 포인터를 사용해서 연결
연산
선형 자료구조
리스트 : 순서를 갖고 있는 자료구조
선형 리스트
검색 : O(n)
읽기 : O(1)
삭제 / 삽입 : 맨 뒤 O(1), 그 외 O(n)
연결 리스트
단일 / 이중 / 원형
검색 : O(n)
읽기 : O(n)
삭제 / 삽입 : 위치를 알면 O(1)
스택 : LIFO
큐 : FIFO
자기 자신을 호출하는 것
구현이 간단해지나, 함수 호출에 따른 오버헤드 존재
시간 복잡도 : 연산의 횟수
공간 복잡도 : 메모리의 양
빅오 표기법