SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
3. 조건문, 반복문, 네임스페이스
차 례
• 조건문 if
• 상수 조건문 switch~case
• 반복문
• 반복문의 중복
• 코드 범위와 네임 스페이스
2/25
조건문 IF
• 조건이 참일 때 주어진 내용 실행
• 문제 : 정수형 변수의 값이 100보다 크면 "100보다 크다."
라고 화면에 출력한다.
3/25
if (조건)
{
조건이 참일 때 수행할 문장;
}
①정수형 변수 a를 선언하고 123으로 초기화한다.
②"변수 a의 값이 100보다 크면 "100보다 크다."라고
출력한다.
int a;
cout << "정수 입력 : " ;
cin >> a;
if (a>100)
cout << a << "는 100보다 크다" << endl;
cout << "즐거운 C++ 프로그램을 종료합니다.!!!" << endl;
int a;
cout << "정수 입력 : " ;
cin >> a;
if (a>100)
{
cout << "a의 값 : " << a << endl;
cout << a << "는 100보다 크다" << endl;
}
cout << "즐거운 C++ 프로그램을 종료합니다.!!!" << endl;
4/25
IF~ELSE
• 조건이 참일 때, 거짓일 때 각 내용 실행
5/25
if (조건)
{
조건이 참일 때 수행할 문장;
}
else
{
조건이 거짓일 때 수행할 문장;
}
문제) 정수를 입력해서 입력한 정수가 100보다 크면 “100
보다 크다”를 출력하고 그렇지 않으면 “100보다 작다”를
출력하자.
조건이 참일 때 실행할 내용
조건이 거짓일 때 실행할 내용
IF~ELSE 실습
• 소스 3-4
6/25
int a;
cout << "정수 입력 : " ;
cin >> a;
if (a>100)
cout <<"100보다 크다" << endl;
else
cout << "100보다 작다" << endl;
정수 입력 : 200
100보다 크다
정수 입력 : 90
100보다 작다
정수 입력 : 100
100보다 작다
IF ~ELSE IF ~ … ELSE
• 주어진 조건이 여러 단계로 이어질 때
7/25
if (조건1)
조건1이 참일 때 실행;
else if (조건2)
조건2가 참일 때 실행;
else if (조건3)
조건3이 참일 때 실행;
…………………………
else
위의 조건이 모두 거짓일 때 실행;
문제) 점수를 입력해서 점수가 100점과 90점 사이이면 “당신의 성적은 A입니다.”를 출
력하고, 89점과 80점 사이이면 “당신의 성적은 B입니다.”를 출력하고, 점수가 79점에서
70점 사이이면 “당신의 성적은 C입니다.”를 , 점수가 69점에서 60점 사이이면 “당신의
성적은 D입니다.”를 출력하고, 59점 이하인 경우에는 “당신의 점수는 F입니다.”를 출력
하자.
int jumsu;
cout << "점수 입력 : " ;
cin >> jumsu;
if (jumsu<=100 && jumsu>=90)
cout << "당신의 성적은 A입니다." << endl;
else if (jumsu<=89 && jumsu>=80)
cout << "당신의 성적은 B입니다." << endl;
else if (jumsu<=79 && jumsu>=70)
cout << "당신의 성적은 C입니다." << endl;
else if (jumsu<=69 && jumsu>=60)
cout << "당신의 성적은 D입니다." << endl;
else
cout << "당신의 성적은 F입니다." << endl;
8/25
상수 조건문 SWITCH~CASE
• 조건 결과가 여러 상수로 판단될 때 각 상수 사례에 대한 내용
실행
• ‘A’
• ‘ ‘ 는 캐릭터화
• 아스키 문자 값 65
9/25
switch (조건문) {
case 조건결과1 :
조건결과가 1일 때 수행할 내용;
case 조건결과2 :
조건결과가 2일 때 수행할 내용;
……………………..
default :
모든 조건이 맞지 않을 경우 수행할 내용;
}
int num;
cout << "숫자입력: ";
cin >> num;
switch(num)
{
case 1:
cout <<"1의값이입력되었습니다." << endl;
cout <<"************************" << endl;
case 2:
cout <<"2의값이입력되었습니다." << endl;
cout <<"************************" << endl;
default:
cout <<"1 또는2가아닌값이입력되었습니다." << endl;
cout <<"************************" << endl;
}
숫자 입력 : 1
1의 값이 입력되었습니다.
************************
2의 값이 입력되었습니다.
************************
1 또는 2가 아닌 값이 입력되었습니다.
************************
숫자 입력 : 2
2의 값이 입력되었습니다.
************************
1 또는 2가 아닌 값이 입력되었습니다.
************************
10/25
- 수행할 문장이 한 줄이든 그 이상이든 범위를 지정하지 않아도 사용할 수 있다.
case 문이 조건별로 구분되어 있기 때문.
- 실행속도도 if 문보다 빠르다!
- a long sequence of if-else statements is that the time taken to
perform (jump table)
- No branch prediction
- Jump table
- Jump tables are used when there are a number of cases (e.g., four or
more) and they span a small range of values.
11/25
12/25
13/25
Tool Interface Standard (TIS) Executable and Linking Format (ELF)
Specification
BREAK
• 중괄호로 표시한 명령의 범위로부터 벗어나게 함
14/25
switch(num)
{
case 1:
cout <<"1의값이입력되었습니다." << endl;
cout <<"************************" << endl;
break;
case 2:
cout <<"2의값이입력되었습니다." << endl;
cout <<"************************" << endl;
break;
default:
cout <<"1 또는2가아닌값이입력되었습니다." << endl;
cout <<"************************" << endl;
}
숫자 입력 : 1
1의 값이 입력되었습니다.
************************
숫자 입력 : 2
2의 값이 입력되었습니다.
************************
cout << "점수입력: ";
cin >> score;
switch(score/10)
{
case 10:
case 9 :
cout << "당신의성적은A입니다." << endl;
break;
case 8 :
cout << "당신의성적은B입니다." << endl;
break;
case 7:
cout << "당신의성적은C입니다." << endl;
break;
case 6 :
cout << "당신의성적은D입니다." << endl;
break;
case 5 :
case 4 :
case 3 :
case 2 :
case 1 :
case 0 :
cout << "당신의성적은F입니다." << endl;
break;
default :
cout <<"점수를잘못입력했습니다." << endl;
}
15/25
반복문 - FOR
• for 문
• 반복문 for 실행 순서
① 초기화를 실행한다.
② 조건문을 실행한다. 조건이 참이면 ③을 실행하고,
거짓이면 반복문을 종료한다. (반복문 밖으로 제
어가 이동됨)
③ 반복할 내용을 실행한다.
④ 증감문을 실행한 후 ②를 실행한다.
16/25
for (초기화 ; 조건문 ; 증감문 )
반복할 내용;
소스 3-12
17/25
#include <iostream>
using namespace std;
int main()
{
int i;
for (i=1; i<=5; i++)
cout << "i=" << i << endl;
cout << “반복문 for 이후 i의 값 : “ << i << endl;
return 0;
}
조건문 부분이 생략된 경우 무조건 참으로 간주!
i=1
for ( ; i<=5; i++)
cout ……………
i=1
for ( ; i<=5; )
{
cout …………
i++;
}
반복문 - WHILE
• while 문 – 조건문이 참이면 수행
18/25
while (조건문)
반복할 내용;
int i;
i=1;
while (i<=5)
{
cout << "i=" << i << endl;
i++;
}
cout << "반복문while 이후i의값: " << i << endl;
반복문 - DO~WHILE
• do~while : 적어도 한번은 실행하고 주어진 조건이 참이
면 다시 반복함
19/25
do {
반복할 내용;
} while (조건문) ;
int score;
do {
cout << "점수입력: " ;
cin >> score;
} while (score>100 || score<0);
cout << "당신이 입력한 점수는" << score << "입니다. " << endl;
CONTINUE
• 반복 범위 처음으로 실행 제어 이동
20/25
int i;
for (i=1; i<10; i++)
{
if (i%2 == 0)
continue;
cout << "i= " << i << endl;
}
반복문의 중복
• 반복문 내에 또 다른 반복문을 포함
21/25
int i, j;
for (i=1; i<=2; i++)
{
for (j=1; j<=3; j++)
{
cout << "i=" << i << " " ;
cout << "j=" << j << endl;
}
cout << "*******************" << endl;
}
소스 3-19
• 문제 : 정수를 입력, 입력한 수의 팩토리알 계산하기
• 필요한 변수
• 정수, 팩토리알 계산을 위해 1부터 입력한 수까지 변환된 값을 나타낼
변수, 팩토리알 결과값을 저장한 변수
• 주의점 : 입력한 값이 양수이어야 함 (do~while 사용하면 편리
함!!!)
• 입력한 값을 이용해서 반복문 실행하기!!!
22/25
프로그램 순서
1. 정수형 변수 a와 i를 선언한다.
2. 계승 결괏값을 저장할 정수형 변수 r을 선언하
고 1로 초기화한다.
3. 문자형 변수 flag를 선언하고 'y'로 초기화한다.
4. 화면에 '정수 입력: ' 메시지를 표시하고, 변수 a
에 정수를 입력한다. 이때 입력한 정수가 양수
가 아니면 "양수를 입력하세요."라는 메시지를
출력하고 다시 입력 내용을 반복한다.
5. 1부터 입력한 수까지 차례로 값을 곱하여 r에
저장한다.
6. 결괏값 r을 출력한다.
23/25
직접 코딩해 보세요!!!
코드 범위와 네임스페이스
• 범위 표시
• 중괄호 {} 이용
• 함수 main() 블록
• 반복문 블록
• 범위 내에 선언한
변수는 범위 내에서
만 인식됨
(소스3-21)
• 범위에서 선언된 변수와
같은 변수를 선언하면
안쪽 변수가 우선
- 변수이름은 의미있게!
24/25
main()
- 프로그램 실행에서 시작과 끝을 알리는 함수
- 작성한 프로그램을 실행 파일로 만들 때 반드시 하나의 main()이 필요
- 프로그램이 처음 시작 될 때 운영 체제에 의해 가장 먼저 호출 됨
- main()도 역시 일반 함수와 같은 사용자 정의 함수
25/25
#include <iostream>
using namespace std;
int main()
{
int a=100;
cout << "main( ) 범위입니다. " << endl;
for (int i=1; i<3; i++)
{
cout << "반복문 for의 범위입니다. " << endl;
cout << "i= " << i << endl;
cout << “a=“ << a << endl; //에러없음!!!
}
cout << “반복문 for를 마친 후 i의 값은 : " << i << endl; //에러!!!
cout << "프로그램을 종료합니다." << endl;
return 0;
}
26/25
네임스페이스 1
• 사용이유??
• 서로 다른 범위에 선언된 변수 그리고 같은 이름으로 선언된 변수를 함께 사용할 방
법
• 네임스페이스 : 범위의 이름 영역
• 다른 범위의 멤버를 참조할 경우 해당 범위의 이름을 이용한 소속을 알려
야 함!!!
• 네임스페이스 정의
• 다른 네임스페이스 멤버 참조 : 이름::멤버(:: 범위연산자; scoping
operator)
• 네임스페이스 멤버에는 변수뿐만 아니라 함수도 있기 때문에 네임스페
이스 사용 위치는 함수 내에서가 아니라 파일의 선언부에서 사용한다.
27/25
namespace 이름
{
프로그램 내용~~~(변수나 함수)
}
소스 3-23
namespace NS_1 {
int a=200;
}
int main()
{
int a=100;
cout << "main( ) 범위입니다. " << endl;
for (int i=1; i<3; i++)
{
cout << "반복문 for의 범위입니다. " << endl;
cout << "i= " << i << endl;
cout << "namespace NS_1의 a=" << NS_1::a << endl;
cout << "a=" << a << endl;
}
cout << "namespace NS_1의a=" << NS_1::a << endl;
cout << "a=" << a << endl;
……………………………………….
28/25
네임스페이스 2
• 정의된 네임스페이스의 멤버 사용이 빈번한 경우 네임스
페이스 이름 생략하고 사용하려면 using 으로 표기하기
• 다른 네임스페이스에 같은 이름의 필드가 있을 때는 주의!
29/25
using namespace [네임스페이스이름];
#include <iostream>
using namespace std;
int main()
{
cout << “즐거운 수업!!! << endl;
return 0;
}
#include <iostream>
//using namespace std;
int main()
{
std::cout << “즐거운 수업!!! << std::endl;
return 0;
}

Weitere ähnliche Inhalte

Was ist angesagt?

파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409Yong Joon Moon
 
Es2015 Simple Overview
Es2015 Simple OverviewEs2015 Simple Overview
Es2015 Simple OverviewKim Hunmin
 
React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기Kim Hunmin
 
게임프로그래밍입문 4주차
게임프로그래밍입문 4주차게임프로그래밍입문 4주차
게임프로그래밍입문 4주차Yeonah Ki
 
게임프로그래밍입문 3주차
게임프로그래밍입문 3주차게임프로그래밍입문 3주차
게임프로그래밍입문 3주차Yeonah Ki
 
게임프로그래밍입문 5주차
게임프로그래밍입문 5주차게임프로그래밍입문 5주차
게임프로그래밍입문 5주차Yeonah Ki
 
02장 자료형과 연산자
02장 자료형과 연산자02장 자료형과 연산자
02장 자료형과 연산자웅식 전
 
파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229Yong Joon Moon
 
C수업자료
C수업자료C수업자료
C수업자료koominsu
 
Haskell study 10
Haskell study 10Haskell study 10
Haskell study 10Nam Hyeonuk
 

Was ist angesagt? (10)

파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409
 
Es2015 Simple Overview
Es2015 Simple OverviewEs2015 Simple Overview
Es2015 Simple Overview
 
React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기
 
게임프로그래밍입문 4주차
게임프로그래밍입문 4주차게임프로그래밍입문 4주차
게임프로그래밍입문 4주차
 
게임프로그래밍입문 3주차
게임프로그래밍입문 3주차게임프로그래밍입문 3주차
게임프로그래밍입문 3주차
 
게임프로그래밍입문 5주차
게임프로그래밍입문 5주차게임프로그래밍입문 5주차
게임프로그래밍입문 5주차
 
02장 자료형과 연산자
02장 자료형과 연산자02장 자료형과 연산자
02장 자료형과 연산자
 
파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229
 
C수업자료
C수업자료C수업자료
C수업자료
 
Haskell study 10
Haskell study 10Haskell study 10
Haskell study 10
 

Andere mochten auch

13. dynamic allocation
13. dynamic allocation13. dynamic allocation
13. dynamic allocation웅식 전
 
5 1. character processing
5 1. character processing5 1. character processing
5 1. character processing웅식 전
 
12 2. dynamic allocation
12 2. dynamic allocation12 2. dynamic allocation
12 2. dynamic allocation웅식 전
 
3 2. if statement
3 2. if statement3 2. if statement
3 2. if statement웅식 전
 
15 3. modulization
15 3. modulization15 3. modulization
15 3. modulization웅식 전
 
13th chapter12 slide
13th chapter12 slide13th chapter12 slide
13th chapter12 slide웅식 전
 
9. pointer, pointer & function
9. pointer, pointer & function9. pointer, pointer & function
9. pointer, pointer & function웅식 전
 
9 object class
9 object class9 object class
9 object class웅식 전
 
구름 기본 소개자료
구름 기본 소개자료구름 기본 소개자료
구름 기본 소개자료웅식 전
 
3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib웅식 전
 
2 3. standard io
2 3. standard io2 3. standard io
2 3. standard io웅식 전
 
Week12 chapter11
Week12 chapter11 Week12 chapter11
Week12 chapter11 웅식 전
 
15 1. enumeration, typedef
15 1. enumeration, typedef15 1. enumeration, typedef
15 1. enumeration, typedef웅식 전
 
11 1. multi-dimensional array eng
11 1. multi-dimensional array eng11 1. multi-dimensional array eng
11 1. multi-dimensional array eng웅식 전
 
Goorm ide 소개 슬라이드(교육용 버전)
Goorm ide 소개 슬라이드(교육용 버전)Goorm ide 소개 슬라이드(교육용 버전)
Goorm ide 소개 슬라이드(교육용 버전)웅식 전
 

Andere mochten auch (18)

13. dynamic allocation
13. dynamic allocation13. dynamic allocation
13. dynamic allocation
 
5 1. character processing
5 1. character processing5 1. character processing
5 1. character processing
 
12 2. dynamic allocation
12 2. dynamic allocation12 2. dynamic allocation
12 2. dynamic allocation
 
3 2. if statement
3 2. if statement3 2. if statement
3 2. if statement
 
15 3. modulization
15 3. modulization15 3. modulization
15 3. modulization
 
13th chapter12 slide
13th chapter12 slide13th chapter12 slide
13th chapter12 slide
 
9. pointer, pointer & function
9. pointer, pointer & function9. pointer, pointer & function
9. pointer, pointer & function
 
13. structure
13. structure13. structure
13. structure
 
4. loop
4. loop4. loop
4. loop
 
9 object class
9 object class9 object class
9 object class
 
구름 기본 소개자료
구름 기본 소개자료구름 기본 소개자료
구름 기본 소개자료
 
3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib
 
10th
10th10th
10th
 
2 3. standard io
2 3. standard io2 3. standard io
2 3. standard io
 
Week12 chapter11
Week12 chapter11 Week12 chapter11
Week12 chapter11
 
15 1. enumeration, typedef
15 1. enumeration, typedef15 1. enumeration, typedef
15 1. enumeration, typedef
 
11 1. multi-dimensional array eng
11 1. multi-dimensional array eng11 1. multi-dimensional array eng
11 1. multi-dimensional array eng
 
Goorm ide 소개 슬라이드(교육용 버전)
Goorm ide 소개 슬라이드(교육용 버전)Goorm ide 소개 슬라이드(교육용 버전)
Goorm ide 소개 슬라이드(교육용 버전)
 

Ähnlich wie 03장 조건문반복문네임스페이스

RNC C++ lecture_2 Variable DataType
RNC C++ lecture_2 Variable DataTypeRNC C++ lecture_2 Variable DataType
RNC C++ lecture_2 Variable DataTypeitlockit
 
Startup JavaScript 3 - 조건문, 반복문, 예외처리
Startup JavaScript 3 - 조건문, 반복문, 예외처리Startup JavaScript 3 - 조건문, 반복문, 예외처리
Startup JavaScript 3 - 조건문, 반복문, 예외처리Circulus
 
RNC C++ lecture_4 While, For
RNC C++ lecture_4 While, ForRNC C++ lecture_4 While, For
RNC C++ lecture_4 While, Foritlockit
 
14장 - 15장 예외처리, 템플릿
14장 - 15장 예외처리, 템플릿14장 - 15장 예외처리, 템플릿
14장 - 15장 예외처리, 템플릿유석 남
 
RNC C++ lecture_2 operator, if
RNC C++ lecture_2 operator, ifRNC C++ lecture_2 operator, if
RNC C++ lecture_2 operator, ifitlockit
 
[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)NAVER D2
 
2 1. variables & data types
2 1. variables & data types2 1. variables & data types
2 1. variables & data types웅식 전
 
[C++]2 variables andselectionstatement
[C++]2 variables andselectionstatement[C++]2 variables andselectionstatement
[C++]2 variables andselectionstatementJunyoung Jung
 

Ähnlich wie 03장 조건문반복문네임스페이스 (11)

RNC C++ lecture_2 Variable DataType
RNC C++ lecture_2 Variable DataTypeRNC C++ lecture_2 Variable DataType
RNC C++ lecture_2 Variable DataType
 
06장 함수
06장 함수06장 함수
06장 함수
 
Startup JavaScript 3 - 조건문, 반복문, 예외처리
Startup JavaScript 3 - 조건문, 반복문, 예외처리Startup JavaScript 3 - 조건문, 반복문, 예외처리
Startup JavaScript 3 - 조건문, 반복문, 예외처리
 
RNC C++ lecture_4 While, For
RNC C++ lecture_4 While, ForRNC C++ lecture_4 While, For
RNC C++ lecture_4 While, For
 
14장 - 15장 예외처리, 템플릿
14장 - 15장 예외처리, 템플릿14장 - 15장 예외처리, 템플릿
14장 - 15장 예외처리, 템플릿
 
RNC C++ lecture_2 operator, if
RNC C++ lecture_2 operator, ifRNC C++ lecture_2 operator, if
RNC C++ lecture_2 operator, if
 
6 function
6 function6 function
6 function
 
[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)
 
HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
 
2 1. variables & data types
2 1. variables & data types2 1. variables & data types
2 1. variables & data types
 
[C++]2 variables andselectionstatement
[C++]2 variables andselectionstatement[C++]2 variables andselectionstatement
[C++]2 variables andselectionstatement
 

Mehr von 웅식 전

15 3. modulization
15 3. modulization15 3. modulization
15 3. modulization웅식 전
 
15 2. arguement passing to main
15 2. arguement passing to main15 2. arguement passing to main
15 2. arguement passing to main웅식 전
 
12 1. multi-dimensional array
12 1. multi-dimensional array12 1. multi-dimensional array
12 1. multi-dimensional array웅식 전
 
11. array & pointer
11. array & pointer11. array & pointer
11. array & pointer웅식 전
 
10. pointer & function
10. pointer & function10. pointer & function
10. pointer & function웅식 전
 
7. variable scope rule,-storage_class
7. variable scope rule,-storage_class7. variable scope rule,-storage_class
7. variable scope rule,-storage_class웅식 전
 
5 2. string processing
5 2. string processing5 2. string processing
5 2. string processing웅식 전
 
3 2. if statement
3 2. if statement3 2. if statement
3 2. if statement웅식 전
 
3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib웅식 전
 
2 2. operators
2 2. operators2 2. operators
2 2. operators웅식 전
 
Goorm ide 교육용버전 for skku(학생)
Goorm ide 교육용버전 for skku(학생)Goorm ide 교육용버전 for skku(학생)
Goorm ide 교육용버전 for skku(학생)웅식 전
 
10장 문자열클래스와파일클래스
10장 문자열클래스와파일클래스10장 문자열클래스와파일클래스
10장 문자열클래스와파일클래스웅식 전
 
Goorm ide open beta
Goorm ide open betaGoorm ide open beta
Goorm ide open beta웅식 전
 

Mehr von 웅식 전 (17)

15 3. modulization
15 3. modulization15 3. modulization
15 3. modulization
 
15 2. arguement passing to main
15 2. arguement passing to main15 2. arguement passing to main
15 2. arguement passing to main
 
14. fiile io
14. fiile io14. fiile io
14. fiile io
 
12 1. multi-dimensional array
12 1. multi-dimensional array12 1. multi-dimensional array
12 1. multi-dimensional array
 
11. array & pointer
11. array & pointer11. array & pointer
11. array & pointer
 
10. pointer & function
10. pointer & function10. pointer & function
10. pointer & function
 
9. pointer
9. pointer9. pointer
9. pointer
 
7. variable scope rule,-storage_class
7. variable scope rule,-storage_class7. variable scope rule,-storage_class
7. variable scope rule,-storage_class
 
6. function
6. function6. function
6. function
 
5 2. string processing
5 2. string processing5 2. string processing
5 2. string processing
 
3 2. if statement
3 2. if statement3 2. if statement
3 2. if statement
 
3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib
 
2 2. operators
2 2. operators2 2. operators
2 2. operators
 
Goorm ide 교육용버전 for skku(학생)
Goorm ide 교육용버전 for skku(학생)Goorm ide 교육용버전 for skku(학생)
Goorm ide 교육용버전 for skku(학생)
 
W14 chap13
W14 chap13W14 chap13
W14 chap13
 
10장 문자열클래스와파일클래스
10장 문자열클래스와파일클래스10장 문자열클래스와파일클래스
10장 문자열클래스와파일클래스
 
Goorm ide open beta
Goorm ide open betaGoorm ide open beta
Goorm ide open beta
 

03장 조건문반복문네임스페이스

  • 1. 3. 조건문, 반복문, 네임스페이스
  • 2. 차 례 • 조건문 if • 상수 조건문 switch~case • 반복문 • 반복문의 중복 • 코드 범위와 네임 스페이스 2/25
  • 3. 조건문 IF • 조건이 참일 때 주어진 내용 실행 • 문제 : 정수형 변수의 값이 100보다 크면 "100보다 크다." 라고 화면에 출력한다. 3/25 if (조건) { 조건이 참일 때 수행할 문장; } ①정수형 변수 a를 선언하고 123으로 초기화한다. ②"변수 a의 값이 100보다 크면 "100보다 크다."라고 출력한다.
  • 4. int a; cout << "정수 입력 : " ; cin >> a; if (a>100) cout << a << "는 100보다 크다" << endl; cout << "즐거운 C++ 프로그램을 종료합니다.!!!" << endl; int a; cout << "정수 입력 : " ; cin >> a; if (a>100) { cout << "a의 값 : " << a << endl; cout << a << "는 100보다 크다" << endl; } cout << "즐거운 C++ 프로그램을 종료합니다.!!!" << endl; 4/25
  • 5. IF~ELSE • 조건이 참일 때, 거짓일 때 각 내용 실행 5/25 if (조건) { 조건이 참일 때 수행할 문장; } else { 조건이 거짓일 때 수행할 문장; } 문제) 정수를 입력해서 입력한 정수가 100보다 크면 “100 보다 크다”를 출력하고 그렇지 않으면 “100보다 작다”를 출력하자. 조건이 참일 때 실행할 내용 조건이 거짓일 때 실행할 내용
  • 6. IF~ELSE 실습 • 소스 3-4 6/25 int a; cout << "정수 입력 : " ; cin >> a; if (a>100) cout <<"100보다 크다" << endl; else cout << "100보다 작다" << endl; 정수 입력 : 200 100보다 크다 정수 입력 : 90 100보다 작다 정수 입력 : 100 100보다 작다
  • 7. IF ~ELSE IF ~ … ELSE • 주어진 조건이 여러 단계로 이어질 때 7/25 if (조건1) 조건1이 참일 때 실행; else if (조건2) 조건2가 참일 때 실행; else if (조건3) 조건3이 참일 때 실행; ………………………… else 위의 조건이 모두 거짓일 때 실행;
  • 8. 문제) 점수를 입력해서 점수가 100점과 90점 사이이면 “당신의 성적은 A입니다.”를 출 력하고, 89점과 80점 사이이면 “당신의 성적은 B입니다.”를 출력하고, 점수가 79점에서 70점 사이이면 “당신의 성적은 C입니다.”를 , 점수가 69점에서 60점 사이이면 “당신의 성적은 D입니다.”를 출력하고, 59점 이하인 경우에는 “당신의 점수는 F입니다.”를 출력 하자. int jumsu; cout << "점수 입력 : " ; cin >> jumsu; if (jumsu<=100 && jumsu>=90) cout << "당신의 성적은 A입니다." << endl; else if (jumsu<=89 && jumsu>=80) cout << "당신의 성적은 B입니다." << endl; else if (jumsu<=79 && jumsu>=70) cout << "당신의 성적은 C입니다." << endl; else if (jumsu<=69 && jumsu>=60) cout << "당신의 성적은 D입니다." << endl; else cout << "당신의 성적은 F입니다." << endl; 8/25
  • 9. 상수 조건문 SWITCH~CASE • 조건 결과가 여러 상수로 판단될 때 각 상수 사례에 대한 내용 실행 • ‘A’ • ‘ ‘ 는 캐릭터화 • 아스키 문자 값 65 9/25 switch (조건문) { case 조건결과1 : 조건결과가 1일 때 수행할 내용; case 조건결과2 : 조건결과가 2일 때 수행할 내용; …………………….. default : 모든 조건이 맞지 않을 경우 수행할 내용; }
  • 10. int num; cout << "숫자입력: "; cin >> num; switch(num) { case 1: cout <<"1의값이입력되었습니다." << endl; cout <<"************************" << endl; case 2: cout <<"2의값이입력되었습니다." << endl; cout <<"************************" << endl; default: cout <<"1 또는2가아닌값이입력되었습니다." << endl; cout <<"************************" << endl; } 숫자 입력 : 1 1의 값이 입력되었습니다. ************************ 2의 값이 입력되었습니다. ************************ 1 또는 2가 아닌 값이 입력되었습니다. ************************ 숫자 입력 : 2 2의 값이 입력되었습니다. ************************ 1 또는 2가 아닌 값이 입력되었습니다. ************************ 10/25
  • 11. - 수행할 문장이 한 줄이든 그 이상이든 범위를 지정하지 않아도 사용할 수 있다. case 문이 조건별로 구분되어 있기 때문. - 실행속도도 if 문보다 빠르다! - a long sequence of if-else statements is that the time taken to perform (jump table) - No branch prediction - Jump table - Jump tables are used when there are a number of cases (e.g., four or more) and they span a small range of values. 11/25
  • 12. 12/25
  • 13. 13/25 Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification
  • 14. BREAK • 중괄호로 표시한 명령의 범위로부터 벗어나게 함 14/25 switch(num) { case 1: cout <<"1의값이입력되었습니다." << endl; cout <<"************************" << endl; break; case 2: cout <<"2의값이입력되었습니다." << endl; cout <<"************************" << endl; break; default: cout <<"1 또는2가아닌값이입력되었습니다." << endl; cout <<"************************" << endl; } 숫자 입력 : 1 1의 값이 입력되었습니다. ************************ 숫자 입력 : 2 2의 값이 입력되었습니다. ************************
  • 15. cout << "점수입력: "; cin >> score; switch(score/10) { case 10: case 9 : cout << "당신의성적은A입니다." << endl; break; case 8 : cout << "당신의성적은B입니다." << endl; break; case 7: cout << "당신의성적은C입니다." << endl; break; case 6 : cout << "당신의성적은D입니다." << endl; break; case 5 : case 4 : case 3 : case 2 : case 1 : case 0 : cout << "당신의성적은F입니다." << endl; break; default : cout <<"점수를잘못입력했습니다." << endl; } 15/25
  • 16. 반복문 - FOR • for 문 • 반복문 for 실행 순서 ① 초기화를 실행한다. ② 조건문을 실행한다. 조건이 참이면 ③을 실행하고, 거짓이면 반복문을 종료한다. (반복문 밖으로 제 어가 이동됨) ③ 반복할 내용을 실행한다. ④ 증감문을 실행한 후 ②를 실행한다. 16/25 for (초기화 ; 조건문 ; 증감문 ) 반복할 내용;
  • 17. 소스 3-12 17/25 #include <iostream> using namespace std; int main() { int i; for (i=1; i<=5; i++) cout << "i=" << i << endl; cout << “반복문 for 이후 i의 값 : “ << i << endl; return 0; } 조건문 부분이 생략된 경우 무조건 참으로 간주! i=1 for ( ; i<=5; i++) cout …………… i=1 for ( ; i<=5; ) { cout ………… i++; }
  • 18. 반복문 - WHILE • while 문 – 조건문이 참이면 수행 18/25 while (조건문) 반복할 내용; int i; i=1; while (i<=5) { cout << "i=" << i << endl; i++; } cout << "반복문while 이후i의값: " << i << endl;
  • 19. 반복문 - DO~WHILE • do~while : 적어도 한번은 실행하고 주어진 조건이 참이 면 다시 반복함 19/25 do { 반복할 내용; } while (조건문) ; int score; do { cout << "점수입력: " ; cin >> score; } while (score>100 || score<0); cout << "당신이 입력한 점수는" << score << "입니다. " << endl;
  • 20. CONTINUE • 반복 범위 처음으로 실행 제어 이동 20/25 int i; for (i=1; i<10; i++) { if (i%2 == 0) continue; cout << "i= " << i << endl; }
  • 21. 반복문의 중복 • 반복문 내에 또 다른 반복문을 포함 21/25 int i, j; for (i=1; i<=2; i++) { for (j=1; j<=3; j++) { cout << "i=" << i << " " ; cout << "j=" << j << endl; } cout << "*******************" << endl; }
  • 22. 소스 3-19 • 문제 : 정수를 입력, 입력한 수의 팩토리알 계산하기 • 필요한 변수 • 정수, 팩토리알 계산을 위해 1부터 입력한 수까지 변환된 값을 나타낼 변수, 팩토리알 결과값을 저장한 변수 • 주의점 : 입력한 값이 양수이어야 함 (do~while 사용하면 편리 함!!!) • 입력한 값을 이용해서 반복문 실행하기!!! 22/25
  • 23. 프로그램 순서 1. 정수형 변수 a와 i를 선언한다. 2. 계승 결괏값을 저장할 정수형 변수 r을 선언하 고 1로 초기화한다. 3. 문자형 변수 flag를 선언하고 'y'로 초기화한다. 4. 화면에 '정수 입력: ' 메시지를 표시하고, 변수 a 에 정수를 입력한다. 이때 입력한 정수가 양수 가 아니면 "양수를 입력하세요."라는 메시지를 출력하고 다시 입력 내용을 반복한다. 5. 1부터 입력한 수까지 차례로 값을 곱하여 r에 저장한다. 6. 결괏값 r을 출력한다. 23/25 직접 코딩해 보세요!!!
  • 24. 코드 범위와 네임스페이스 • 범위 표시 • 중괄호 {} 이용 • 함수 main() 블록 • 반복문 블록 • 범위 내에 선언한 변수는 범위 내에서 만 인식됨 (소스3-21) • 범위에서 선언된 변수와 같은 변수를 선언하면 안쪽 변수가 우선 - 변수이름은 의미있게! 24/25
  • 25. main() - 프로그램 실행에서 시작과 끝을 알리는 함수 - 작성한 프로그램을 실행 파일로 만들 때 반드시 하나의 main()이 필요 - 프로그램이 처음 시작 될 때 운영 체제에 의해 가장 먼저 호출 됨 - main()도 역시 일반 함수와 같은 사용자 정의 함수 25/25
  • 26. #include <iostream> using namespace std; int main() { int a=100; cout << "main( ) 범위입니다. " << endl; for (int i=1; i<3; i++) { cout << "반복문 for의 범위입니다. " << endl; cout << "i= " << i << endl; cout << “a=“ << a << endl; //에러없음!!! } cout << “반복문 for를 마친 후 i의 값은 : " << i << endl; //에러!!! cout << "프로그램을 종료합니다." << endl; return 0; } 26/25
  • 27. 네임스페이스 1 • 사용이유?? • 서로 다른 범위에 선언된 변수 그리고 같은 이름으로 선언된 변수를 함께 사용할 방 법 • 네임스페이스 : 범위의 이름 영역 • 다른 범위의 멤버를 참조할 경우 해당 범위의 이름을 이용한 소속을 알려 야 함!!! • 네임스페이스 정의 • 다른 네임스페이스 멤버 참조 : 이름::멤버(:: 범위연산자; scoping operator) • 네임스페이스 멤버에는 변수뿐만 아니라 함수도 있기 때문에 네임스페 이스 사용 위치는 함수 내에서가 아니라 파일의 선언부에서 사용한다. 27/25 namespace 이름 { 프로그램 내용~~~(변수나 함수) }
  • 28. 소스 3-23 namespace NS_1 { int a=200; } int main() { int a=100; cout << "main( ) 범위입니다. " << endl; for (int i=1; i<3; i++) { cout << "반복문 for의 범위입니다. " << endl; cout << "i= " << i << endl; cout << "namespace NS_1의 a=" << NS_1::a << endl; cout << "a=" << a << endl; } cout << "namespace NS_1의a=" << NS_1::a << endl; cout << "a=" << a << endl; ………………………………………. 28/25
  • 29. 네임스페이스 2 • 정의된 네임스페이스의 멤버 사용이 빈번한 경우 네임스 페이스 이름 생략하고 사용하려면 using 으로 표기하기 • 다른 네임스페이스에 같은 이름의 필드가 있을 때는 주의! 29/25 using namespace [네임스페이스이름]; #include <iostream> using namespace std; int main() { cout << “즐거운 수업!!! << endl; return 0; } #include <iostream> //using namespace std; int main() { std::cout << “즐거운 수업!!! << std::endl; return 0; }