SlideShare a Scribd company logo
1 of 37
최원빈 (bindon@korea.ac.kr)
고려대학교
2017. 03. 27.
C 프로그래밍 이론 및 실습
개발환경
• Windows
• https://www.visualstudio.com/ko-kr/products/visual-
studio-community-vs.aspx
• Linux, Unix
• GCC, vi, vim, emacs, …
VS를이용한실습
전처리문
함수 시
작변수
선언
변수에 값 할당
표준 출력 및 표준 입력 , 사용자로부터 입력받은 값을 변수에 할
당
연산함수 종
료
VS를이용한실습
전처리문
- 사용자가작성한코드를컴파일하기전에선행적으로처리되는작업
- #include : 파일처리와관련된전처리문
- #define, #undef : 정의와관련된전처리문
- #if, #ifdef, #ifndef, #else, #elif, #endif : 조건처리와관련된전처리문
- #error : 에러처리와관련된전처리문
- #line : 디버깅을위한전처리문
- #pragma : 컴파일옵션과관련된전처리문
VS를이용한실습
함수
함수의종류
- Built-in Function
- User Define Function
VS를이용한실습
변수 선언 및 할당
- 변수란무엇일까?
VS를이용한실습
변수 선언 및 할당
- 변수란무엇일까? 데이터를 담는 공간
VS를이용한실습
표준 라이브러리 (표준 입,출력)
- printf() : 표준출력수행
- scanf() : 표준입력으로부터데이터를받음
-> stdout
-> stdin
표준 입
력
표준 출
력
VS를이용한디버깅
VS에서 디버깅 관련
F5 : 디버깅시작
F10 : Step Out (프로시저단위)
F11: Step In (코드 단위)
F9 : Break Point(중단점) 설정
실습
• 1. Hello “자신의이름”출력하는프로그램
• 2. 다음과같은결과가나오도록프로그램작성
서식문자%d와변수를사용
• 4 +5 =9
• 10 - 2 =8
11
변수 선언 시 주의사항
 변수 이름은 알파벳, 숫자, 언더바(_)로 구성
 대소문자 구분
 변수 Num과 변수 num은 서로 다른 변수
 변수 이름은 숫자로 시작 불가
 키워드 사용 불가 (if, else, for, while …)
 공백 포함 불가
12
변수 선언 시 주의사항
13
변수 선언 예제
14
변수 선언 예제
15
디버깅을 통한 메모리 확인
16
변수의 종류와 메모리
 지역 변수 (Local)
 전역 변수 (Global)
 정적 변수 (Static)
 동적 변수 (Dynamic)
17
변수의 종류와 메모리
 지역 변수 (Local) => 스택 (Stack)
 전역 변수 (Global) => Data / BSS
 정적 변수 (Static) => Data / BSS
 동적 변수 (Dynamic) => 힙 (Heap)
18
변수의 종류와 메모리
 지역 변수 (Local)
 스택(Stack) 영역에 생성
 초기화하지 않을 시, 쓰레기값 할당
 함수가 호출되는 동안에만 메모리에 존재
19
변수의 종류와 메모리
 전역 변수 (Global) / 정적 변수 (Stataic)
 Data 혹은 BSS 영역에 할당
 프로그램의 시작부터 종료까지 메모리에 존재
 초기화 시, Data 영역에 할당
 초기화하지 않을 시, BSS 영역에 할당
20
변수의 종류와 메모리
 동적 변수 (Dynamic)
 힙(Heap) 영역에 할당
 malloc, callloc과 같은 함수를 이용해 할당
 free와 같은 함수를 이용해 할당 해제
21
Data 영역
22
BSS 영역
23
Heap 영역
24
Stack 영역
my_str
i
localpointer
ptr
25
기본 자료형의 종류
26
연산자 sizeof를 이용한 크기 확인
27
특수 문자의 종류
 f와 v는 모니터출력이 아닌 프린터출력을 위해 정의된 특수문자
이기 때문에 모니터의 출력에 사용하면, 이상한 문자 출력
28
printf 함수의 서식지정과 서식문자들
서식문자 설명
%d , %i 10진수 정수 (양수,음수)
%x 16진수 정수
%o 8진수 정수
%f 10진수 실수(소수점 이하 6자리까지 표현, 7자리를 반올림, float)
%lf 10진수 실수(소수점 이하 6자리 까지 표현, 7자리를 버림, double)
%c 한 개의 문자
%s 문자열
%u 10진수 정수 (양수)
%e e 표기법에 의한 실수 (소수점 6자리까지 표현, 7자리를 반올림)
%E E 표기법에 의한 실수 (소수점 6자리 넘는 것도 표현)
%g 소수점 이하 자리 수에 따라 %f , %e를 선택
%G 소수점 이하 자리 수에 따라 %F, %E를 선택
%% % 기호 출력
29
필드 폭을 지정한 정돈된 출력
 %8d
• 필드 폭을 8칸 확보 후, 오른쪽 정렬하여 출력 진행
 %-8d
• 필드 폭을 8칸 확보 후, 왼쪽 정렬하여 출력 진행
30
실수 출력을 위한 서식문자 :%d, %e
#include <stdio.h>
int main(void)
{
printf("%f n", 0.1234);
printf("%e n", 0.1234);
printf("%f n", 0.12345678);
printf("%e n", 0.12345678);
return 0;
}
31
실수 출력을 위한 서식문자 :%g
#include <stdio.h>
int main(void)
{
double d1=1.23e-3;
double d2=1.23e-4;
double d3=1.23e-5;
double d4=1.23e-6;
printf("%g n", d1);
printf("%g n", d2);
printf("%g n", d3);
printf("%g n", d4);
return 0;
}
32
문자 출력을 위한 서식문자: %s
#include <stdio.h>
int main(void)
{
printf("%s, %s, %s n", "AAA", "BBB", "CCC");
return 0;
}
33
Scanf: 정수 기반 입력형태 정의
• %d: 10진수 정수 형태로 데이터 입력 받음.
• %o: 8진수 양의 정수 형태로 데이터 입력 받음.
• %x: 16진수 양의 정수 형태로 데이터 입력 받음.
#include <stdio.h>
int main(void)
{
int num1, num2, num3;
printf("세 개의 정수 입력: ");
scanf("%d %o %x", &num1, &num2, &num3);
printf("입력된 정수 10진수 출력: ");
printf("%d %d %d n",num1, num2, num3);
return 0;
}
34
형 변환 (Type Conversion)
 특정 데이터의 형을 다른 데이터의 형으로 변환
 묵시적 형변환
 컴파일러에 의해 자동으로 수행
 수식에서 데이터형이 혼합되어 사용되거나, 특정 변수에
다른 형의 값이나 변수 대입 시
 명시적 형변환
 프로그래머가 cast(형 변환자)를 사용하여 강제적으로 형
변환 수행
 ‘(변환하고자 하는 타입)’ 을 변수 앞에 적어줌
 Ex> myInt = (int)myFloat;
35
실습문제
 대출 상환금 계산 프로그램
 고객이 대출한 금액, 상환년수, 연이자율을 이용해 고객이
장기적 혹은 총 갚아야할 금액을 알려주는 프로그램
 d = 연상환금 (고객이 매년 갚아야 할 상환금)
 p = 대출 원금
 y = 상환 년수
 r = 연 이자율 (%)
 결과값은 소수점 이하는 버리고 정수형으로 출력
d =
(1 + 𝑟) 𝑦
−1
(1 + 𝑟) 𝑦
∗ 𝑝 ∗ 𝑟
36
실습문제
37
Thank you

More Related Content

What's hot

[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...
[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...
[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...
Seok-joon Yun
 
02장 자료형과 연산자
02장 자료형과 연산자02장 자료형과 연산자
02장 자료형과 연산자
웅식 전
 
2 1. variables & data types
2 1. variables & data types2 1. variables & data types
2 1. variables & data types
웅식 전
 

What's hot (20)

[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
 
Modern Effective C++ Item2 Understanding Auto type deducing
Modern Effective C++ Item2 Understanding Auto type deducingModern Effective C++ Item2 Understanding Auto type deducing
Modern Effective C++ Item2 Understanding Auto type deducing
 
(닷넷, C#기초교육)C#선택적인수, 명명된 인수
(닷넷, C#기초교육)C#선택적인수, 명명된 인수(닷넷, C#기초교육)C#선택적인수, 명명된 인수
(닷넷, C#기초교육)C#선택적인수, 명명된 인수
 
[C++ korea] effective modern c++ study item 7 distinguish between () and {} w...
[C++ korea] effective modern c++ study item 7 distinguish between () and {} w...[C++ korea] effective modern c++ study item 7 distinguish between () and {} w...
[C++ korea] effective modern c++ study item 7 distinguish between () and {} w...
 
[C++ korea] effective modern c++ study item8~10 정은식
[C++ korea] effective modern c++ study item8~10 정은식[C++ korea] effective modern c++ study item8~10 정은식
[C++ korea] effective modern c++ study item8~10 정은식
 
[C++ Korea] Effective Modern C++ Study, Item 1 - 3
[C++ Korea] Effective Modern C++ Study, Item 1 - 3[C++ Korea] Effective Modern C++ Study, Item 1 - 3
[C++ Korea] Effective Modern C++ Study, Item 1 - 3
 
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
 
[C++ korea] effective modern c++ study item 2 understanding auto type deduc...
[C++ korea] effective modern c++ study   item 2 understanding auto type deduc...[C++ korea] effective modern c++ study   item 2 understanding auto type deduc...
[C++ korea] effective modern c++ study item 2 understanding auto type deduc...
 
[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...
[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...
[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...
 
[C++ Korea] Effective Modern C++ MVA item 9 Prefer alias declarations to type...
[C++ Korea] Effective Modern C++ MVA item 9 Prefer alias declarations to type...[C++ Korea] Effective Modern C++ MVA item 9 Prefer alias declarations to type...
[C++ Korea] Effective Modern C++ MVA item 9 Prefer alias declarations to type...
 
C++ 타입 추론
C++ 타입 추론C++ 타입 추론
C++ 타입 추론
 
02장 자료형과 연산자
02장 자료형과 연산자02장 자료형과 연산자
02장 자료형과 연산자
 
C++11
C++11C++11
C++11
 
2 1. variables & data types
2 1. variables & data types2 1. variables & data types
2 1. variables & data types
 
객체지향 정리. Part1
객체지향 정리. Part1객체지향 정리. Part1
객체지향 정리. Part1
 
[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...
[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...
[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...
 
[C++ Korea] Effective Modern C++ MVA item 8 Prefer nullptr to 0 and null +윤석준
[C++ Korea] Effective Modern C++ MVA item 8 Prefer nullptr to 0 and null +윤석준[C++ Korea] Effective Modern C++ MVA item 8 Prefer nullptr to 0 and null +윤석준
[C++ Korea] Effective Modern C++ MVA item 8 Prefer nullptr to 0 and null +윤석준
 
Finding Functional Programming
Finding Functional Programming Finding Functional Programming
Finding Functional Programming
 
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
 
함수
함수함수
함수
 

Similar to [170327 1주차]C언어 A반

[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
Sang Don Kim
 
김재석, C++ 게임 개발자를 위한 c# 활용 기법, 월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전...
김재석, C++ 게임 개발자를 위한 c# 활용 기법, 월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전...김재석, C++ 게임 개발자를 위한 c# 활용 기법, 월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전...
김재석, C++ 게임 개발자를 위한 c# 활용 기법, 월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전...
devCAT Studio, NEXON
 
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
Esun Kim
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
Ryan Park
 
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
Sang Don Kim
 
Api design for c++ 6장
Api design for c++ 6장Api design for c++ 6장
Api design for c++ 6장
Ji Hun Kim
 
[Gpg2권 조진현] 1.2 인라인 함수 대 매크로
[Gpg2권 조진현] 1.2 인라인 함수 대 매크로[Gpg2권 조진현] 1.2 인라인 함수 대 매크로
[Gpg2권 조진현] 1.2 인라인 함수 대 매크로
진현 조
 
Effective c++(chapter 5,6)
Effective c++(chapter 5,6)Effective c++(chapter 5,6)
Effective c++(chapter 5,6)
문익 장
 

Similar to [170327 1주차]C언어 A반 (20)

C언어 세미나 - 함수
C언어 세미나 - 함수C언어 세미나 - 함수
C언어 세미나 - 함수
 
DEVIEW-FULL-감독판.pptx
DEVIEW-FULL-감독판.pptxDEVIEW-FULL-감독판.pptx
DEVIEW-FULL-감독판.pptx
 
강의자료 2
강의자료 2강의자료 2
강의자료 2
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차
 
Windows Debugging Technique #2
Windows Debugging Technique #2Windows Debugging Technique #2
Windows Debugging Technique #2
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스
 
김재석, C++ 게임 개발자를 위한 c# 활용 기법, 월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전...
김재석, C++ 게임 개발자를 위한 c# 활용 기법, 월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전...김재석, C++ 게임 개발자를 위한 c# 활용 기법, 월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전...
김재석, C++ 게임 개발자를 위한 c# 활용 기법, 월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전...
 
6 function
6 function6 function
6 function
 
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
 
Hoons 닷넷 정기세미나
Hoons 닷넷 정기세미나Hoons 닷넷 정기세미나
Hoons 닷넷 정기세미나
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
 
Api design for c++ 6장
Api design for c++ 6장Api design for c++ 6장
Api design for c++ 6장
 
게임프로그래밍입문 3주차
게임프로그래밍입문 3주차게임프로그래밍입문 3주차
게임프로그래밍입문 3주차
 
[Gpg2권 조진현] 1.2 인라인 함수 대 매크로
[Gpg2권 조진현] 1.2 인라인 함수 대 매크로[Gpg2권 조진현] 1.2 인라인 함수 대 매크로
[Gpg2권 조진현] 1.2 인라인 함수 대 매크로
 
JVM_트러블슈팅.pdf
JVM_트러블슈팅.pdfJVM_트러블슈팅.pdf
JVM_트러블슈팅.pdf
 
Effective c++(chapter 5,6)
Effective c++(chapter 5,6)Effective c++(chapter 5,6)
Effective c++(chapter 5,6)
 

More from arundine (7)

Cryptol 수업자료
Cryptol 수업자료Cryptol 수업자료
Cryptol 수업자료
 
[170605 7주차]C언어 A반
[170605 7주차]C언어 A반[170605 7주차]C언어 A반
[170605 7주차]C언어 A반
 
[170529 6주차]C언어 A반
[170529 6주차]C언어 A반[170529 6주차]C언어 A반
[170529 6주차]C언어 A반
 
[170517 5주차]C언어 A반
[170517 5주차]C언어 A반[170517 5주차]C언어 A반
[170517 5주차]C언어 A반
 
[170510 4주차]C언어 A반
[170510 4주차]C언어 A반[170510 4주차]C언어 A반
[170510 4주차]C언어 A반
 
[170410 3주차]C언어 A반
[170410 3주차]C언어 A반[170410 3주차]C언어 A반
[170410 3주차]C언어 A반
 
[170403 2주차]C언어 A반
[170403 2주차]C언어 A반[170403 2주차]C언어 A반
[170403 2주차]C언어 A반
 

[170327 1주차]C언어 A반