저번 시간에 배열에 대해서 다루었습니다. 이번에는 무엇에 대해 다루어 볼까요? 간단하게 문자열에 대해서 다뤄 보도록 하겠습니다. char형은 문자를 저장합니다. 그러면 그것들을 연속적으로 모아놓은 것은 무엇일까요? 예를 들자면 'c', 'h', 'o'가 모여서, "cho"가 되고, 'd', 'o', 'g'가 모여서 "dog"가 됩니다. 이것을 우리는 문자열이라고 합니다. 그러면, 문자열의 끝은 어떻게 판단할까요? 이게 문제가 될 수 있어요. 배열에서 끝은 어떻게 판단하나요? 사실, 이것은 배열의 크기에, 각 원소의 크기로 나누면 될 겁니다. 이 부분은 크게 어려울 건 없어 보여요. 그런데, 이런 경우를 생각해 봅시다. 이 때에는 출력 결과가 어떻게 나오나요? 저는 main 함수 안에, str 배열을 선언..
코딩 검색 결과
그룹 별로, 예를 들어서 카데고리 별로, 아니면 분반 별로 평균을 구하거나, max 값을 구할 수 없을까요? 그룹 별로 집계하기 위해서 group by 절을 씁니다. mysql을 설치하면 sakila 데이터베이스가 있는데요. 이는 영화 대여 시스템에 필요한 테이블들을 구축한 것으로 보입니다. JOIN문도 연습하기 좋은 듯 싶으니, 오늘 예제는 여기서 써 보도록 하겠습니다. 먼저, film_category에서 데이터들을 뽑아봅시다. 그러면 영화의 ID랑, 카데고리의 ID가 있네요. 여기에서 저는, 카데고리 별로 몇 개의 영화를 대여점에서 가지고 있는지를 그룹화 해서 출력하고 싶어요. 그러면 어떻게 해야 할까요? 무엇을 기준으로 group 하는 건가요? 카데고리 별로. category_id인가요? 네. 그러..
보통 제어문을 배우시고, 함수로 넘어가는 경우가 많아요. 저는 C언어 배열 먼저 다루도록 하겠습니다. 함수는 조금 뒤에 배워도 크게 문제는 없습니다. 먼저 array는 같은 자료형을 여러 개 묶어놓은 자료 구조 정도로 생각하면 좋아요. 그런데, 그걸 어떻게 묶느냐가 문제입니다. 이 친구는 시작 위치를 기준으로 연속이 되게 저장이 되어 있어요. 흔히 이런 말을 들어보신 적이 있을 겁니다. array는 삽입, 삭제는 매우 오래 걸리지만, x번째에 있는 원소는 굉장히 빠르게 찾을 수 있다. 그 이유는 간단합니다. 메모리 상에 연속적으로 저장이 되기 때문입니다. 즉, 실제로 arr[2]에 접근하기 위해서, arr의 기준 위치를 알아냅니다. 그림에서는 0x80번지입니다. 그 다음에, 첨자가 2가 붙었기 때문에, ..
ps를 하면서, switch문은 그렇게 많이 작성하지는 않았습니다. 오히려 if, else if문을 가지고 많이 작성하거나, 배열로 많이 처리를 했는데요. 그래도 알아두면 유용한 조건문입니다. 대략적인 문법은 아래와 같습니다. 여기서 default는, 정수 변수가 정수값(1), ... , 정수값(n)이 아닐 때, 걸립니다. 이 때에는 실행(n+1)이 수행되고 switch문이 끝날 겁니다. 괄호에 정수 변수가 하나 들어갑니다. 예를 들어서 op나, cc와 같은 것들이 그러한 예입니다. 그리고, case 정수값(i)는 정수 변수의 값이 정수값(i)일 때, 걸립니다. 즉, 분기가 되는 위치 정도로 생각하시면 좋겠네요. 이것을 그림으로 쉽게 그려 드리면 다음과 같습니다. 예를 들어, op가 switch문의 정수..
mysql에서 Case 문은, if else if 문과 거의 비슷합니다. 대략적인 문법은 다음과 같습니다. cond(1), cond(2), ... 가 있어요. 이것은 case문에 걸린 조건들을 의미합니다. 이들 중, 처음으로 만족하는 조건 cond(i)에 대해서, res(i)를 리턴합니다. 만약에 cond(1), ... , cond(n) 어느 조건에도 만족하지 않으면, res(n+1)을 리턴합니다. 이것을 흐름도로 그려보면 다음과 같은데요. if else문과 순서도가 상당히 유사하게 그려진다는 것을 알 수 있어요. 이 문장은 값이 올 수 있는 어떤 곳에서도 사용할 수 있습니다. 그 예제를 2개만 보여드리도록 하겠습니다. 먼저 mysql에서 제공하는 world 데이터 베이스에서 city 테이블을 보면 도시..
최근댓글