SlideShare a Scribd company logo
1 of 43
Previously
Learning Goal
1. C/C++은 어떻게 발전을 했는가?
1주차 – Hello, World!
컴퓨터(Compute + er)
고속 계산을 위한 기계
프로그래밍 언어(Programming Language)
컴퓨터와 의사소통 할 수 있는 언어
1. C/C++은 어떻게 발전을 했는가?
2. VS에서는 디버깅과 컴파일을 어떻게 하는가?
3. 버전 관리 시스템이란 무엇인가?
1주차 – Hello, World!
버전 관리 시스템(Version Control System)
파일의 변경 사항을 기록하는 시스템
버전 관리 시스템(Version Control System)
• 무언가 잘못되었을 때 복구를 돕기 위하여
• 프로젝트 진행 중 과거의 어떤 시점으로 돌아갈 수 있게 하기 위하여
• 여러사람이 같은 프로젝트에 참여할 경우, 각자가 수정한 부분을 팀원 전체가
동기화하는 과정을 자동화하기 위하여
• 소스 코드의 변경 사항을 추적하기 위하여
• 소스 코드에서 누가 수정했는지 추적하기 위하여
• 대규모 수정 작업을 더욱 안전하게 진행하기 위하여
• 가지내기(Branch)로 프로젝트에 영향을 최소화 하면서 새로운 부분을 개발하기
위하여
• 접붙이기(Merge)로 검증이 끝난 후 새로이 개발된 부분을 본류(trunk)에 합치기
위하여
• 많은 오픈 소스 프로젝트에서 어떠한 형태로든 버전 관리를 사용하고 있으므로
• 코드의 특정 부분이 왜 그렇게 쓰여 졌는지 의미를 추적하기 위하여
1. C/C++은 어떻게 발전을 했는가?
2. VS에서는 디버깅과 컴파일을 어떻게 하는가?
3. 버전 관리 시스템이란 무엇인가?
4. 컴파일 과정은 어떻게 되는가?
5. 함수는 어떤 구조로 되어 있는가?
6. 표준 출력은 어떻게 하는가?
1주차 – Hello, World!
컴파일 과정(Compile Procedure)
디버깅(Debugging)
프로그램 상의 버그를 잡는 행위
레퍼런스 사이트
https://msdn.microsoft.com/ko-kr/library/cscc687y.aspx
http://ko.cppreference.com/w/c
http://forum.falinux.com/zbxe/index.php?mid=C_LIB
Hello, World!
1. 컴퓨터는 데이터를 어디에서 읽고 어디로 쓰는가?
2. 변수와 상수란?
3. 기호상수는 왜 쓰는가?
2주차 – 변수와 상수
Variable
Variable
value
Type Identifier;
int value; = 10;
10 0xffffffff
Constant
const Type Identifier = value;
Type const identifier = value;
Literal
100, 1.54, ‘A’, “Simple”
299792458
변하지 않는 객체
#define SPEED_OF_LIGHT 299792458
광속
1. 컴퓨터는 데이터를 어디에서 읽고 어디로 쓰는가?
2. 변수와 상수란?
3. 기호상수는 왜 쓰는가?
4. 객체에서 따져봐야 할 두 가지는?
5. 타입이란?
6. 선언과 정의의 차이란?
2주차 – 변수와 상수
Scope
An area where variable can be readable, writable
Global
Scope
Local
An area where variable can be readable, writable
Type
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
1. 캐스팅이란 무엇인가?
2. 변수와 상수 입출력은 어떻게 하는가?
3주차 – 변수와 상수
Casting
to convert a value into specific type
(type)variable
type(variable)
Safe
It’s safe to convert small size type into large size type
- Integer to Integer(Promotion)
- Integer to Floating point number
Casting
Unsafe(narrowing)
It’s not safe to convert large size type into small size type
- Integer to Integer
- Signed to Unsigned
- Floating point number to Integer
to convert a value into specific type
(type)variable
type(variable)
Printf( )
%[플래그][너비][.소수점][길이]형식자
scanf( )
공백문자, 비공백문자, %[*][너비][길이]형식자
2. 열거형을 사용할 수 있다
3. 논리 연산자를 응용할 수 있다
1. 프로그램에서 분기를 만들 수 있다
Condition Statement
A statement that gives bifurcations to the program
if
if (조건) 구문;
Condition Statement
A statement that gives bifurcations to the program
if
if (조건) 구문;
Condition Statement
A statement that gives bifurcations to the program
if
if (조건) 구문;
Condition Statement
A statement that gives bifurcations to the program
else
else 구문;
Condition Statement
A statement that gives bifurcations to the program
Conditional Ternary Operator(?:)
조건 ? 참일 때 구문 : 거짓일 때 구문;
Condition Statement
A statement that gives bifurcations to the program
Condition Statement
A statement that gives bifurcations to the program
Switch
switch (표현식)
case 상수표현식 : 구문;
[default : 구문; ]
Condition Statement
A statement that gives bifurcations to the program
Switch
Enumeration
Rule
• 중복된 상수 값이 포함될 수 있다
• 열거형 목록의 식별자는 표시 유형이 같은 동일한 범위에 있는
다른 식별자(다른 열거형 목록의 일반 변수 이름 및 식별자 포함)와
구별되어야 한다
• 첫번째 값을 지정하지 않으면, 0을 할당한다.
• 다음 값을 지정하지 않으면 이전 값에 +1이 된 값을 할당한다.
A set of named integer
enum tag{ TAG_INT, TAG_INT2, TAG_INT3 };
세 수
Basic study 4회차
Basic study 4회차

More Related Content

Similar to Basic study 4회차

타입스크립트 잘 사용하기
타입스크립트 잘 사용하기타입스크립트 잘 사용하기
타입스크립트 잘 사용하기SanghoYun
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)SangIn Choung
 
Configuration management best practices
Configuration management best practicesConfiguration management best practices
Configuration management best practicesHyunil Shin
 
ALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsTaeyoung Kim
 
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입Chanjin Park
 
당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니Lusain Kim
 
DevSecOps 그리고 협업 - GitLab
DevSecOps 그리고 협업 - GitLabDevSecOps 그리고 협업 - GitLab
DevSecOps 그리고 협업 - GitLabGuenjun Yoo
 
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)Ubuntu Korea Community
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016Amazon Web Services Korea
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기NAVER Engineering
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션SangIn Choung
 
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014NDOORS
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해Terry Cho
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsJuseok Kim
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)Tae Young Lee
 
Flutter로 글로벌앱 출시를 위한 꿀팁 - Droidknights2020
Flutter로 글로벌앱 출시를 위한 꿀팁 - Droidknights2020Flutter로 글로벌앱 출시를 위한 꿀팁 - Droidknights2020
Flutter로 글로벌앱 출시를 위한 꿀팁 - Droidknights2020Bansook Nam
 
[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성NAVER D2
 
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전Daniel Juyung Seo
 
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서Lee Sang-Ho
 

Similar to Basic study 4회차 (20)

타입스크립트 잘 사용하기
타입스크립트 잘 사용하기타입스크립트 잘 사용하기
타입스크립트 잘 사용하기
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
 
Configuration management best practices
Configuration management best practicesConfiguration management best practices
Configuration management best practices
 
ALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOps
 
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
 
당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니
 
DevSecOps 그리고 협업 - GitLab
DevSecOps 그리고 협업 - GitLabDevSecOps 그리고 협업 - GitLab
DevSecOps 그리고 협업 - GitLab
 
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOps
 
팀장 잔소리
팀장 잔소리팀장 잔소리
팀장 잔소리
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
 
Flutter로 글로벌앱 출시를 위한 꿀팁 - Droidknights2020
Flutter로 글로벌앱 출시를 위한 꿀팁 - Droidknights2020Flutter로 글로벌앱 출시를 위한 꿀팁 - Droidknights2020
Flutter로 글로벌앱 출시를 위한 꿀팁 - Droidknights2020
 
[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성
 
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
 
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
 

More from Seonmun Choi

Android Study Summary 2-2
Android Study Summary 2-2Android Study Summary 2-2
Android Study Summary 2-2Seonmun Choi
 
Item1 c++을 언어들의 연합체로 바라보는 안목은 필수
Item1 c++을 언어들의 연합체로 바라보는 안목은 필수Item1 c++을 언어들의 연합체로 바라보는 안목은 필수
Item1 c++을 언어들의 연합체로 바라보는 안목은 필수Seonmun Choi
 
핵심 API로 배우는 윈도우 프로그래밍 Chapter01 요약
핵심 API로 배우는 윈도우 프로그래밍 Chapter01 요약핵심 API로 배우는 윈도우 프로그래밍 Chapter01 요약
핵심 API로 배우는 윈도우 프로그래밍 Chapter01 요약Seonmun Choi
 
Android Study Summary 2-1
Android Study Summary 2-1Android Study Summary 2-1
Android Study Summary 2-1Seonmun Choi
 
Basic study 3회차
Basic study 3회차Basic study 3회차
Basic study 3회차Seonmun Choi
 
Basic study 2회차
Basic study 2회차Basic study 2회차
Basic study 2회차Seonmun Choi
 

More from Seonmun Choi (7)

Android Study Summary 2-2
Android Study Summary 2-2Android Study Summary 2-2
Android Study Summary 2-2
 
Item1 c++을 언어들의 연합체로 바라보는 안목은 필수
Item1 c++을 언어들의 연합체로 바라보는 안목은 필수Item1 c++을 언어들의 연합체로 바라보는 안목은 필수
Item1 c++을 언어들의 연합체로 바라보는 안목은 필수
 
Initializer list
Initializer listInitializer list
Initializer list
 
핵심 API로 배우는 윈도우 프로그래밍 Chapter01 요약
핵심 API로 배우는 윈도우 프로그래밍 Chapter01 요약핵심 API로 배우는 윈도우 프로그래밍 Chapter01 요약
핵심 API로 배우는 윈도우 프로그래밍 Chapter01 요약
 
Android Study Summary 2-1
Android Study Summary 2-1Android Study Summary 2-1
Android Study Summary 2-1
 
Basic study 3회차
Basic study 3회차Basic study 3회차
Basic study 3회차
 
Basic study 2회차
Basic study 2회차Basic study 2회차
Basic study 2회차
 

Basic study 4회차

Editor's Notes

  1. 컴퓨터(compute + er)는 본래 어원에서 알 수 있다시피 고속 계산을 위한 용도로 발전되었다. 현대 컴퓨터의 개념을 최초로 제시한 이는 찰스 배비지였는데, 그는 오늘날의 컴퓨터와 개념적으로 같은 기계인 해석기관을 설계하였다. 후에 천공카드 시스템이 개발되어 프로그래밍을 이용하게 된다.
  2. 프로그래밍 언어는 컴퓨터와 의사소통할 수 있는 언어이다. 가장 원시적인 언어는 기계어이며, 이에 대응하는 어셈블리어, 그리고 고급 수준 프로그래밍 언어인 코볼, 포트란, C 등이 나왔다.
  3. 버전 관리 시스템이란 파일의 변화를 시간에 따라 기록하여 과거 특정 시점의 버전을 다시 불러올 수 있는 시스템이다. 즉, 어제 했던 내용으로 돌릴 수 있는 시스템이다. 중앙 집중 시스템과 분산 버전 관리 시스템으로 나뉘며, 여러가지 종류가 있다.
  4. 버전 관리 시스템이란 파일의 변화를 시간에 따라 기록하여 과거 특정 시점의 버전을 다시 불러올 수 있는 시스템이다. 즉, 어제 했던 내용으로 돌릴 수 있는 시스템이다. 중앙 집중 시스템과 분산 버전 관리 시스템으로 나뉘며, 여러가지 종류가 있다.
  5. 그럼 정확히 컴파일이 어떻게 일어나는지 알아보자. 컴파일러(compiler)는 우리가 작성한 소스 코드를 컴퓨터가 읽을 수 있는 형태로 번역(compile)한다. 여기서는 main.cpp이 컴파일 될 것이다. 그리고, 링커(linker)가 각 소스코드 간의 의존성을 파악하고, 결합하는 역할을 한다. 그렇게 최종적으로 실행 파일이 나오게 된다.
  6. 이 같은 것을 주석이라고 한다. 컴퓨터는 컴파일 시 주석을 무시한다. 주석은 프로그래머에게 코드 내면에 숨겨져 있는 것을 설명하는 데 아주 유용하게 쓰인다. 이와 같은 스타일 말고도 /* */을 이용한 주석도 있다. #include는 전처리기 지시어이며, 전처리기란, 컴파일 전에 실행되는 것들을 말한다. 단어를 보면 알 수 있듯 무언가를 포함하게 하는 것인데, 헤더 파일을 포함한다. 헤더(header) 파일은 소스 코드 파일의 일종으로 함수, 형의 선언들이 들어가 있다. <>는 라이브러리 헤더를 포함하는 것이다.
  7. 변수란? RAM
  8. 왜 초기화하는 습관을 들어야 하냐면 이 쓰레기값을 행여나 어디서 읽게 되면 프로그램이 미정의 동작(undefined behavior)을 일으키게 되기 때문이다. 변수 사용시엔 꼭 초기화하자. Lvalue, rvalue
  9. C는 데니스 리치가 만든 프로그래밍 언어이다. 어셈블리어로 변환되어 속도가 매우 빠르고, 오늘날 수많은 언어들의 근간이 되는 언어이다. 메모리를 직접 제어할 수 있다는 것이 가장 큰 특징인데, 이로 인해 C언어는 고수준부터 저수준까지 접근할 수 있어 아직도 많이 쓰이는 언어 중 하나이다. C++는 비야네 스트롭스트룹이 C언어에서 파생시켜 만든 언어로서, 객체지향 프로그래밍의 개념이 추가되었다.
  10. static
  11. MSB, 리터럴 접두어, 접미어
  12. 변수란? RAM
  13. 변수란? RAM
  14. 왜 초기화하는 습관을 들어야 하냐면 이 쓰레기값을 행여나 어디서 읽게 되면 프로그램이 미정의 동작(undefined behavior)을 일으키게 되기 때문이다. 변수 사용시엔 꼭 초기화하자. Lvalue, rvalue
  15. 왜 초기화하는 습관을 들어야 하냐면 이 쓰레기값을 행여나 어디서 읽게 되면 프로그램이 미정의 동작(undefined behavior)을 일으키게 되기 때문이다. 변수 사용시엔 꼭 초기화하자. Lvalue, rvalue
  16. 변수란? RAM
  17. 변수란? RAM
  18. 변수란? RAM
  19. 변수란? RAM
  20. 변수란? RAM
  21. 변수란? RAM
  22. 변수란? RAM
  23. 변수란? RAM
  24. FALL_THROUGH
  25. FALL_THROUGH
  26. 변수란? RAM