전체 글

하고 싶은 것들을 하며 성공하기
· C언어
처음에 이 문제를 만나서 당황했다. 비트 연산인가..? 3*100 + 8 * 10 + 5 * 1 이렇게 나눠서 하는건가? 등등 고민하다가 결국 간단하게 연산자로 풀 수 있다는 것을 깨달았다. 정답은 가까이에.. #include int main(void) { int a, b; int one, ten, hundred; scanf("%d%d", &a, &b); hundred = b / 100; ten = (b % 100) / 10; one = (b % 100) % 10; printf("%d\n", a * one); printf("%d\n", a * ten); printf("%d\n", a * hundred); printf("%d\n", a * b); return 0; } int형 변수 one, ten, hun..
· C언어
1. 주소와 포인터는 상수와 변수 차이와 같다. 1) 포인터는 변수처럼 공간으로도 사용할 수 있지만, 주소는 상수처럼 정해져 있는 값만 사용할 수 있지 공간으로는 사용할 수 없다. 예를 들면 C언어에서 등호(=) 좌측에 공간이 오고, 등호 우측에는 값이 온다. 이때 주소 값 자체는 좌측(L-value)로 올 수 없다. #include int main(void){ int a = 1; int *pa = &a; // 포인터는 변수와 같아서 L-value로 쓰이는 것이 가능하다. &a = 100; // 주소는 상수 값이라 L-value로 쓰이는 것이 불가능하다. return 0; } (위 예시는 보여주기 위함으로 작성한 것이라 실제 컴파일하면 오류를 가져온다) 2) 둘 다 산술 연산자는 사용 가능하다. 2. 포..
· C언어
1. 프로그램 만들기 1.1 컴파일 과정 3단계 1) 1단계 전처리 사용자가 작성한 소스파일을 처음에 가공하는 과정이다. #include가 전처리 지시자이며 이후에 작성하는 등의 헤더 파일, 즉 라이브러리를 불러올 수 있다. 이로써 외부에 있는 함수를 직접 정의하지 않아도 사용할 수 있다. 전처리 과정은 주로 소스 파일을 컴퓨터에 맞게 편집하는 일이므로 파일의 형태에는 변화가 없습니다. 2) 2단계 컴파일 전처리가 된 소스 파일은 컴파일 과정을 거쳐 기계어로 변환된다. 변환된 것은 개체 파일이라고 하며, CPU가 해석할 수 있는 기계어로 된 명령어들로 이루어져 있지만 바로 실행할 수는 없다. 프로그램은 운영체제에 의해 실행되어서 설치된 운영체제가 인식할 수 있는 형태로 바꿔야 한다. 3) 3단계 링크 이..
· C언어
2. 기억 상자 만들기 - 변수 2.1 숫자 상자 만들기 우리는 어질러진 방을 청소할 때 빈 상자를 찾는다.(제발 찾아줘..) 그리고 장난감, 봄 옷, 가을 옷 등 라벨링(눈 관리)을 하게 되는데 이는 다음에 쉽게 찾기 위해 하는 행동이다. 프로그래밍에서도 비슷한 행동을 하게 되는데 이는 변수를 사용할 때이다. 변수란 변할 수 있는 값이다. 즉, 여러 가지 값을 변수 안에 넣을 수 있다. 이런 개념에서 봤을 때 변수는 빈 상자로, 여러 가지 값을 장난감, 봄 옷, 가을 옷 등에 비유할 수 있다. 그리고 장난감이 들어가는 상자라고 알리기 위해 라벨링 하는 것은 변수의 자료형을 지정하고, 변수의 이름을 지정하는 것과 같은 맥락이라고 이해할 수 있다. 2.2 메모리 상자에 숫자 저장하기: 변수 선언과 초기화 ..
· C언어
1. C 프로그래밍 속으로 1.3 나의 첫 C 프로그래밍 Hello, World 출력하기 #include main(){ printf("Hello, World"); } stdio.h은 h(헤더)라는 이름의 확장자를 가진 파일이다. stdio는 Standard input/output을 의미한다. #include는 이런 헤더 파일을 자신이 작성하고 있는 코드에 포함한다는 의미로 이해해도 된다. 헤더 파일명을 작성해주는 이유는 바로 아래의 printf라는 명령어들을 라이브러리에서 가져오는 것처럼 쉽게 사용하기 위해서다. C언어에서 이런 명령어들을 쉽게 사용할 수 있는 이유는 이 헤더 파일 안에 명령어들의 기능을 누군가 만들어뒀기 때문이다. 1.4 컴파일과 실행: 프로그램의 일생 컴퓨터는 많은 사람들이 똑똑하다고..
· C언어
3.1 구조적 프로그래밍과 함수 구조적 프로그래밍의 특징은 네 가지가 있다. 1) 프로그래밍의 흐름이 순차적이다. 즉 진행 순서가 위에서 아래로 흘러가면서 순서대로 실행된다. 2) 조건에 따른 분기를 통해 흐름을 제어할 수 있어야 한다. 즉 순차적으로 진행하다가 조건을 만나면 흐름이 바뀌기도 하고, 다시 합쳐지기도 하는 프로그래밍이 가능해야한다. 3) 반복문을 사용해서 프로그래밍의 흐름을 반복하여 수행할 수 있다는 것이다. 4) 기능을 모듈화 할 수 있어야 한다. 이는 별도의 기능을 함수로 구현한다는 의미이다. 3.2 함수를 사용하는 이유 매번 수행 방법은 같지만 입력은 다른 일을할 때 함수를 사용하면 입력이 달라지더라도 쉽게 모듈을 재사용할 수 있다. 3.3 함수의 선언 함수의 선언 형식으로는 '출력 ..
· C언어
작은 수만을 다루는 변수를 선언할 때 굳이 8바이트를 다루는 자료형인 long, float, double을 사용할 필요가 없다. 메모리가 충분하다고 생각하면서 소프트웨어를 개발하는 것은 좋은 프로그래머라 할 수 없다. 왜냐면 우리가 사용하는 각각의 제품은 사용하는 사양이 다르기 때문에 냉장고, TV 등 높은 사양이 필요 없는 곳에는 조금이라도 메모리 공간을 절약하려고 애쓸 것이다. 따라서 변수 하나를 선언하더라도 저장하고자 하는 값의 범위를 생각하고, 그에 맞는 자료형을 선택하여 메모리 사용을 최소화하는 쪽으로 코딩을 해야 한다.
-산출물은 불확실해도 투입물은 확실하다. 원하는 삶을 살려면 가치관을 실천하기 위한 시간을 배정하는 데만 집중하자. -가족과 친구에게 사용할 시간도 따로 계획해둬야 한다. 그렇지 않으면 의미 없는 시간 때우기로 오히려 관계가 악화될 수 있다. -좋은 교우 관계에 대해 오하이오 대학교에서 연구를 했는데 윌리엄 롤린스 대인커뮤니케이션 교수는 '만족스러운 교우 관계에는 대화할 사람, 의지할 사람, 같이 있으면 재밌는 사람 이렇게 세 가지가 필요하다.'라고 말했다. -우리가 사랑하는 사람들은 찌꺼기 시간을 받는 데 만족해야 할 존재가 아니다. 누군가가 소중한 사람이라면 정기적으로 그 사람을 위한 일정을 잡자. -직장에서 나와 비즈니스적으로 자주 만나는 사람이나 중요한 사람과는 자신의 일정을 공유하고 조율하자. ..
jayoon
자윤 블로그