목록분류 전체보기 (109)
나의 지식 보관소
널 조건부 연산자 ( ?. or ?[ ] ) 널 조건부 연산자는 객체의 멤버에 접근하기전 해당 객체가 null인지 아닌지를 판별하고 만약 객체가 null이라면 결과로 null을 반환하고, null이 아니라면 '.' 뒤에 지정된 멤버 또는 '[]'의 인덱스에 해당하는 값을 반환합니다. NULL 병합연산자 ( ?? ) 널 병합 연산자는 왼쪽 피연산자가 null인지를 판단하고 만약 null이 아니라면 왼쪽 피연산자를 반환하고, 만약 null이라면 오른쪽 피연산자를 반환합니다.
값에 의한 매개 변수 전달 메서드를 호출할 때 데이터를 복사해서 매개 변수에 넘기는 것을 값에 의한 전달이라고 부른다. 어떤 변수를 매개변수로 전달하면 값이 복사될뿐이므로, 매개변수의 값을 변경하여도 원래의 변수는 값이 변하지 않는다. 참조에 의한 매개 변수 전달 메서드를 호출할 때 매개 변수가 인자로 넘겨진 변수를 직접 참조 하는것을 참조에 의한 전달이라고 부른다. 매개 변수가 변수를 직접 참조할 경우에 매개변수를 수정하면 매개 변수가 참조하고 있는 변수에도 수정이 이루어진다. ref 키워드 ref 는 C#에서 참조에 의한 매개 변수 전달을 위한 키워드중 하나이다. 사용법은 간단하다. 아래와 같이 매개변수 앞에 ref 키워드를 붙여 주면 된다 1 2 3 4 void swap(ref int a, ref ..
자바에서는 foreach라는 용어를 사용하지 않는 듯 하지만 내가 다룬 다른 언어에서는 foreach라는 용어를 사용하니 foreach라는 용어로 부르도록 하겠다. foreach문은 배열밑 컬렉션의 길이만큼 반복할 때 사용되는 제어문으로서, 기존의 for문과는 달리 반복 실행을 위해 카운터 변수와 증감 식이 존재하지 않는다. for ( 타입변수 : 배열 ) { 실행문; } for문의 괄호안에, 배열에서 꺼낸 항목을 저장할 변수와 ':'(콜론) 배열 순으로 작성한다. 그 뒤 배열에서 항목을 하나하나 차례로 꺼내오면서 배열이 끝날 때까지 실행문을 실행한다.
자바에서의 '/'과 '%'연산은 우측 피연산자에 0을 사용할 경우 ArithmeticException(예외)이 발생한다. 하지만 실수인 0.0이나 0.0f로 나누면 '/' 연산의 결과는 Infinity(무한대)의 값을 가지고, '%'연산의 결과는 NaN(Not a Number)을 가진다. 중요한 것은 이러한 값들( Infinity와 NaN )이 나오면 다음 연산을 수행하면 안 된다. 이러한 값들은 어떤 수와 산술 연산을 하더라도 Infinity와 NaN이 산출되므로 데이터가 엉망이 될 수 있다. 때문에 '/'와 '%'의 연산 결과가 Infinity 또는 NaN인지 아닌지 확인하는 작업이 필요하다. 그 방법은 Double.isInfinity( )와 Double.isNaN( ) 메서드를 사용하면 된다. 해당..
연결 리스트란 여러 노드들이 각각 데이터와 포인터를 가지고 연결되어있는 자료구조이다. 각 노드의 포인터가 다음 노드나 이전 노드를 연결하는 역할을 한다. 노드라는 용어는 영어로 식물의 가지나 잎의 연결부위를 뜻하는 의미가 있는 것으로 보아, 자료구조에서의 노드가 서로 연결되어있어서 그렇게 부르는듯하다. 즉 노드는 데이터를 저장하고, 다른 데이터와 연결 지어 주는 단위 정도로 해석된다. 연결 리스트의 장점 연결 리스트는 데이터를 선형으로 저장하는 데이터 구조로서 각 노드들이 자신의 다음 노드의 주소를 가지고 있어, 배열에 비해 데이터를 추가 하거나, 삽입, 삭제가 자유롭다. 예를 들어 A, B, C라는 노드들이 있다고 가정해보자 A는 B의 주소를 B는 C의 주소를 가지고 있어 셋은 모두 연결되어 있다. 이..
추상 자료형이란 구체적인 기능의 완성 과정을 언급하지 않고, 순수하게 기능이 무엇인지를 나열한 것을 가리키고 간단히 ADT라고도 부른다. 즉 전자레인지의 추상 자료형을 만든다면, 추상 자료형의 정의에는 시간 설정, 강도, 시작, 정지, 해동 등의 기능을 명시하고 내부 동작이 어떠한 방법으로 이루어지는지는 언급하지 않는다. 이러한 특성 때문에 추상 자료형은 구현자와 사용자를 분리해준다. 따라서 추상 자료형의 구현은 외부로부터 숨겨서 정보 은닉이 이루어지고 사용자는 사용방법이 아닌 구현 방법까지 알지 않아도 된다.
하노이의 탑은 대표적인 재귀함수의 예시이다. 세 개의 기둥에 크기가 다른 여러 개의 크기가 다른 원판들이 있고, 처음 기둥에서 다른 기둥으로 모든 원판을 옮기면 된다. 단, 아래의 조건들을 만족해야한다. 1. 한 번에 하나의 원판만 옮길 수 있다. 2. 큰 원판이 작은 원판 위에 있어서는 안 된다. 구현된 코드는 다음과 같다. #include int main(void) { int diskCount; printf("Set disk count : "); scanf("%d",&diskCount); hanoi(diskCount,'A','B','C'); } void move(int diskNum, char from, char to) { printf("\n%d Disk move %c from %c", diskNum..
피보나치 수열은 0 1 1 2 3 5 8 13 21 ... 와 같이 전개되는 수열로서 재귀적인 형태를 띤다. 재귀적인 형태를 띠므로 재귀 함수를 통해 구현할 수 있는데, 코드는 다음과 같다. #include int main(void) { for (int i = 0; i < 20; i++) { printf("%d ", fibonacci(i + 1)); } return 0; } int fibonacci(int value) { if (value == 1) return 0; else if (value == 2) return 1; else return fibonacci(value - 1) + fibonacci(value - 2); } 피보나치 수열은 1번째는 0, 2번째는 1의 값을 반환하고 3번째 이후부터는 자..