Download - C++ 프로그래밍 03
C++ 프로그래밍 03
2009 년 2 학기전자정보공학대학
컴퓨터공학부
Outline
• 변수• 변수의 타입• 연산자• 관계 , 논리연산자• 입력 받기• 분기
변수 (Variable)
• 프로그래밍에서의 변수– 어떤 값을 저장할 수 있는 장소
• 숫자 , 문자 , ...
– 프로그램의 수행중에 컴퓨터의 주메모리에 존재하는 기억장소
변수의 정의 (Definition of the Variable)
• 변수의 정의– 사용하려는 변수는 프로그램의 앞부분에
정의해주어야 한다 .
변수의 타입 변수의 이름 ;
변수의 타입 변수 1 의 이름 , 변수 2 의 이름 ;
Example)int a;int a,b;
Example)int a;int a,b;
변수의 타입 (Type of the Variable)
• 변수의 타입– 변수가 저장할 값의 성격을 나타낸다 .– 정수 (int), 실수 (float), 문자 (char), ...
• int a, b, c;– 정수를 저장할 수 있는 변수 3 개 a, b, c 를 정의한
다 .
• float fa, fb, fc;– 실수를 저장할 수 있는 변수 3 개 fa, fb, fc 를
정의한다 .
변수의 이름 (Name of the Variable)
• 변수의 이름은 영어 알파벳 , 숫자 , underscore(_) 로 구성할 수 있다 .
• 제한– 중복된 이름의 변수를 사용할 수 없다– 숫자로 시작되면 안 된다 .– 대소문자는 구분된다 .
• Score 라는 변수와 score 라는 변수는 서로 다른 변수이다 .
– 길이는 제한없다– underscore(_) 로 시작하는 이름은 쓰지 않는 것이 좋다 .– C 언어에서 사용되는 명령어 (keyword) 와 같은 이름을 가질 수
없다 .• main, cout, int, float,...
변수가 사용된 프로그램의 예
#include <iostream>using namespace std;int main(void){
int a;int b;int c;
a = 87;b = 93;c = 100;
cout<<a<<b<<c;}
a,b,c 3 개의 변수의 정의와 값 할당
변수 값의 할당 (Assignments)
• 변수는 자신의 타입에 적당한 값을 가질 수 있다 .• 할당연산자 (assignment operator, =) 를
사용해서 변수에 값을 할당할 수 있다 .
변수의 이름 = 값 ;변수의 이름 1 = 변수의 이름 2 ;
Example)a = 100;b = a;
Example)a = 100;b = a;
정보의 흐름방향
변수 값의 다양한 정의 , 할당법
int a;a = 100;int a;a = 100;
int a=100;int a=100;
int a=100, b=200;int a=100, b=200;
int a, b=200;int a, b=200;
여러가지 변수형 – float/double
float f;double d;
f = 0.00123f;d = 1.23;
f = 1.23E-3f;d = 1.23E0;
float f;double d;
f = 0.00123f;d = 1.23;
f = 1.23E-3f;d = 1.23E0;
변수의 정의
일반적인 실수 표현 방식float 는 끝에 f 를 붙임
과학적인 실수 표현 방식 지수를 사용
1.23E-3f = 1.23*101.23E0 = 1.23*10
-30
여러가지 변수형
• bool 타입– bool : 1 Bit = true(1) / false(0)
bool a;bool b;
a = true;b = false;
a = 1;
bool a;bool b;
a = true;b = false;
a = 1;
수식 (Expressions)
• C 프로그램에서는 일반적인 수학적 수식을 사용할 수 있다 . ( +, - , *, / )
• a + b - c• (a + b + c) / 3;• 100 - a * 3;
• 할당수식– 할당연산자가 쓰인 수식
• a = 89 ;• d = (a+b+c)/3• a = a + 3;• a = b = c = 100;
형변환
• 문제가 발생하는 형변환 – 큰 변수 형식 작은 변수 형식– Example)
• int short int• float int• double float
– 가능하면 비슷한 값으로 근사• int a = 3.2f; int a= 3; 같다
– 데이터의 범위가 넘어가면 문제 발생• int a = 655361;• short int b = a; ????
형변환
• 명시적 형변환
int a = 3;float b;
b = (float) a;
int a = 3;float b;
b = (float) a; 형변환 발생 b=3.0f
int a;float b = 3.1f;
a = (int) b;
int a;float b = 3.1f;
a = (int) b; 형변환 발생 a=3
Practice
• 다양한 형변환 연습 Page 93
변수가 사용된 프로그램의 예
#include <iostream>using namespace std;int main(void){
int a;int b;int c;a = 87;b = 93;c = 100;int avg;avg = (a+b+c)/3cout<<a<<b<<c<<avg;
}
a,b,c 3 개의 변수의 정의와 값 할당
변수의 타입과 수식의 타입
• avg = (a + b + c) / 3– 이 수식에 나타난 모든 변수들의 타입은 int 이다 .
– 실제 계산값은 (a + b + c) / 3 = (87 + 93 + 100) / 3 = 93.333... 이 된다 .
– 그런데 변수 avg 는 정수변수이고 따라서 avg 에는 93이라는 값이 들어간다 .
실수변수가 들어간 프로그램#include<iostream>
using namespace std;
int main(void)
{
float fa, fb, fc;
float favg;
fa = 87.0f; fb = 93.0f; fc = 100.0f;
favg = (fa + fb + fc) / 3.0f;
cout<<“Average: ”<<favg;
return 0;
}
-이 프로그램에서 favg 는 실수변수이고 따라서 93.333....이라는 값을 가질 수 있다 .
관계연산자
관계에 대한 결과를 주는 연산자 ( 결과는 boolean – true/false)• <• >• >=• <=• == (equal)• != (not equal)
bool b,b1;b = 3 < 5; //b=trueb = 3 > 5; //b=falseb1 = b==true;
bool b,b1;b = 3 < 5; //b=trueb = 3 > 5; //b=falseb1 = b==true;
#include <iostream>using namespace std;int main(){
int a = 3, b = 5;bool b1, b2, b3, b4;b1 = a>b;b2 = a>=b;b3 = a<b;b4 = a==b;cout<<“a> b --> ”<<b1<<“\n”;cout<<“a>=b --> ”<<b2<<“\n”;cout<<“a< b --> ”<<b3<<“\n”;cout<<“a==b --> ”<<b4<<“\n”;return 0;
}
#include <iostream>using namespace std;int main(){
int a = 3, b = 5;bool b1, b2, b3, b4;b1 = a>b;b2 = a>=b;b3 = a<b;b4 = a==b;cout<<“a> b --> ”<<b1<<“\n”;cout<<“a>=b --> ”<<b2<<“\n”;cout<<“a< b --> ”<<b3<<“\n”;cout<<“a==b --> ”<<b4<<“\n”;return 0;
}
관계연산자 - 연습
#include <iostream>using namespace std;int main(){
int a = 3, b = 5;bool b1, b2, b3, b4;b1 = a>b;b2 = a>=b;b3 = a<b;b4 = a==b;cout<<boolalpha;cout<<“a> b --> ”<<b1<<“\n”;cout<<“a>=b --> ”<<b2<<“\n”;cout<<“a< b --> ”<<b3<<“\n”;cout<<“a==b --> ”<<b4<<“\n”;return 0;
}
#include <iostream>using namespace std;int main(){
int a = 3, b = 5;bool b1, b2, b3, b4;b1 = a>b;b2 = a>=b;b3 = a<b;b4 = a==b;cout<<boolalpha;cout<<“a> b --> ”<<b1<<“\n”;cout<<“a>=b --> ”<<b2<<“\n”;cout<<“a< b --> ”<<b3<<“\n”;cout<<“a==b --> ”<<b4<<“\n”;return 0;
}
관계연산자 - 연습
논리연산자
• 논리연산자입력은 boolean 값결과도 boolean – true(1)/false(0))• ! (negation – NOT: !A )• && (AND: A&&B)• || (OR: A||B )
bool b;b = !false; //b=trueb = true&&false;b = true||false;
bool b;b = !false; //b=trueb = true&&false;b = true||false;
#include <iostream>using namespace std;int main(){
bool b1, b2, b3, b4;b1 = false && false;b2 = true && false;b3 = false && true;b4 = true && true;cout<<boolalpha;cout<<“F AND F -->”<<b1<<“\n”;cout<<“T AND F -->”<<b2<<“\n”;cout<<“F AND T -->”<<b3<<“\n”;cout<<“T AND T -->”<<b4<<“\n”;return 0;
}
#include <iostream>using namespace std;int main(){
bool b1, b2, b3, b4;b1 = false && false;b2 = true && false;b3 = false && true;b4 = true && true;cout<<boolalpha;cout<<“F AND F -->”<<b1<<“\n”;cout<<“T AND F -->”<<b2<<“\n”;cout<<“F AND T -->”<<b3<<“\n”;cout<<“T AND T -->”<<b4<<“\n”;return 0;
}
논리연산자 - 연습
#include <iostream>using namespace std;int main(){
bool b1, b2, b3, b4;b1 = false || false;b2 = true || false;b3 = false || true;b4 = true || true;cout<<boolalpha;cout<<“F OR F -->”<<b1<<“\n”;cout<<“T OR F -->”<<b2<<“\n”;cout<<“F OR T -->”<<b3<<“\n”;cout<<“T OR T -->”<<b4<<“\n”;return 0;
}
#include <iostream>using namespace std;int main(){
bool b1, b2, b3, b4;b1 = false || false;b2 = true || false;b3 = false || true;b4 = true || true;cout<<boolalpha;cout<<“F OR F -->”<<b1<<“\n”;cout<<“T OR F -->”<<b2<<“\n”;cout<<“F OR T -->”<<b3<<“\n”;cout<<“T OR T -->”<<b4<<“\n”;return 0;
}
논리연산자 - 연습
관계연산자 + 논리연산자
• 관계연산자와 논리연산자가 같이 있으면관계연산자를 우선한다 !
bool b,b1;b = 5>4 && 3>5; // true && falseb = 5>4 || 3>5; // true || false
b = ((5>4) && (4>3)) || (4<8);b1 = 5>4 && b==true;
bool b,b1;b = 5>4 && 3>5; // true && falseb = 5>4 || 3>5; // true || false
b = ((5>4) && (4>3)) || (4<8);b1 = 5>4 && b==true;
복습 : 출력방법
26
cout << “Hello, World!\n” ;cout << “Hello, World!\n” ;
cout : console out ( 출력장치 )
<< : 오른쪽에서 왼쪽으로 보내라“ ” : 문자들 ( 명령어 아님 )
\n : 줄넘김; : 명령어를 끝맺음 ( 마침표 )
cout 에게 “ Hello, World” 를 보내라 .
입력받기
27
cout >>a>>b;cout >>a>>b;
cin : console in ( 입력장치 )
>> : 왼쪽에서 오른쪽으로 보내라a,b : 변수들 (int, float, char…)
; : 명령어를 끝맺음 ( 마침표 )
cin 으로부터 a, b 를 받아들여라
#include <iostream>using namespace std;int main( ){
int a; float b;cout<<“Input a,b: ”;cin>>a>>b;
cout<<“a: ”<<a<<“\n”;cout<<“b: ”<<b<<“\n”;return 0;
}
#include <iostream>using namespace std;int main( ){
int a; float b;cout<<“Input a,b: ”;cin>>a>>b;
cout<<“a: ”<<a<<“\n”;cout<<“b: ”<<b<<“\n”;return 0;
}
입력받기
분기
• 입력받은 점수에 따라서 다른 값을 출력하고 싶을 때
score
score >= 90
Grade: A Grade: B
yes
no
#include <iostream>
using namespace std;
int main(void)
{
int score;
char grade;
cin>>score;
if(score >= 90)
grade = ‘A’;
else grade = ‘B’;
cout<<“Grade:”<<grade<<“\n”;
return 0;
}
#include <iostream>
using namespace std;
int main(void)
{
int score;
char grade;
cin>>score;
if(score >= 90)
grade = ‘A’;
else grade = ‘B’;
cout<<“Grade:”<<grade<<“\n”;
return 0;
}
분기프로그램의 예
if-else 문
• if-else 구문 ( ~ 이면 ~ 하고 , 아니면 ~하라 )if( 수식 )
statement;else statement; <- 생략가능if (3<4)
cout<<”3 is smaller than 4 ”;else
cout<<”3 is larger than 4”;
if (3<4) cout<<”3 is smaller than 4 ”;
elsecout<<”3 is larger than 4”;
if-else 문 ( 복합문과 함께 )
• if-else 구문if( 수식 ){
statement1; statement2; ….}else
{ statement3; ….}
복합문 :중괄호 {} 로 묶여진 문장들의집합
하나처럼 인식 내부에선 순차적으로 실행
복합문 :중괄호 {} 로 묶여진 문장들의집합
하나처럼 인식 내부에선 순차적으로 실행
if-else 문• if-else 구문
if( 수식 ){
statement1; statement2; ….}else
{ statement3; ….}
if (3<4){
cout<<”3 is smaller ”; cout<<“than 4 ”;}else{
cout<<”3 is larger ”; cout<<“than 4 ”;}
if (3<4){
cout<<”3 is smaller ”; cout<<“than 4 ”;}else{
cout<<”3 is larger ”; cout<<“than 4 ”;}
연습
• 나이를 입력받고 ,
• 미성년자인지 아닌지 판단하고 ,
• 미성년자이면 “ 미성년자입니다”아니면 “ 성인입니다” 를 출력