프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균
이번 장에서는 무엇을 다룰까요? 연산자의 종류와 연산의 우선순위
강의 주제 및 목차 강의 주제 자료 처리와 연산자 1 자료의 표현 목 차 2 변수와 상수 3 연산자
1. 자료의 표현
자료의 표현 자료(data) : 자료의 분류 의미 있는 정보를 가진 모든 값 문제 해결을 위해 사용하는 입출력 요소를 의미 문자, 숫자 자료의 분류
자료의 표현 문자 자료 : 숫자 자료 : 문자(character) : 한 글자를 나타내는 문자와 단일 인용부호(' ')로 표시 문자열(string) : 여러 글자로 구성되며 큰 따옴표(“ “)로 표시 숫자 자료 : 표현할 숫자 크기에 따라 형을 구분하며, 저장되는 메모리 크기도 다르다. 정수형과 실수형으로 구분
2. 변수와 상수
변수와 상수 프로그램의 입출력에 사용되는 모든 자료는 저장될 메모리 주소가 필요 자료가 저장된 메모리의 주소를 숫자로 표현하면 기억하기 어렵다. → 프로그램을 작성하기 힘들다. 변수명 : 데이터를 저장하기 위한 메모리 주소를 기호화(symbolic)한 것 변수를 사용하지 않고, 기억장치의 물리적 주소를 사용하여 프로그램을 작성한다는 것은 불가능한 일이다 주기억 장치의 물리적 주소를 사용하는 프로그램과 변수를 사용하는 프로그램
변수와 상수 변수(variable) 프로그래밍 언어에 따라 조금씩 다르지만, 일반적인 변수명 부여 규칙은 다음과 같다 (1) 변수명의 첫 글자는 영문자로 시작 (2) 두 번째 글자 부터는 영문자, 숫자, 언더스코어(_) 사용 가능. 단, 특수문자는 사용할 수 없다 (3) 변수명의 길이가 제한된다. (4) 프로그래밍 언어 자체에서 사용되는 단어는 예약어(reserved word)어로 변수명으로 사용불가 자료형(data type) - 변수에 저장될 자료의 형에 따라 구분한다. - 대부분의 프로그래밍 언어에서는 다음과 같은 자료형을 갖는다. (자바스크립트는 제외) 문자형 : char 정수형 : int, long 실수형 : float, double 논리형 : boolean
변수와 상수 프로그래밍 언어에서의 변수의 사용 예 C 언어 int count; double frequency = 10.9; char ch = 'a'; Java 언어 int count=100 ; float f =3.14159 ; char cc = 'K' ; boolean flag = false; 자바스크립트 언어(변수의 형이 없으며, 모든 변수는 var로 선언) var count ; var ch = 'kim' ; var f = 3.14159; var count = 20; 대부분의 프로그래밍 언어(C, Java)에서 변수의 사용은 비슷한 형태이다. 특수하게도 자바스크립트의 경우에만, 변수 형을 구분하지 않고 사용한다
변수와 상수 변수명을 만드는 올바른 방법 count + 1 = 123 + 456 ; 800 + 100 = 900 ; 사용할 자료를 연상하기 쉬운 기호로 부여하는 것이 좋다. 변수명의 첫 글자는 영문자를 사용하는 것이 좋다. 변수의 사용이 잘못된 예 count + 1 = 123 + 456 ; 800 + 100 = 900 ; 900 = 800 + 100 ; total/count = average ; +24 = -24 + 48 ; 자료 내용 자료형 변수명 상여금 integer bonus 이름 string name 평균 float average
변수와 상수 상수(constant) 변수와 달리 메모리에 저장되면 프로그램 실행이 종료될 때 까지 그 값이 변경되지 않는 자료형. 원주율이나 특정 공식 등 변하지 않는 값을 필요로 할 때 상수로 설정 사용 (예) const pi = 3.141592; (잘못된 사용 예) const rate = 10; // 상수로 선언된 rate의 값은 변경 불가능 …… rate = 20;
3. 연산자
연산자 배정 연산자(Assignment Operator) 배정 연산자는 '=' 기호를 사용하여, '=' 오른쪽의 수식 처리 결과 또는 자료 값을 '=' 기호의 왼쪽에 지정된 변수(주소) 번지로 저장하라는 의미이다. 오퍼랜드(Operand, 피연산자) 연산의 대상이 되는 값을 피연산자(operand)라 하고, 연산기호를 연산자(operator)라 함. 10 + 20 연산자(Operator) 피연산자(Operand)
연산자 연산자의 종류 산술연산자(Arithmetic Operator) : 수치 계산에 대한 산술적 연산 처리 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%) 등 관계연산자(Relational Operator) : 두 자료에 대한 대소관계를 비교하는 연산 처리 크다(>), 크거나 같다(>=), 작다(<), 작거나 같다(<=), 같다(==), 같지 않다(!=)등 논리연산자(Logical Operator) : 진리 값에 따라 참, 거짓의 논리적 연산 처리 논리부정(!), 논리곱(&&), 논리합(||) 등 연산자의 표기가 프로그램 언어 마다 조금씩 다를 수 있으나 대부분의 언어가 비슷함.
산술연산자(Arithmetic Operator) 산술 연산자의 우선순위(Priority) 우선순위 연산자 의미 사용 예 1 ( ) 괄호 8*(5+2) (width*height)/2 2 단항연산자 - 음수부호 -7+ 5 3 *, /, % 곱셈, 나눗셈, 나머지 4*10, width*height 20/5, sum/count 20%3, dividend%divisor 4 +, - 덧셈, 뺄셈 10+20, num1+num2 10-20, num1-num2 5 = 배정연산자 avr=sum/n, sum=kor+eng+mat ★ 산술식에서 동일한 우선순위가 여러 개 있을 경우에는 왼쪽부터 오른쪽으로 차례대로 수행한다.
산술연산자(Arithmetic Operator) 아래와 같은 수식의 우선순위를 표시하시오. (4 + 5 * 2 / 2) (-5 - -2 * 8 % (4 – 2) * 3
관계연산자(Relational Operator) 관계연산자의 종류 두 수의 값의 대소 관계를 비교하기 위한 연산자 주로 선택문이나 반복문의 조건식에서 참/거짓을 판단할 때 사용 관계연산자가 포함된 조건식의 결과는 항상 참 또는 거짓 연산자 사용 예 설명 > op1 > op2 op1이 op2보다 큰 경우 >= op1 >= op2 op1이 op2보다 크거나 같은 경우 < op1 < op2 op1이 op2보다 작은 경우 <= op1 <= op2 op1이 op2보다 작거나 같은 경우 == op1 == op2 op1이 op2보다 같은 경우 != op1 != op2 op1이 op2보다 같지 않은 경우
논리연산자(Logical Operator) 피연산자에 대한 진리표에 따라 논리 연산을 수행하며 결과는 참, 거짓 연산자의 우선순위 : NOT > AND > OR > XOR 입력 논리연산자 피연산자1 (op1) 피연산자2 (op2) 논리NOT (! op1) 논리AND (op1 && op2) 논리OR (op1 || op2) true false
복합 조건식 복합 조건식 관계연산자와 논리연산자가 연결된 복합적인 조건식의 사용 - 키가 160보다 크고, 180보다 작은 사람 - 국어, 영어 점수 모두 60점 이상인 사람 - 국어, 영어 과목 중 하나라도 60점 미만인 사람 키(height)가 160부터 180이하인 조건식 (X) 160 <= height <= 180 (O) (height >= 160) && (height <= 180) 국어(kor), 영어(eng) 두 과목 점수 모두 60점 이상인 조건식 ( (kor >= 60) && (eng >= 60) )
복합 조건식 학년(grade)이 1학년이면서 평균 평점(score) 3.5이상을 만족하는 조건식 (grade == 1) && (score >= 3.5) 성별(gender)이 ″남자” 이면서 나이(age)가 21세 이상인 경우를 만족하는 조건식 ( (gender == ″남자″ ) && (age >= 21) ) 주소(addr)가 ″경기도″이거나 ″서울″인 사람을 만족하는 조건식 ( (addr == ″경기도″ ) || (addr == ″서울″) ) 국어(kor), 영어(eng) 두 과목 모두 80점 이상이거나 두 과목의 합이 160점 이상을 만족하는 조건식 ( (kor >= 80 && eng >= 80) || ((kor + eng) >= 160) )
연산자의 우선순위
연산자의 우선순위 (2 + 6 * 2 < 2 + 6 / 2 && -2 * -3 >= (1 + 2) * 2) (3 > 4 != 3 > 4 && 3 > 4 == 3 > 4)
토론 및 질문하기 오늘 배운 내용을 옆의 학우와 간단히 이야기를 나누어 보세요!