왜 C언어일까? C언어의 개요 컴퓨터 Computer 컴퓨터(computer) • 프로그램을 이용하여 어떤 결과를 도출하기 위해 디지털 정보를 처리하고 출력하는 장치 • 일련의 명령들을 프로그래밍 언어를 이용하여 작성함 정보의 처리 컴퓨터의 주어진 자료를 입력 받아 5대기능 입력 기능 정해진 과정에 따라 처리하여, 연산 기능 프로그램 명령어 순서 프로그래밍 언어로 작성 그 결과를 사용자에게 제공 정 보 체계화된 지식 →의사결정 판단 평가 기억 기능 출력 기능 제어 기능 하드웨어 중앙처리장치(CPU, Centrol Processing Unit) • 컴퓨터 시스템의 두뇌 역할을 담당하는 장치 • 제어장치, 연산장치, 레지스터 제어장치(CU, Control Unit) - 프로그램이 지 시하는 대로 시스템의 모든 동작 관할 연산장치(ALU, Arithmetic and Logic Unit) 산술연산, 논리연산 주기억장치 RAM Access Memory) 현재 (Random 처리중인 자료와 프 로그램 저장 ROM (Read Only Memory) • 주기억장치(RAM, ROM) , 보조기억장치(HDD, FDD) 보조기억장치 영구적으로 저장할 자료 자기디스크(FDD, HDD), 광디스크 (CD-ROM, DVD-R), 자기 테이프 저장 입력장치 키보드 키보드, 터치-톤 장치, 셋톱박스 • 처리할 자료를 외부로부터 입력 받는 장치 지시장치 마우스, 트랙볼, 터치패드, 포인팅 스틱, 태블릿, 터치스크린, 광펜 디지타이저 • 키보드, 마우스, 터치패드, 스캐너 원시데이터 입력 장치 바코드, 스캐너, 이미지 스캐너, 문자 인식 장치 소프트 카피 모니터, 스피커 하드 카피 프린터, 플로터 기억장치 • 컴퓨터에 필요한 정보를 저장하는 장치 출력장치 • 처리된 결과물을 외부로 출력해주는 장치 • 프린터, 스피커, 모니터 CPU의 구성 제어장치(CU) 연산장치(ALU) • Arithmetic and Logic Unit • 자료를 처리하고 연산하는 장치 • 산술연산 : 사칙연산(+, -, *, / ) • 논리연산 : 논리합(OR), 논리곱 (AND), 논리부정(NOT) • Control Unit • 프로그램이 지시하는 대로 시스템 의 모든 동작 관할 • 프로그램 명령을 해석하고, 해석 된 명령의 의미에 따라 연산장치, 기억장치, 입출력장치 등에게 동작을 지시하는 제어신호 발생함 레지스터(Register) • CPU 내부에 위치한 기억 장치 • 주기억장치로부터 읽어온 명령이 나 데이터를 저장하거나 연산된 결과를 저장하는 공간임 프로그램 안에 들어있는 것 • 컴퓨터에게 무엇을 어떻게 시킬 지를 기록해놓은 문서가 프로그램 (program)이다. • 프로그램의 각 문장은 컴퓨터에게 작업을 지시하는 명령(instruction) 으로 되어 있다. 프로그램은 명령어 모음 프로그램 언어 C언어 프로그래밍언어 컴파일러? • 컴파일러는 프로그래밍 언어를 기계어로 번역한다. 프로그래밍언어 C언어 • • • • 1970년대 초 AT&T의 Dennis Ritchie 에 의하여 개발 B언어->C언어 UNIX 운영 체제 개발에 필요해서 만들어짐 처음부터 전문가용 언어로 출발 C언어의 정신 • 프로그래머를 믿어라. (Trust the programmer) • 프로그래머가 작업을 못하게 방해하지 마라. (Don't prevent the programmer from doing what needs to be done) • 언어를 작고 간단하게 유지하라. (Keep the language small and simple) • 명령을 실행하는 방법을 하나만 제공하라. (Provide only one way to do an operation) • 호환성은 장담할 수 없더라도 빨리 작동하게 만들어라. (Make it fast, even if it is not guaranteed to be portable) 출처: C99 Rationale C언어의 특징 프로그램 개발 C프로그램의 개발 프로그램의 이해 /* test1.c */ #include <stdio.h> int main(void) { printf(“Hello World\n”); return 0; } 프로그램의 이해 /* test1.c */ #include <stdio.h> int main(void) { printf(“Hello World\n”); return 0; } ▪ 전처리기 ▪ <stdio.h> 헤더파일의 내용을 포함하겠다는 의미 ▪ Standard input output 표준 입출력 라이브러리 사용 ▪ 파일 입출력, 콘솔화면 입출력, 파일구조체, 문제 입출력 등등 프로그램의 이해 /* test1.c */ #include <stdio.h> 리턴형 함수명 매개변수 int main(void) { printf(“Hello World\n”); return 0; } ▪ 함수 - 프로그램에서 처리할 내용을 모아두는 기본 단위 - C프로그램은 하나 이상의 함 수로 구성 - 함수의 리턴형, 이름, 매개변 수 리스트로 구성 -함수의 끝을 만나거나 return 문을 만나면 함수를 호출한 곳 으로 되돌아감 ▪ 진입점 함수(Entry-point Function) - 프로그램이 처음 시작될 때 운영체제가 호출하는 특별한 함수 - main함수가 C의 진입점 함수 프로그램의 이해 ▪ main 함수의 리턴형 ✓main 함수는 값을 반환하지 않거나 int형을 반환한다. void main(void) { } int main(void) { return 0; } ▪ main 함수의 리턴 값 ✓프로그램이 종료될 때 운영체제에게 넘겨주는 값 ✓프로그램의 종료 코드(exit code), return 0은 오류없이 종료했다는 뜻. int main(void) { ... return 0; } int main(void) { ... return 1; } void main(void) { ... return; } 프로그램의 이해 /* test1.c */ #include <stdio.h> int main(void) { ▪ 문장 - 함수를 구성하는 기본 단위 - C 프로그램의 각 문장은 세미 콜론(;)으로 끝남 ▪ printf 함수 - 출력을 하기위한 함수 printf(“Hello World\n”); - 출력할 내용을 “”로 묶어서 사 용 - 줄바꿈 문자(“\n”) return 0; } 프로그램의 이해 ▪ 주석(Comment) /* test1.c */ #include <stdio.h> int main(void) { printf(“Hello World\n”); return 0; } - 코드에 대해 설명하기위한 목 적, 프로그램에 대한 정보 제공 - 프로그램 수행에는 영향을 미 치지 않는 요소(컴파일X) - 한줄 주석 : //주석이다옹 - 범위 주석 : /*주석이 다옹*/ - 단축키 : Ctrl + K + C (달기) + U (해지) 파이썬 프로그래머의 C언어 첫 코딩 main(void) { print(“Hello World\n”) } 파이썬 프로그래머의 C언어 첫 코딩 main(void) { print(“Hello World\n”); } 파이썬 프로그래머의 C언어 첫 코딩 main(void) { printf(“Hello World\n”); } 파이썬 프로그래머의 C언어 첫 코딩 include <stdio.h> main(void) { printf(“Hello World\n”); } 파이썬 프로그래머의 C언어 첫 코딩 #include <stdio.h> main(void) { printf(“Hello World\n”); }