반응형

C언어 450

10. 정수 형식과 표현 범위

10. 정수 형식과 표현 범위 C언어에서는 표현할 수 있는 범위에 따라 여러 종류의 정수 형식을 지원해요. 1바이트에서 8바이트까지 다양한 종류의 정수 형식을 지원하죠. 다음은 다양한 정수 형식의 메모리 크기를 확인하는 예제입니다. sizeof를 사용하면 메모리 크기를 알 수 있어요. 그리고 printf 문의 첫 번째 인자 문자열에 %d를 사용하면 10진수로 출력합니다. ◈ 정수 형식의 크기 확인 #include int main() { printf("정수 형식의 크기 확인\n"); printf("char : %d \n", sizeof(char)); printf("unsigned char : %d \n", sizeof(unsigned char)); printf("short : %d \n", sizeof(s..

9. 기본 형식(Type)

9. 기본 형식(Type) 프로그래밍 언어에서는 데이터를 표현하는 문법으로 형식과 변수를 제공해요. 형식은 데이터의 종류와 표현 범위에 따라 메모리 크기와 범위를 약속하고 있어요. 실제 메모리가 필요할 때 형식을 지정하여 변수를 선언하면 약속한 메모리를 할당받아 사용할 수 있어요. C 언에에서 제공하는 형식에는 문자, 정수, 실수를 표현할 때 사용하는 기본 형식이 있어요. 그리고 여러개의 원소를 연속적인 메모리에 할당받아 사용하는 배열과 프로그램의 메모리 주소를 기억하는 포인터도 있죠. 이 외에 개발자가 프로그램에 필요한 형식을 정의하는 문법을 제공합니다. 컴퓨터에 데이터를 저장하는 장치인 메모리의 양은 유한한 자원이죠. 이러한 이유로 정수를 표현하기 위한 형식도 특정 범위에서 표현할 수 있어요. C언어..

8. 정리하기 [C언어 개요]

8. 정리하기 [C언어 소개와 역사, 첫 번째 프로그램] 다루었던 내용 1. 들어가기에 앞서 2. 컴퓨터 프로그램 3. 프로그래밍 언어 역사 4. C언어 표준 5. C언어 문법 요소 6. 첫 번째 프로그램 만들기 7. 첫 번째 프로그램 설명 문제 1. C언어는 Bell 연구소에서 운영체제(O/S)를 만드는 과정에서 사용한 B언어을 발전한 프로그래밍 언어입니다. B언어는 어떠한 운영체제를 만드는 과정에서 사용했나요? 2. 프로그래밍 언어에서 데이터 종류에 따라 필요한 메모리 사이즈와 표현 방법을 약속하는 것은 무엇입니까? 3. 콘솔 프로그램의 진입점 함수 이름은 무엇입니까? 4. 표준 입출력을 사용하기 위해 포함시켜야 하는 헤더 파일 이름은 무엇입니까? 5. 표준 출력 파일에 포멧에 맞게 출력하는 함수 이..

7. 첫 번째 프로그램 설명

7. 첫 번째 프로그램 설명 ◈ Program.c /* Hello, World 프로그램 콘솔 화면에 Hello, World를 출력 */ #include //표준 입출력 헤더 파일 포함문 int main() //프로그램 진입점 {//블록 시작문 printf("Hello, World\n"); //함수 호출문 return 0; //결과 반환문 }//블록 종료문 첫 번째 프로그램은 C언어로 프로그램을 만드는 과정을 소개하기 위한 것이예요. 여기에서는 간단하게 설명하고 앞으로 하나 하나 자세히 다루기로 할게요. 1. 주석 /* Hello, World 프로그램 콘솔 화면에 Hello, World를 출력 */ C언어에서는 동작하는 코드는 아니지만 개발자가 어떠한 의미로 작성한 것인지 이해하기 쉽게 주석을 사용할 수 ..

6. 첫 번째 프로그램 만들기

6. 첫 번째 프로그램 만들기 이제 처음으로 간단한 프로그램을 만들어 봐요. 프로그램 언어를 공부할 때는 머리로 이해하는 것도 필요하지만 받드시 개발 도구에서 만들어 보는 것이 필요해요. 책의 내용을 머리로 이해했다고 만족하지 마시고 개발도구로 만들어 보세요. 이번에 만들 프로그램은 콘솔 화면에 "Hello, World"를 출력하는 프로그램이예요. 여러분은 이 과정을 통해 개발 도구에서 C언어로 프로그램을 만드는 과정을 익힐 수 있어요. 그리고 C언어의 문법 요소도 간단히 살펴볼 수 있답니다. 여기에서는 Microsoft Visual Studio 2015 개발 도구를 사용할게요. 개발 도구 버전에 따라 다소 차이가 있지만 학습하는데 큰 영향을 주지는 않아요. 먼저 [파일 메뉴]에서 [새로만들기]를 선택하..

5. C언어 문법 요소

5. C언어 문법 요소 프로그래밍 언어의 문법에는 데이터를 표현하는 문법과 해야 할 일을 표현하는 문법이 있어요. C언어는 이러한 문법과 매크로 문법을 제공하고 있죠. 데이터를 표현하기 위한 문법에는 형식과 변수가 있어요. 컴퓨터의 메모리는 데이터를 기억하는 장치예요. 그리고 컴퓨터 메모리의 최소 단위인 비트는 0과 1을 표현할 수 있죠. 프로그램에서는 메모리의 주소를 부여하는데 8비트인 바이트 단위로 부여한답니다. 그런데 컴퓨터 메모리는 무한 자원이 아니예요. 유한 자원인 메모리에 모든 데이터를 기억하는 것은 불가능하겠죠. 이러한 이유로 프로그래밍 언어에서는 표현할 데이터의 종류와 표현 범위를 정해요. 이렇게 약속한 것을 형식(Type)이라 부르죠. 실제 데이터를 기억하기 위해 메모리를 할당받고 원하는..

3. 프로그래밍 언어 역사

3. 프로그래밍 언어 역사 컴퓨터 프로그램은 컴퓨터 프로그래밍 언어로 만들어지죠. 앞으로 이 책에서는 컴퓨터 프로그래밍 언어를 프로그래밍 언어라 부를게요. 프로그래밍 언어는 1800년대 후반에 미국의 홀라리스가 기차표를 개찰하는 것에서 착안하였습니다. 홀라리스는 카드에 규칙에 맞게 구멍을 뚫어 천공 카드를 만들었어요. 이를 이용하여 정보를 0과 1로 부호화를 한 것이죠. 최초의 컴퓨터로 알려진 애니악은 1943년에 개발을 시작하여 1946년에 만들어져 10년간 활용하였어요. 하지만 이미 아타나소프 회사에서 1937년에 개발을 시작하여 1942년에 만들어진 ABC(아타나소프 베리 컴퓨터)가 있었요. 결국 소송을 통해 최초의 컴퓨터로 인정받았죠. 하지만 여전히 많은 사람들은 여전히 애니악이 최초의 컴퓨터라고..

1. 들어가기에 앞서

1. 들어가기에 앞서 이 책은 컴퓨터 프로그래머를 꿈꾸는 이들을 위해 만들었어요. 컴퓨터 프로그래머가 하는 작업 중에 가장 기본은 원하는 작업을 컴퓨터가 수행할 수 있게 논리를 전개하는 것이죠. 그리고 컴퓨터가 수행할 수 있는 프로그램을 작성하기 위해 프로그래밍 언어와 개발 도구를 이용하는 것입니다. 많은 이들은 컴퓨터 프로그래밍을 학습하는 것은 책을 보고 머리로 이해하는 것이라 생각하는 것 같요. 하지만 실제 컴퓨터 프로그래밍을 효과적으로 학습하려면 머리를 이용하는 것 외에도 자신의 논리를 종이에 적고 그림을 그리고 자료를 검색하고 아는 이들에게 물어보는 등의 사용할 수 있는 모든 자원을 활용하는 것이 좋습니다. 사실 머리만 쓰는 것은 매우 소극적이며 효율이 떨어지는 프로그래밍 학습이예요. 손과 종이 ..

19. 기본입출력 - 입력

기본 입출력 - 입력 다루는 내용 - 기본 입력 - FILE의 멤버 _base, _ptr, _cnt 기본 입력을 위한 함수들도 기본 출력처럼 stdin버퍼에서 하나의 문자를 얻어오는 getchar, stream을 string으로 얻어오는 gets, 포맷에 맞게 얻어오는 scanf등이 있다. 이들은 공통적으로 stdin버퍼에 아직 처리되지 않은 stream이 존재하는지 확인을 하고 없을 경우에는 하나의 stream이 입력되기를 기다리고 있을 경우에는 입력되기를 기다리지 않는다. Look & Feel & Think 다음을 보면서 stdin버퍼에 아직 처리되지 않은 stream이 존재하지 않을 때 어떠한 동작을 하는지 생각해보자.흔히 프로그래밍을 학습을 할 때 작성한 이가 테스트를 하는 경우가 많다. 이로 인..

큰 수의 덧셈, 곱셈

큰 수의 덧셈, 곱셈 C언어에서 정수형의 범위는 경우에 따라선 부족할 수도 있다. 이러한 경우에 직접 사용자 정의 타입을 정의하고 산술 연산에 대해서도 제공해야 할 것이다. 아래의 예는 효율성을 고려치 않고 어떠한 원리로 작성이 가능한지를 보여주는 예이다. 좀 더 효율적으로 정의를 하고자 한다면 사용자 정의 타입부터 사람의 관점이 아닌 컴퓨터의 관점에서 설계를 해야 할 것이다. 사용자 정의 타입 및 사용할 헤더파일#include #include #include typedef struct _Node Node; typedef struct _Node * Link; //Link는 노드의 위치 정보 struct _Node { int num; //수 int seat; //10의 seat승 Link after; //..

반응형