코딩인카페 C&JAVA 기초과정 C프로그래밍(1)

12
2016.08.16 1

Transcript of 코딩인카페 C&JAVA 기초과정 C프로그래밍(1)

Page 1: 코딩인카페 C&JAVA 기초과정 C프로그래밍(1)

2016.08.161

Page 2: 코딩인카페 C&JAVA 기초과정 C프로그래밍(1)

YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ

2

C 프로그래밍 (1)컴퓨터의 정보처리

키보드

하드디스크

파일50 9075 100…….

프로그램

프로그램

입력

입력

출력

출력

10075

90화면

화면

평균 점수는72점

평균 점수는72점

50

Page 3: 코딩인카페 C&JAVA 기초과정 C프로그래밍(1)

YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ

3

C 프로그래밍 (1)프로그램의 구성

C언어 프로그램

int main(int argc, char *argv[]){……………

}

메인 루틴

전처리기라이브러리

특정부분에 특정파일을 삽입

(#include stdio.h)

#include

특정 문자열을특정 문자열로

치환(#define PI 3.14)

#define

조건에 맞춰 특정행을 삭제 또는

삽입(#ifdef, #else, #end)

기타

#include <stdio.h>

전처리기

int factorial(int n) { …….. }

서브 루틴

printf(), scanf(), sin()

라이브러리

문자출력 함수(printf("%d\n", n))

printf()

키보드로부터 문자입력 함수

(scanf("%d", &n))

scanf()

표준 라이브러리함수, 사전 준비된

프로그램(fprintf(), sin(), stoi())

기타

Page 4: 코딩인카페 C&JAVA 기초과정 C프로그래밍(1)

YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ

4

C 프로그래밍 (1)컴파일(compile)과 어셈블(assemble)

stdio.h

math.h

Stdlib.h

헤더파일

printf()

scanf()

atoi()

라이브러리

C 프로그램 빌드(build)의 흐름[넓은 의미의 컴파일]

C 소스 코드

전 처리된C 소스 코드

어셈블리 언어

기계어(오브젝트 코드)

기계어(실행 가능한프로그램)

프리 프로세스

컴파일 링크

어셈블

좁은 의미의컴파일

Page 5: 코딩인카페 C&JAVA 기초과정 C프로그래밍(1)

YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ

5

라이브러리의 링크

링크 전

링크 후

printf()

scanf()

atoi()

라이브러리

링크 처리

fprintf 심볼 참조printf 심볼 참조atoi 심볼 참조

factorial 심볼 참조

main의 실체

factorial의 실체

fprintf 심볼 참조printf 심볼 참조atoi 심볼 참조

factorial 심볼 참조

factorial의 실체

fprintf의 실체

printf의 실체

atoi의 실체

fprintf의 실체

printf의 실체

atoi의 실체

factorial의 실체

심볼에 대응하는 함수를라이브러리에서 가져와 연결한다.

C 프로그래밍 (1)

Page 6: 코딩인카페 C&JAVA 기초과정 C프로그래밍(1)

YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ

6

C 프로그래밍 (1)일반 컴파일과 크로스 컴파일

일반 컴파일(범용 컴퓨터)

소스 코드

실행 가능프로그램

컴파일

로드

개발 머신과 타깃 머신이 동일

실행

크로스 컴파일(임베디드 시스템)

소스 코드

실행 가능프로그램

컴파일

개발 머신(PC 등)

실행 가능프로그램

로드

실행

타깃 머신(가전 제품 등)

전송

시스템에 따라서는 직접불휘발성 메모리에서실행하는 경우 있음

Page 7: 코딩인카페 C&JAVA 기초과정 C프로그래밍(1)

YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ

7

C 언어 코드의 기본 구조C 프로그래밍 (1)

/* 화면으로 문자를 출력하는 코드 */

#include <stdio.h>

int main(void){

printf(“C 언어에 입문하신 걸 환영합니다!\n”);

printf(“C 언어를 시작합니다!\n”);

return 0;}

주석문 : 코드에 대한 설명, 이 부분은 무시하고 처리

프로그램본체

(main 함수)

main() 함수의 시작 부분

main() 함수의 종료 부분

문(statement) : 하나의 작은 처리(‘작업’) 단위로

마지막에 ; 세미콜론을 붙임

첫번째 실행

두번째 실행

문은 원칙적으로 처음부터순서대로 처리

들여쓰기

인클루드(include) : 헤더파일을 읽어 들임# 기호 있는 줄 : 전처리기(preprocessor)가

다른 코드 번역하기 전에 읽어 들임

Page 8: 코딩인카페 C&JAVA 기초과정 C프로그래밍(1)

YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ

- 변수는 컴퓨터의 메모리를 이용해서여러 가지 값을 기억하는 기능함

- A = 100 , 변수 A 라는메모리 공간에100을 저장

변수의 정의, 특징

8

변수와 식별자C 프로그래밍 (1)

메모리

0x9E 번지

0x9F 번지

0xA1 번지

0xA2 번지

변수 A

100

- 식별자(identifier) : 변수의 이름으로사용할 수 있는 문자와 수치의 조합

< 식별자 작성 규칙 > - 영문, 숫자, 밑줄 문자(underscore, _) 가운데 하나를 사용할 수 있고, 특수 기호를 포함할 수 없음

- 환경에 따라서 31 문자까지 제한- C언어의 예약어(keyword) 사용 불가- 숫자료 시작 불가- 대문자와 소문자는 구별됨

< 잘못된 예 >- 12a : 숫자로 시작하면 안됨- return : 예약어는 사용 불가- is-a : 특수 기호는 사용 불가

변수의 이름 = 식별자

Page 9: 코딩인카페 C&JAVA 기초과정 C프로그래밍(1)

YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ

9

변수의 데이터형(data type)C 프로그래밍 (1)

종류 이름 크기 기억할 수 있는 값의 범위

문자형char 1바이트 영문숫자 1문자 -128 ~ 127

unsigned char 1바이트 영문숫자 1문자(부호 없음) 0 ~ 255

정수형

short int 2바이트 정수 -32768 ~ 32767

unsigned short int 2바이트 정수(부호 없음) 0 ~ 65535

int 4바이트 정수 -2147483648 ~ 2147483647

unsigned int 4바이트 정수(부호 없음) 0 ~ 4294967295

long int 4바이트 장정수 -2147483648 ~ 2147483647

unsigned long int 4바이트 장정수(부호 없음) 0 ~ 4294967295

부동소수점형

float 4바이트 단정밀도 부동소수점수 3.4E-38 ~ 3.4E+38

double 8바이트 배정밀도 부동소수점수 1.7E-308 ~ 1.7E+308

long double 16바이트확장 배정밀도 부동소수점수

1.7E-308 ~ 1.7E+308

☞ 단, C언어의 기본형 크기는 개발환경에 따라 차이가 있을 수 있음

Page 10: 코딩인카페 C&JAVA 기초과정 C프로그래밍(1)

YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ

10

변수의 선언 및 이용C 프로그래밍 (1)

- 변수 선언(declaration) : 변수 이름과형을 결정하고 변수를 준비하는 작업

변수의 선언

- 변수 값의 대입(assignment) : 변수를 선언하고 변수에 특정한값을 저장 또는 기억시키는 작업

변수 값의 대입

변수 선언 구문

Int num; -> int형 변수 num입니다.

char c; -> char형 변수 c입니다.

double db, dd; -> double형인 두 개의

변수 db와 dd입니다.

numint형

형 이름 식별자;변수 값 대입 구문

…….

int num;

num = 3;

printf(“변수 num의 값은 %d입니다.\n”, num);

- 실행 화면 -

변수 num의 값은

3입니다.

변수 이름 = 식;

num

Page 11: 코딩인카페 C&JAVA 기초과정 C프로그래밍(1)

YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ

11

C 프로그래밍 (1)

#include <stdio.h>

int main(void) {

int num1 = 3;

int num2;

printf(“변수 num1의 값은 %d입니다. \n”, num1 );

num1 = 5;

printf(“변수 num1의 값을 %d로 변경했습니다. \n”, num1);

num2 = num1;

printf(“num1 값을 num2에 대입하여 num2 값은 %d입니다. \n”, num2);

return 0;

}

Sample4.c 소스코드

변수 num1의 값은 3입니다.

변수 num1의 값을 5로 변경했습니다.

num1 값을 num2에 대입하여 num2 값은 5입니다.

Sample4 실행 화면

변수 초기화 및 값의 변경

변수 초기화 구문

형 이름 식별자 = 식;

num1 num1 num2

num1=5; num2=num1;num1=3;

변수 선언은 함수 블록 안에서 다른 문보다 맨 위에 먼저 표기한다.

Page 12: 코딩인카페 C&JAVA 기초과정 C프로그래밍(1)

YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ

12

본 자료는 코딩인카페 1기 C&JAVA 기초과정4회차 자료 중 일부를 발췌한 내용입니다.

< 참고자료 >1. C를 배우기전에 반드시 알아야 할 것들, 무라야마 유키오, 루비페이퍼

2. 그림으로 배우는 C프로그래밍, 마나 다카하시, 영진닷컴