본문 바로가기

분류 전체보기

(96)
21/09/18 모두를 위한 컴퓨터 과학 (CS50 2019) - 알고리즘 3) 선형 검색 선형 검색 : 원하는 자료를 찾을 때까지 처음부터 마지막 자료까지 차례대로 검색 반환 값의 관습적인 의미 0 성공 1 실패 💬 어떤 정적인 정보. 예를 들어 도서관 회원관리에 필요한 회원 정보. 이름, 회원번호가 들어가 있을 것이다. 4) 버블 정렬 버블 검색 : 정렬 알고리즘 중 하나. 두 개의 인접한 자료를 비교하면서 위치를 교환하는 방식의 정렬 💬 n값이 크거나 이미 정렬되어 있는 자료를 정렬할 때 비효율적이다. 반대로 n값이 작거나 정렬되지 않은 자료를 정렬할 때 효율적이다. 5) 선택 정렬 선택 정렬 : 자료들 중에서 가장 작은 자료를 찾아 첫번째 위치의 수와 교환해주는 정렬 💬 선택 정렬을 효율적으로 바꾸기 위한 방법은..
21/09/16 모두를 위한 컴퓨터 과학 (CS50 2019) - 배열, 알고리즘 8) 명령형 인자 = command-line argument #include #include int main(int argc, string argv[]){ if (argc == 2){ printf("hello, %s\n", argv[1]); }else{ printf("hello, world\n"); } } main 함수는 인자를 2개 가지는데, int형 argc와 string 배열 argv이다. argc는 입력받는 문자열 개수이고 argv는 입력받는 문자열이다. 위의 예제 코드는 입력받은 인자가 있으면 hello, argv[1] 라고 출력하고 인자가 없으면 hello, world 만 출력한다. argc 변수를 2와 비교하고 있는데, 그 이..
21/09/14 모두를 위한 컴퓨터 과학 (CS50 2019) - 배열 5) 배열2 동적으로 작성한 코드는 확장성이 있지만 코드 작성에 시간이 많이 소요된다. 6) 문자열과 배열 널 종단 문자는 C에게 문자열이 끝난다는 것을 알려준다. 7) 문자열의 활용 int n = strlen(s); for(int i = 0; i < n; i++){ … } 두 줄로 나타내는 것보다 for(int i = 0, n = strlen(s); i < n, i++){ … } 한 줄로 나타내는 것이 간결하다. 유용한 사이트 소개 각 글자의 10진수를 보여주는 사이트 CS50 프로그래머를 위한 유용한 프로그래밍 도구 정리 ctype.h, string.h 사용 예제 찾아보기
21/09/12 모두를 위한 컴퓨터 과학 (CS50 2019) - 배열 3) 코드의 디자인 프로젝트 내에서 사람들 각자 코드 스타일이 다르다면 서로의 코드를 이해하는 데에 시간이 걸릴 것이다. 다른 사람의 코드를 마주칠 때마다 매번 그래야하므로 비효율적이다. 강의 듣고 나서 고무 오리를 하나 갖고 싶어졌다. 4) 배열1 메모리 역할을 하는 RAM. 작은 노란 사각형 하나가 1바이트라고 생각하면 편하다. 실생활에서 배열로 나타낼 수 있는 데이터는 강의에 나온 예시처럼 학생들의 성적이나 아파트의 세대원 수가 있겠다. 같은 종류로 분류할 수 있는 데이터면 모두 가능하다.
21/09/08 모두를 위한 컴퓨터 과학 (CS50 2019) - 배열 1) 컴파일링 컴파일링 순서 1. preprocessing 라이브러리 포함 2. comiling 소스코드를 머신언어로 변환(어셈블리어) 3. assebling 어셈블리 코드를 오브젝트 코드로 변환 4. linking 여러 개의 파일을 하나로 통합 이 모든 순서를 합쳐서 컴파일링이라고 칭한다. 소스 코드 입력과 출력 사이에 위와 같은 과정을 거치며 컴파일링이 일어난다. 만약, 컴파일링을 거치지 않고 바로 머신코드로 코드를 작성한다면 코드를 학습하는 데 시간이 많이 걸리고 작성하는 데에도 시간이 무척 많이 걸리는 일이 될 것이다. 한마디로 어렵고 귀찮은 일일 것이다. 2) 디버깅 버그의 종류 1. 문법 에러 Syntax error help50 명령어를 ..
21/09/06 모두를 위한 컴퓨터 과학 (CS50 2019) 5) 사용자 정의 함수, 중첩 루프 사용자 정의 함수를 사용하는 것의 장점 : 코드를 간결화하여 코드 읽기가 쉬워진다. 6) 하드웨어의 한계 Y2K 문제 : 연도를 두 자리 수로 저장하는 관습 때문에 1999년에서 2000년으로 넘어가는 때에 정수 오버플로우가 발생했다. 이를 처리하는데 많은 비용이 들었다. 보잉 787 문제 : 비행기 구동 후 248일이 지나면 안전 모드로 진입해서 기내 모든 전력이 끊기는 문제가 있었다. 이 역시 정수 변수의 오버플로우가 발생하였기 때문인데, 주기적으로 재가동해서 문제를 해결해야했다. 이러한 문제를 피하기 위해서는 확장성을 고려해서 설계하는 것이 좋다.

728x90