본문 바로가기

전체 글164

클린 코더(The Clean Coder) 개인적으로 책 읽는 것을 잘 안 좋아한다. 그래도 군대에 있는 동안 뭐라도 남기려고 노력하고 있다. 그 중 하나가 책 읽기다. 책 읽는 습관은 사회에 복귀한 뒤에도 계속 이어갈 생각이고, 리뷰를 올리기 위해 새로운 카테고리도 만들었다. 아마 여기에 올리는 글의 상당 부분은 프로그래밍과 관련된 책이지 않을까 싶다. 오늘 책 한 권을 다 읽었다. 정확히 말하자면 부록이 남아있긴 한데 내일 근무 서면서 마저 읽을 것 같다. 저자는 로버트 마틴으로(밥 아저씨) 프로그래머로 유명한 사람이라는데 누군지 모르겠다. 밥 아저씨를 검색하면 그림 그리는 "참 쉽죠?" 아저씨가 나온다. 물론 내가 읽은 건 번역서다. 번역은 나쁘지 않았지만 간혹 가독성이 떨어지는 문장이 있다. 예를 들면 긍정문으로 쓸 수 있는 내용을 부정+.. 2020. 2. 3.
C언어 기초 part 2-2. 다차원 배열 2차원 배열 다차원 배열 1. 2차원 배열 2차원 배열은 배열의 확장이다. 기존의 1차원 배열이 x축만 있는 구조였다면 2차원 배열은 x, y축까지 갖는다고 보면 된다. 필자는 2차원 배열을 행렬로 생각하고 프로그래밍 한다. 즉, 논리만 맞으면 편한대로 생각해도 된다. 프로그램 상으로 4차원, 5차원 배열도 구현이 가능한데 5차원 배열을 표나 그림으로 나타낼 수는 없지 않은가? 구조는 1차원 배열과 동일하다. 메모리상에 연속적으로 할당된다. 선언 방법도 예상하다시피 int table[5][5]; 와 같이 선언한다. 필자는 이 배열은 table[행][열]로 해석한다. 메모리상에서 2차원 배열은 1행의 배열이 모두 할당되고 연속으로 2행의 배열이 할당되는 식이다. 즉, 메모리상에서 다음과 같이 정렬된다. t.. 2020. 1. 31.
워크넷 IT직무 기본역량검사 결과 옆에서 선임이 워크넷에서 재밌어 보이는 걸 하고 있길래 나도 워크넷에 들어가 봤다. 선임이 했던 검사와는 다른 검사지만 눈길이 가는 검사가 있어서 재미삼아 해 봤다. (원래는 워크넷이라는 사이트도 모르고 있었다.) 적성 부분은 문제와 제한시간이 존재하고 인성 영역은 설문조사같이 선택하는 것이다. 추리력은 자신 있었는데 생각보다 못 풀었고, 언어력은 못 풀었는데 생각보다 점수는 잘 나왔고(여러 가지 문제 유형이 있었는데 그 중 한 가지는 잘 풀어서 그런듯) 집중력은 낮다고 생각하는데 단지 문제 유형이 내가 풀기 쉬운 문제였다. 물론 IQ테스트나 이런 검사들은 애초에 문제를 다 못 풀정도의 시간을 안 주는데, 그래도 문제를 다 못 풀면 아쉬움이 남는다. (추리력 유형 중 하나랑 집중력 문제는 다 풀었다.) .. 2020. 1. 23.
코딩 관련 책 읽기 군대에 있는 시간이 아까워서 근무가 없는 날엔 22시~24시 도서관(or 사지방) 연등을 한다. 개발을 하고 싶지만 환경을 구축해봐야 console log 정도만 가능하다. 그래서 군대에서는 이론 공부 위주로 하자는 생각에 작년에 데이터 통신을 공부했다. 이후 디자인 패턴을 공부하고 (구름 ide이용)java로 간단한 구조만 코딩하고 있었으나... gui가 너무 그리워서 웹이라도 공부하자는 생각에 html, css, js, node.js를 공부하기 시작했다. node.js를 제외하고 원래 공부해봤던 애들이라 가벼운 마음으로 시작했고 현재 html은 끝낸 상태이다. 이제 css를 공부하려던 참이나 강의가 아직 다 안 온라온 상태이다. 이번에 외박 나갔다가 여러 가지 책을 구매했다. 소설책 한 권, ... .. 2020. 1. 21.
C언어 기초 part 2-1. 배열 part 2. 배열과 포인터 배열 1. 배열 배열 공부에 앞서 배열이 필요한 상황, 현재로서는 해결할 수 없는 상황을 가정해 보자. 예를 들어 다음과 같은 상황이 있다. 한 한급의 인원은 30명이고 각각 수학 성적이 주어진다. 수학 성적의 평균을 구하시오. 이를 해결하기 위해 지금까지 공부한 것만을 이용하면 다음과 같은 상황이 된다. int math_score1, math_score2, math_score3, ...; 배열을 이용한다면 성질이 비슷한 여러 개의 변수를 하나의 이름으로 묶어 정의할 수 있다. 그 꼴은 다음과 같다. // 형태 1 //자료형 이름[길이]; int math_score[30]; // 길이 30만큼 메모리 공간이 할당된다. (int는 4byte이므로 4*30=120byte) // .. 2020. 1. 21.
C언어 기초 10. 함수 (part 1. 끝) 함수 전역변수와 지역변수 define const static 이번 절에서는 함수와 #define, const에 대해 알아보겠다. 1. 함수 함수는 낯설지 않은 단어이다. 누구나 중학교 수학 시간에 함수를 배웠을 것이다. 그때 배운 함수와 본질이 같다. 함수하면 어떤 생각이 드는가? y = ax+b? 코딩에서 이 표현보다는 f(x) = ax+b가 더 적절하다. 중요한 것은 함수 f(x)에 값을 대입하면 새로운 값이 나온다는 것이다. 다만, 코딩에서는 값을 대입하지 않거나 하나 이상의 값을 대입해야 할 수도 있다. 또한 새로운 값을 무조건 반환하지 않아도 된다. 함수는 다음과 같이 구성된다. 반환형 함수이름(매개변수) { ... 구현부 ... } int main(int argc, char argv[]) { .. 2019. 12. 14.
C언어 기초 9. 반복문 while do ... while for break continue 같은 동작 혹은 규칙을 갖는 동작을 반복해야 하는 경우가 있다. 예를 들어 1~10 출력, 구구단 출력 등이 있다. 1) while while문은 통해 반목문이 돌아가는 방식을 이해해보자. int i = 1; while(i 2019. 12. 7.
C언어 기초 8. 조건문 if if ... else if ... else if ... else switch 지금까지는 프로그램의 흐름이 정해져 있었다. 하지만 조건문을 알고 나면 흐름을 통제하여 프로그램을 실행할 때마다 다른 결과를 가져올 수 있다. 조건문에는 if문과 switch문이 있으며, if문에는 if, if ... else, if ... else if ... else 세 종류가 있다. 1) if if문은 if(조건) {...} 의 구조를 갖는다. 조건에 해당하는 부분이 참이 되면 {...} 부분을 실행하고 거짓이면 무시하고 넘어간다. 코드로 확인해 보자. int score; scanf("%d", &score); if (score >= 60) { printf("축하합니다! 합격입니다.\n"); } intput 80 out.. 2019. 9. 12.
C언어 기초 7. C언어 연산 기본 연산 비교 연산 논리 연산 전&후위 연산자 C언어가 기본적으로 기본 연산, 비교 연산, 논리 연산, 비트 연산, 전후위연산을 제공한다. C언어 기초편에서는 비트 연산을 제외한 나머지를 설명하도록 하겠다. 비트 연산은 활용할 일이 적고 활용하기 어렵다고 판단하여 C언어의 다음 시리즈에서 설명하기로 하였다. 1) 기본 연산 먼저 기본 연산은 덧셈+, 뺄셈-, 곱셈*, 나눗셈/을 말하는 것이고 곱셈 기호와 나눗셈 기호를 기억하라는 것 외에는 따로 설명할 것이 없을 것 같다. 추가로 프로그래밍 언어에서 대부분 지원하는 또 하나의 중요한 연산인 모듈로(modulo) 연산이 있다. 이 연산은 나눈 나머지를 구하는 연산이며 연산 기호는 %이다. 예를 들어 10 % 3 을 하면 10을 3으로 나눈 나머지가 1이므.. 2019. 9. 7.