2월, 2021의 게시물 표시
{{ label!='' ? 'Label : ' : (q!='' ? '검색 : ' : '전체 게시글') }} {{ label }} {{ q }} {{ ('('+(pubs|date:'yyyy-MM')+')') }}

[Java] 자바로 프로그래밍 입문하기: 1.3. 조건문과 반복문 (2)

이미지
유한합(Finite sum) 계산 프로그램   <PowersOfTwo>에서 사용된 계산 기법은 여러분이 자주 쓰게 될 것입니다. 두 개의 변수를 사용해서, 하나는 반복문을 컨트롤하고 하나는 계산 결과를 쌓아가는 것입니다. <프로그램 1.3.5, Harmonic>은 같은 기법을 사용해 유한합 H N   = 1 + 1/2 + 1/3 + ... + 1/N 을 계산합니다. 프로그램 1.3.5: Harmonic numbers public class Harmonic { public static void main ( String [] args ) { // Compute the Nth Harmonic number. int N = Integer . parseInt ( args [ 0 ]); double sum = 0.0 ; for ( int i = 1 ; i <= N ; i ++) { // Add the ith term to the sum sum += 1.0 / i ; } System . out . println ( sum ); } } % java Harmonic 2 1.5 % java Harmonic 10 2.9289682539682538 % java Harmonic 10000 9.898706036044348 프로그램 1.3.6: Newton's Method public class Sqrt { public static void main ( String [] args ) { double c = Double . parseDouble ( args [ 0 ]); double epsilon = 1 e - 15 ; double t = c ; while ( Math . abs ( t - c / t ) > epsilon * t ) { // Replac

[Java] 자바로 프로그래밍 입문하기: 1.3. 조건문과 반복문 (1)

이미지
  이전까지의 프로그램은 각각의 구문이 프로그램 내에서 위에서 아래로 순서에 맞게 단 한 번만 실행되었습니다. 하지만 복잡한 프로그램들은 똑같이 실행하더라도 다양한 방식으로 결과가 달라집니다. 이는 구문의 흐름이나 순서에 따라 달라지는 것입니다. 우리는 이런 흐름을 제어 흐름(Control flow)이라고 합니다.   이번 절에서는 프로그램 변수값을 이용한 로직으로 제어 흐름을 바꿀 수 있는 구문들에 대해 배워볼 것입니다. 이것은 프로그래밍에서 굉장히 중요한 부분입니다.   특히 여러분은 자바 구문 중, 특정 조건을 만족해야만 실행이 되는 조건문이라는 것과 특정 조건에 따라서 여러 번 실행될 수 있는 반복문이라는 것을 배울 것입니다. if문   대부분의 프로그램은 서로 다른 입력에 대해 서로 다른 행동을 취해야 합니다. 이런 것을 자바에서 구현하는 방법 중 하나는 if문입니다. if (< boolean expression >) { < statements > }   이 설명은 템플릿(template)이라 불리는 정형화된 표기법이며, 자바 구조의 형식을 설명하는 데 사용할 것입니다. 홑화살괄호(<>, angle bracket)에는 우리가 이미 정의했던 구조가 들어가고, 이는 해당 구조의 용례(instance)를 사용할 수 있음을 나타냅니다.   <boolean expression> 은 불리언 값으로 표현되는 식을 의미하며, 보통 비교 연산으로 이루어진 것입니다. <statements>는 구문 블록, 즉 세미콜론으로 끝나는 문장들로 이루어진 것입니다. 만약 <statements>가 단 하나의 구문이라면, 중괄호는 쓰지 않아도 상관 없습니다. 이런 중괄호로 묶인 구문들을 시퀀스(sequence)라고 합니다.   if문의 의미는 간단합니다. 시퀀스 내의 구문들은 식이 참일 때에만 실행 됩니다. 다음 예시를 참고해보세요. if ( x < 0 ) x = - x ;   위 코드는 x에

[Java] 자바로 프로그래밍 입문하기: 1.2. 내장 자료형(Built-in Type) (2)

이미지
정수(Integers)   int는 -2147483648 (-2^31) 부터 2147483647 (2^31-1) 사이의 정수입니다. 이런 범위를 갖는 이유는, 정수를 표현할 때 32개의 이진수를 이용하기 때문입니다. 이진법이란 0과 1만을 사용하는, 컴퓨터과학에서 흔히 사용하는 수 체계입니다. 보통 이진수를 bit라고 말합니다. bit는 0 혹은 1의 값입니다.      이 연산자들은 초등학교 때 배운 것들과 다르지 않습니다. 단, 모든 결과는 정수가 된다는 점에 유의하세요. 따라서 두 int 값 a와 b가 주어질 때, a / b 의 나머지는 버리며, a % b 의 값을 통해 a를 b로 나눈 나머지의 값을 얻을 수 있습니다. 예를 들어 17 / 3 = 5 이며, 17 % 3 = 2 입니다.   int 연산 결과는 우리가 예상하는 그대로 수학적으로 도출되지만, 32비트의 표현을 넘어갈 때에는 예외입니다. 이 때에는 잘 정의된 규칙에 의해서 값이 변하게 될 것이며, 이를 오버플로우(overflow)라고 칭합니다. 프로그램 1.2.2: IntOps, 정수의 곱셈과 나눗셈 public class IntOps { public static void main ( String [] args ) { int a = Integer . parseInt ( args [ 0 ]); int b = Integer . parseInt ( args [ 1 ]); int p = a * b ; int q = a / b ; int r = a % b ; System . out . println ( a + " * " + b + " = " + p ); System . out . println ( a + " / " + b + " = " + q ); System . out . println ( a + " %