공부일기/CS50
-
NAVER 부스트코스 CS50 - 6. 자료구조공부일기/CS50 2020. 8. 19. 00:34
6 자료구조 6-1 malloc과 포인터 복습 포인터 초기화: 포인터 변수에 malloc으로 메모리영역을 할당해 주는 것 초기화 되지 않은 포인터는 프로그램 어딘가를 임의로 가리키고 있을 수 있고, 오류를 발생시킬 수 있다. 6-2 배열의 크기 조정하기 일정한 크기의 배열이 주어졌을 때, 그 크기를 키우려면 새로운 공간에 큰 크기의 메모리를 다시 할당해 기존 배열의 값들을 하나씩 옮겨줘야 한다. 코드로 나타내 보게 되면, #include #include int main(void) { //int 자료형 3개로 이루어진 list 라는 포인터를 선언하고 메모리 할당 int *list = malloc(3 * sizeof(int)); if (list == NULL){ return 1; } list[0] = 1; ..
-
NAVER 부스트코스 CS50 - 5. 메모리공부일기/CS50 2020. 8. 17. 17:27
5 메모리 5-1 메모리 주소 컴퓨터 과학에서는 숫자를 10진수나 2진수 대신 16진수로 표현하는 경우가 많다. 데이터를 처리 할 때 장점이 있기 때문인데, 0 1 2 3 4 5 6 7 8 9 a b c d e f 의 순서로 표현한다. 16진수를 표현 할 땐 모든 수 앞에 0x를 붙인다. C에서는 변수의 메모리상 주소를 받기 위해 ‘&’ 연산자를 사용할 수 있다. 반대로 ‘*’를 사용하면 그 메모리 주소에 있는 실제 값을 얻을 수 있다. 5-2 포인터 * 연산자는 메모리 주소에 있는 값을 받아올 수 있게 하는데 이를 이용해 포인터 역할을 하는 변수를 선언할 수 있다. 여기서 *p는 포인터 변수이다. 이 포인터 변수에 n의 주소를 받게 되고 int는 포인터가 가리키는 값이 int라는 뜻이다. 5-3 문자열..
-
NAVER 부스트코스 CS50 - 4. 알고리즘공부일기/CS50 2020. 8. 12. 21:25
4. 알고리즘 4-1 검색 알고리즘 배열은 한 자료형의 여러 값들이 메모리상에 모여 있는 구조이다. 어떤 값이 배열 안에 속해 있는지를 찾아 보기 위해서는 배열이 정렬되어 있는지 여부에 따라 다음과 같은 방법을 사용할 수 있다. 선형검색: 배열의 인덱스를 처음부터 끝까지 하나씩 증가시키며 그 값이 속하는지 확인 이진검색: 배열이 정렬되어 있다면, 배열 중간 인덱스부터 시작해 찾고자 하는 값과 비교하며 그보다 작은 인덱스 또는 큰 인덱스로 이동을 반복 4-2 알고리즘 표기법 O( ): 알고리즘 실행 시간의 상한을 나타낸 것 Ω( ): 알고리즘 실행 시간의 하한을 나타낸 것 Θ( ) : 알고리즘 실행 시간의 평균 시간 좋은 알고리즘은 Big-O 값이 좋은 알고리즘. 4-3 선형검색 strcmp( ) : 문자..
-
NAVER 부스트코스 CS50 - 3. 배열공부일기/CS50 2020. 8. 10. 21:05
3. 배열 3-1 컴파일링 전처리: #로 시작하는 헤더파일은 해당 파일의 실제코드로 대체 된다. 컴파일: 어셈블리 코드로 바뀌고(CPU가 실제 이해하는 언어에 가까워짐), 명렁어 실행. 어셈블링: 0과 1로 이루어진 머신코드를 만듦. 어셈블리 코드를 오브젝트 코드로 변경. 링킹: 위 단계에서 생성된 파일들을 연결. 3-2 디버깅 버그: 의도하지 않은 프로그램 내의 실수 논리적 오류 해결을 위해서 printf( ) 함수를 사용할 수 있다. 코드가 적힌 행 옆의 빨간 점을 클릭해 단계별로 실행할 수 있다. 3-3 코드의 디자인 코드 작성 만큼이나 중요한 건 코드가 정확한지 확인하는 테스트를 만드는 것이다. 특히 새로운 기능을 추가할 때 프로그램이 잘 작동하도록 작동여부를 확인해야 한다. 코드 작성시에는 나와..
-
NAVER 부스트코스 CS50 - 2. C언어공부일기/CS50 2020. 8. 5. 20:54
2. C언어 2-1 C기초 컴파일러: 직접 작성한 코드는 ‘소스코드’라고 불리는데 이를 2진수로 작성된 ‘머신코드’로 변환해야 컴퓨터가 이해할 수 있다. 이런 작업을 수행해주는 프로그램 2-2 문자열 C의 경우 변수가 저장하는 데이터의 종류를 아주 정확하게 명시해야 한다. 이 때, string, int, float과 같은 것들을 형식지정자라고 한다. 2-3 조건문과 루프 if, else, else if 뒤에는 세미콜론이 붙지 않는다. while( ) 은 ( ) 안의 조건에 해당 되는 동안 계속 반복한다. 2-4 자료형, 형식 지정자, 연산자 데이터 타입: bool: 불리언 표현, (예) True, False, 1, 0, yes, no char: 문자 하나 (예) 'a', 'Z', '?' string: 문..
-
NAVER 부스트코스 CS50 - 1. 컴퓨팅 사고공부일기/CS50 2020. 8. 3. 20:00
1. 컴퓨팅사고 1-1. 2진법 입력을 전달 받아 출력을 만들어내는 과정에서 중간에 있는 과정이 바로 컴퓨터 과학. 컴퓨터 과학은 문제 해결에 대한 학문 비트(bit)는 0과 1, 두 가지 값만 가질 수 있는 측정 단위 바이트(byte)는 8개의 비트가 모여 만들어 진것으로 1바이트는 2^8개의 값을 가질 수 있음 1-2. 정보의 표현 ASCII(아스키코드): 문자를 숫자로 표현할 수 있도록 정해진 표준. Unicode표준은 더 많은 비트를 사용해 더 다양한 다른 문자들도 표현가능 하도록 지원한다. 픽셀: 각 픽셀은 세 가지 색을 서로 다른 비율로 조합하여 갖게됨. RGB(Red, Green, Blue) 각 자리에서 0-255까지의 숫자 조합으로 색이 표현됨. 1-3. 알고리즘 입력에서 받은 자료를 출력..