340 likes | 584 Views
C++ 프로그래밍 03. 2009 년 2 학기 전자정보공학대학 컴퓨터공학부. Outline. 변수 변수의 타입 연산자 관계 , 논리연산자 입력 받기 분기. 변수 (Variable). 프로그래밍에서의 변수 어떤 값을 저장할 수 있는 장소 숫자 , 문자 , ... 프로그램의 수행중에 컴퓨터의 주메모리에 존재하는 기억장소. 변수의 정의 (Definition of the Variable). 변수의 정의 사용하려는 변수는 프로그램의 앞부분에 정의해주어야 한다. 변수의 타입 변수의 이름 ;
E N D
C++ 프로그래밍 03 2009년 2학기 전자정보공학대학 컴퓨터공학부
Outline • 변수 • 변수의 타입 • 연산자 • 관계, 논리연산자 • 입력 받기 • 분기
변수(Variable) • 프로그래밍에서의 변수 • 어떤 값을 저장할 수 있는 장소 • 숫자, 문자, ... • 프로그램의 수행중에 컴퓨터의 주메모리에 존재하는 기억장소
변수의 정의(Definition of the Variable) • 변수의 정의 • 사용하려는 변수는 프로그램의 앞부분에 정의해주어야 한다. 변수의 타입변수의 이름; 변수의 타입변수1의 이름, 변수2의 이름; 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;
변수 값의 다양한 정의, 할당법 inta; a = 100; int a=100; int a=100, b=200; int a, b=200;
여러가지 변수형 – float/double floatf; double d; f = 0.00123f; d = 1.23; f = 1.23E-3f; d = 1.23E0; 변수의 정의 일반적인 실수 표현 방식 float는 끝에 f를 붙임 과학적인 실수 표현 방식 지수를 사용 1.23E-3f = 1.23*10 1.23E0 = 1.23*10 -3 0
여러가지 변수형 • bool 타입 • bool : 1 Bit = true(1) / false(0) boola; 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; 형변환 발생 b=3.0f 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)/3 cout<<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=true b = 3 > 5; //b=false b1 = 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<<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=true b = 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 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 && false b = 5>4 || 3>5; // true || false b = ((5>4) && (4>3)) || (4<8); b1 = 5>4 && b==true;
복습: 출력방법 cout << “Hello, World!\n” ; cout : console out (출력장치) << : 오른쪽에서 왼쪽으로 보내라 “ ” : 문자들 (명령어 아님) \n : 줄넘김 ; : 명령어를 끝맺음 (마침표) cout에게 “Hello, World”를 보내라. 26
입력받기 cout >>a>>b; cin : console in (입력장치) >> : 왼쪽에서 오른쪽으로 보내라 a,b : 변수들 (int, float, char…) ; : 명령어를 끝맺음 (마침표) cin으로부터 a, b를 받아들여라 27
#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 yes no Grade: A Grade: B 분기 • 입력받은 점수에 따라서 다른 값을 출력하고 싶을 때
분기프로그램의 예 #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-else 문 (복합문과 함께) 복합문: 중괄호{}로 묶여진 문장들의 집합 하나처럼 인식 내부에선 순차적으로 실행 • if-else 구문 if(수식) { statement1; statement2; …. } else { statement3; …. }
if-else 문 if (3<4) { cout<<”3 is smaller ”; cout<<“than 4 ”; } else { cout<<”3 is larger ”; cout<<“than 4 ”; } • if-else 구문 if(수식) { statement1; statement2; …. } else { statement3; …. }
연습 • 나이를 입력받고, • 미성년자인지 아닌지 판단하고, • 미성년자이면 “미성년자입니다”아니면 “성인입니다” 를 출력