반응형

언어 자료구조 알고리즘 1251

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)이라 부르죠. 실제 데이터를 기억하기 위해 메모리를 할당받고 원하는..

4. C언어 표준

4. C언어 표준 1969년 Bell 연구에서는 서버 시스템을 운영하는 UNIX에서 동작하는 B언어를 만들기 시작했어요. 참고) 서버는 다른 컴퓨터 프로그램에게 서비스를 제공하는 프로그램이나 시스템을 말해요. 그리고 이를 발전시켜 1972년에 C언어가 탄생하였죠. 1983년에는 미국 국가 표준 협회인 ANSI에서 ANSI C표준을 출간합니다. 이 후에 미국 뿐만 아니라 많은 나라의 프로그래머들이 C언어를 사용하는 언어로 발전했어요. 1999년에 국제 표준 기구인 ISO에서는 ISO/IEC 9899:1999를 출간하여 자신의 나라의 문자를 사용할 수 있게 했어요. 2005년도에는 ANSI에서도 이를 표준으로 채택하였으며 C99라고 부르고 있어요. 2011년도에는 버그가 발생할 수 있는 함수들을 개선하여 I..

3. 프로그래밍 언어 역사

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

2. 컴퓨터 프로그램

2. 컴퓨터 프로그램 컴퓨터 프로그램은 소프트웨어(Software)라고 부르죠. 그리고 키보드나 모니터처럼 소프트웨어가 동작하기 위한 물체를 하드웨어라고 불러요. 컴퓨터 하드웨어에는 모니터나 키보드, 마우스, 메모리 장치와 실제 연산을 수행하는 CPU등이 있어요. 실제 컴퓨터 하드웨어는 전기 흐름에 의해 동작하죠. 컴퓨터 프로그램은 컴퓨터 내부 전기의 흐름에 따라 해야 할 일을 정한 논리 집합이예요. 전산(컴퓨터와 프로그램을 다루는 분야)에서는 전기가 흐르는 정도에 따라서 0과 1로 구분하고 있어요. 이러한 이유로 컴퓨터 프로그램은 0과 1로 구성한 논리 집합이며 이진 코드라고 부르고 있죠. 또한 '컴퓨터를 동작하게 하는 코드'라는 의미로 기계어 코드라고도 불러요. 컴퓨터 프로그램에는 메모장, 그림판, ..

1. 들어가기에 앞서

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

파서트리

파서 트리 파싱을 목적으로 하는 트리 파싱 원본을 목적에 맞게 변환하는 작업 A포맷으로 되어 있는 원본을 B포맷으로 변환하는 작업 예) 수식 파서 트리(피 연산자는 음이 아닌 정수, 연산자는 사칙연산에 한한다고 하자.) 먼저 중위 표기에 해당하는 정규식을 만들어보자. Numeric Expression!: 0 mid -expression!: operator: ||| operand: * number_char:||...| 위 첨자가 작성이 안되어서 다음과 같이 약속한다. 참고 * : a가 1번 이상 반복된다. 0 : a가 0번 이상 반복된다. 수식 파서 트리를 만들기 위해서 1. 원본을 입력받는다. 2. 토큰을 생성한다.(Lexical) :잘못된 토큰이 있으면 멈춤다. ==> 원본에 모든 요소가 operand..

큰 수의 덧셈, 곱셈

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

반응형