"연산문"의 두 판 사이의 차이
잔글 |
잔글 (→종류) |
||
5번째 줄: | 5번째 줄: | ||
==종류== | ==종류== | ||
− | 연산문에는 여러 종류가 있지만 [[산술]], [[관계]], [[논리]], [[비트]], 기타 | + | 연산문에는 여러 종류가 있지만 [[산술]], [[관계]], [[논리]], [[비트]], 기타 등의 [[연산자]]와 [[변수]]들을 이용한 연산문이 대표적이다. |
===산술=== | ===산술=== | ||
11번째 줄: | 11번째 줄: | ||
====이항==== | ====이항==== | ||
− | 덧셈, 뺄셈, 곱셈, 나눗셈, | + | [[덧셈]], [[뺄셈]], [[곱셈]], [[나눗셈]], [[나머지]]를 작성한 연산문이다. |
;C언어 | ;C언어 |
2021년 9월 13일 (월) 23:39 기준 최신판
연산문이란 프로그램 언어에서 프로그램의 단위가 되는 문의 종류의 하나이다. 연산문은 사칙연산이나 지수의 연산 실행을 지정하는 명령문이다.[1]
개요[편집]
연산문은 자료(data)와 연산자(operator)로 구성된다. 이때 자료는 변수 또는 상수이다. 이 둘을 조합하고 프로그램으로 작성한 프로그래밍을 연산문이라고 하며, 연산자와 같이 여러 종류의 연산문으로 구성되어 있다.
종류[편집]
연산문에는 여러 종류가 있지만 산술, 관계, 논리, 비트, 기타 등의 연산자와 변수들을 이용한 연산문이 대표적이다.
산술[편집]
산술 연산문은 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%) 등의 연산을 할 때 사용되는 연산자로 단항, 이항, 대입으로 나타낸 문장이다. 계산식과 결과 값은 다음과 같다.[2]
이항[편집]
덧셈, 뺄셈, 곱셈, 나눗셈, 나머지를 작성한 연산문이다.
- C언어
int num01 = 10; int num02 = 4; printf("+ 연산자에 의한 결괏값은 %d입니다.\n", num01 + num02); printf("- 연산자에 의한 결괏값은 %d입니다.\n", num01 - num02); printf("* 연산자에 의한 결괏값은 %d입니다.\n", num01 * num02); printf("/ 연산자에 의한 결괏값은 %d입니다.\n", num01 / num02); printf("% 연산자에 의한 결괏값은 %d입니다.\n", num01 % num02); + 연산자에 의한 결괏값은 14입니다. - 연산자에 의한 결괏값은 6입니다. * 연산자에 의한 결괏값은 40입니다. / 연산자에 의한 결괏값은 2입니다. % 연산자에 의한 결괏값은 2입니다. [3]
- 자바
public class Error { public static void main(String args[]) { byte a = 10; byte b = 20; //byte c = a + b; 일경우 a, b 모두 int 형으로 변환 되어 연산 되기 때문에 에러 발생. byte c = (byte)(a + b); // 형변환을 통해 byte 데이터 타입으로 바꿔주고 계산해야 한다. System.out.println(c); } } 실행 결과 : 30[4]
단항[편집]
대표 단항식은 증감식이며 피연산자를 1씩 증가 혹은 1씩 감소시킬 때 사용하는 연산이다. 형식은 다음과 같다.
- C언어 증감식
#include <stdio.h> int main() { int num1 = 2; int num2 = 2; int num3; int num4; num3 = num1++; // num1의 값을 num3에 할당한 뒤 num1의 값을 1 증가시킴 num4 = num2--; // num2의 값을 num4에 할당한 뒤 num2의 값을 1 감소시킴 printf("%d %d\n", num3, num4); // 2 2 return 0; } 실행 결과 : 2 2[5]
- 자바 증감식
public class Operator { public static void main(String[] args) { //증감 연산자의 독립 사용이 아닐 때 int i = 1, j = 0; j = i++; // 연산 과정 : 1] j = i를 실행, 2] i를 1 증가 System.out.printf("j = i++의 결과 : i=%d, j=%d%n",i,j); i = 1; j = 0; j = ++i; // 연산 과정 : 1] i를 1증가, 2] j = i를 실행 System.out.printf("j = ++i의 결과 : i=%d, j=%d%n",i,j); i = 1; j = 0; j = i--; // 연산 과정 : 1] j = i를 실행, 2] i를 1 감소 System.out.printf("j = i--의 결과 : i=%d, j=%d%n",i,j); i = 1; j = 0; j = --i; // 연산 과정 : 1] i를 1감소, 2] j = i를 실행 System.out.printf("j = --i의 결과 : i=%d, j=%d%n",i,j); }//main }//class j = i++의 결과 : i=2, j=1 j = ++i의 결과 : i=2, j=2 j = i--의 결과 : i=0, j=1 j = --i의 결과 : i=0, j=0[6]
대입[편집]
'='는 오른쪽 계산식의 결과나 값을 왼쪽의 변수에 대입하라는 의미로 사용되며 다음과 같이 사용한다.
- C언어 예시
#incoude <stdio.h> main () { int a = 3; a = a + 3; a = a – 3; // =, +, – a = a * 3; a = a / 3; a = a % 3; // *, /, % printf ( '% d \ n', a); } 실행 결과 : 0[7]
- 자바 예시
package sec01_exam; public class AsOpEx { public static void main(String[] args) { int result = 0; // 복합 대입 연산자는 값을 누적시킬때 많이 사용된다. result += 10; System.out.println("result = " + result); // result 에 10을 더한다. // reuslt = result + 10; 이랑 같다 result -= 5; System.out.println("result = " + result ); result *= 3; System.out.println("result = " + result ); result /= 5; System.out.println("result = " + result ); result %= 3; System.out.println("result = " + result ); } } 실행 결과 : result = 10 result = 5 result = 15 result = 3 result = 0[8]
관계[편집]
두 식의 대소 크기를 비교하는 연산자로서 연산 결과가 참(true)이나 거짓(false)으로 표현한다.[2]
- C언어 예제
#include <stdio.h> int main() { int a = 6; int b = 4; printf("%d \n",a < b); //a 가 b 보다 작은가 printf("%d \n",a <= b);//a 가 b 보다 작거나 같은가 printf("%d \n",a > b); //a 가 b 보다 큰가 printf("%d \n",a >= b);//a 가 b 보다 크거나 같은가 printf("%d \n",a == b);//a 와 b 가 같은가 printf("%d \n",a != b);//a 와 b 가 다른가 return 0; } 실행 결과 : 0 0 1 1 0 1[9]
- 자바 예시
package sec01_exam; public class CompareOpEx { public static void main(String[] args) { int num1 = 10; int num2 = 10; boolean result1 = (num1 == num2); //true boolean result2 = (num1 != num2); // false boolean result3 = (num1 <= num2); // true System.out.println(result1); System.out.println(result2); System.out.println(result3); } } 실행 결과 : true false true[10]
논리[편집]
논리 연산문은 논리합(OR), 논리곱(AND), 논리 부정(NOT) 등의 연산을 할 때 사용하는 연산자를 사용한 연산문으로 다음과 같이 사용한다.[2]
- C언어 예시
#include <stdio.h> int main() { int num1 = 20; int num2 = 10; int num3 = 30; int num4 = 15; printf("%d\n", num1 > num2 && num3 > num4); // 1: 양쪽 모두 참이므로 참 printf("%d\n", num1 > num2 && num3 < num4); // 0: 앞만 참이므로 거짓 printf("%d\n", num1 > num2 || num3 < num4); // 1: 앞만 참이므로 참 printf("%d\n", num1 < num2 || num3 < num4); // 0: 양쪽 모두 거짓이므로 거짓 printf("%d\n", !(num1 > num2)); // 0: 참의 NOT은 거짓 return 0; } 실행 결과 : 1 0 1 0 0[11]
- 자바 예제
public class LogicalOpTest { public static void main(String[] args) { // TODO Auto-generated method stub String str = "Y"; if ( str == "Y" || str == "y" ) { // 참 또는 거짓 = 참 System.out.println("str 은 Y 이거나 y 입니다."); } String str2 = "n"; if ( str == "A" || str2 == "n" ) { // 거짓 또는 참 = 참 System.out.println("str 은 A 이거나 Str2는 n 입니다."); } String str3 = "T"; if ( str3 == "T" && str3 == "t" ) { // 참 그리고 거짓 = 거짓 System.out.println("str3 은 T 이며 t 입니다."); } String str4 = "Q"; String str5 = "q"; if ( str4 == "Q" && str5 == "q" ) { // 참 그리고 참 = 참 System.out.println("str4 는 Q 이고, str5 는 q 입니다."); } } } 실행 결과 : str 은 Y 이거나 y 입니다. str2 는 N 이거나 n 입니다. str4 는 Q 이고 str5는 q 입니다.[12]
비트[편집]
비트 연산문은 비트 단위로 논리 연산을 수행하는 연산자들을 이용한 연산문이다.[2]
- C언어 예시
#include <stdio.h> int main() { unsigned char flag = 0; flag |= 1; // 0000 0001 마스크와 비트 OR로 여덟 번째 비트를 켬 flag |= 2; // 0000 0010 마스크와 비트 OR로 일곱 번째 비트를 켬 flag |= 4; // 0000 0100 마스크와 비트 OR로 여섯 번째 비트를 켬 printf("%u\n", flag); // 7: 0000 0111 if (flag & 1) // & 연산자로 0000 0001 비트가 켜져 있는지 확인 printf("0000 0001은 켜져 있음\n"); else printf("0000 0001은 꺼져 있음\n"); if (flag & 2) // & 연산자로 0000 0010 비트가 켜져 있는지 확인 printf("0000 0010은 켜져 있음\n"); else printf("0000 0010은 꺼져 있음\n"); if (flag & 4) // & 연산자로 0000 0100 비트가 켜져 있는지 확인 printf("0000 0100은 켜져 있음\n"); else printf("0000 0100은 꺼져 있음\n"); return 0; } 실행 결과 : 7 0000 0001은 켜져 있음 0000 0010은 켜져 있음 0000 0100은 켜져 있음[13]
- 자바 예제
public class bit { public static void main(String[] args) { int a = 9; int b = 11; System.out.println(Integer.toBinaryString(a)); //바이너리로 변환 System.out.println(Integer.toBinaryString(b)); //바이너리로 변환 System.out.println("10진수 : " + (a & b)); System.out.println("2진수 : " + Integer.toBinaryString(a & b)); } } 실행 결과 : 1001 1011 10진수 : 9 2진수 : 1001[14]
각주[편집]
- ↑ 〈연산문〉, 《네이버 지식백과》
- ↑ 2.0 2.1 2.2 2.3 홍수열, 〈연산자(operator)〉, 《동주대학》,
- ↑ 〈산술 연산자〉, 《티시피스쿨》
- ↑ 너구리해적단, 〈자바(Java)의 기초 박살내기 - 연산자(Operator)〉, 《티스토리》, 2017-06-30
- ↑ 〈증감 연산자의 위치에 따른 차이점 알아보기〉, 《코딩도장》
- ↑ 냉유's Log, 〈(Java 16) 증감 연산자, 조건 연산자〉, 《티스토리》, 2017-11-26
- ↑ life knowledge, 〈연산자(대입, 산술)〉, 《오픈튜토리얼스》, 2019-01-22
- ↑ 뇌 채우기 공간, 〈(자바JAVA) 연산자 - 복합대입연산자〉, 《티스토리》, 2020-09-16
- ↑ 나노콛, 〈C언어 관계 연산자 / 논리 연산자 / 대입 연산자〉, 《티스토리》, 2019-07- 18
- ↑ 뇌 채우기 공간, 〈(자바JAVA) 연산자 - 자바 관계 연산자〉, 《티스토리》, 2020-09-17
- ↑ 〈조건식과 논리 연산자 사용하기〉, 《코딩도장》
- ↑ omputer Language/JAVA, 〈(JAVA) 자바 논리 연산자를 사용하여 IF문 OR, AND 조건 사용하기〉, 《티스토리》, 2020-11-01
- ↑ 〈비트 연산자로 플래그 처리하기〉, 《코딩도장》
- ↑ ikhub vmpo, 〈(알고리즘) java 비트연산 정리하기〉, 《티스토리》, 2020-03-21
참고자료[편집]
- 〈연산문〉, 《네이버 지식백과》
- 〈산술 연산자〉, 《티시피스쿨》
- 너구리해적단, 〈자바(Java)의 기초 박살내기 - 연산자(Operator)〉, 《티스토리》, 2017-06-30
- 〈증감 연산자의 위치에 따른 차이점 알아보기〉, 《코딩도장》
- 냉유's Log, 〈(Java 16) 증감 연산자, 조건 연산자〉, 《티스토리》, 2017-11-26
- life knowledge, 〈연산자(대입, 산술)〉, 《오픈튜토리얼스》, 2019-01-22
- 뇌 채우기 공간, 〈(자바JAVA) 연산자 - 복합대입연산자〉, 《티스토리》, 2020-09-16
- 홍수열, 〈연산자(operator)〉, 《동주대학》
- 뇌 채우기 공간, 〈(자바JAVA) 연산자 - 자바 관계 연산자〉, 《티스토리》, 2020-09-17
- 〈비트 연산자로 플래그 처리하기〉, 《코딩도장》
- ikhub vmpo, 〈(알고리즘) java 비트연산 정리하기〉, 《티스토리》, 2020-03-21
같이 보기[편집]