(Tutorial5)


*기본 데이터 타입 복습

---

byte - 1byte(8비트) 

short- 2byte(16비트)- 작은 정수를 표현할 때 사용

int - 4byte(32비트)

long-8byte-int보다 더 큰 정수

---

float -4byte -실수

double-8byte- 더 큰 실수

---

boolean- false or true

---

char - 2byte 


*헷갈리는 연산자

i++, ++i는 모두 1씩 증가시키는 것은 같으나, 출력함수 내에서는 역할이 다르다

i++ : 1을 더한 다음 출력 / ++i : 출력 후 1을 더함


i++ 와 i+=1;과 i = i+1은 모두 동일한 표현이라 할 수 있다.


---

100 < x < 200 을 프로그래밍 언어로 표현 하는 것은 잘못된 표현이다

( 100 < x ) &&( x < 200 ) 으로 앤드 연산자를 사용해서 표현해야한다.

---



<조건문>

조건문과 반복문은 프로그래밍에 있어서 논리의 흐름을 정하는 가장 기본적인 기술이다.


1. if문을 이용해서, 특정 문자열을 포함하는지 확인하는 프로그램을 작성해보자.

- String 변수는 비원시적 자료형으로서, 클래스기반으로 생성되어 있으며, 내부적인 함수를 변수. 으로 확인할 수 있다. 이 중에 contains를 이용해보자


public static void main(String[] args) {


String a = "I Love You.";

if(a.contains("Love")) {

System.out.println("Me too.");

}else {

System.out.println("포함하지 않네요");


}

}


(Tutorial6)


2. if-else if-else문을 이용해서, 점수에 따라 다른 메세지를 출력하는 프로그램을 작성해보자.

- 큰 점수를 기준으로해서 >= 크거나 갔다의 조건문을 if - else if  - else(마지막은 else로 끝나자**)순으로 사용하자

(if와 else로 보통 2개 조건만 거는데, 3개 이상의 조건에서 가운데 else if를 삽입한다고 생각)


public static void main(String[] args) {


int score = 95;

if(score >= 90) {

System.out.println("A+입니다.");

}else if(score >= 80){

System.out.println("B+입니다.");


}else if(score >= 70){

System.out.println("C+입니다.");


}else 

System.out.println("D+입니다.");


}

}


3. 문자열과 정수형을 각각 조건문을 이용해 활용해보고 차이점을 알아보자.

(1) 자바에서는 String을 비교할 때, equals() 매쏘드를 사용한다. 그 이유는 타 자료형과는 다른 비원시적 자료형이기 때문이다.

(내부 클래스 기반의 함수를 가짐)

 

String a ="Man";

int b = 0;


if(a.equals("Man")) {

System.out.println("남자입니다.");

}else {

System.out.println("여자입니다.");


}

if(b ==3) {

System.out.println("b는 3입니다.");

}else {

System.out.println("3이 아닙니다.");

}

(2) String의 비교연산자 중에 equalsIgnoreCase()대소문자 상관없이 문자열을 비교할 수 있다.


if(a.equalsIgnoreCase("man") && b == 0) {

System.out.println("a는 대소문자 상관없이 man이고, b는 0입니다.");

}else {

System.out.println("a는 대소문자 상관없이 man이 아니거나 b는 0이 아닙니다.");


}



<반복문>

4. while문을 이용해서 1부터 1000까지 합을 출력해보자.

- while문은 true일 때까지 돌아간다. i는 1부터, 1000까지 총 1000회를 돈다.

- while 안에서  i++;는 대입이 다 끝난 뒤에, 1이 더해진다. 즉,  sum+=i++; 에서 최초의 i값을 대입한 뒤에 i에다가 1이 더해진다.

  (1로 먼저 계산하고, 2가 된다)


int i = 1, sum = 0; //동시에 int형 변수를 선언할 수 있다.

while(i <= 1000) {

sum += i++;    //sum에 sum+ i를 대입하고 난뒤 i가 +1된다.

}

System.out.println("1부터 1000까지의 합은 " + sum + "입니다.");



< FOR문 해석 : ~부터 ~까지 1씩 증가시켜서 반복>

5. 이중 for문을 이용해서 삼각형을 출력해보자. for문의 구성은  for(초기화 부분, 조건부분, 증감연산자) 로 구성된다.

(1) 상수를 클래스 전역변수로 하나 만들자. 


final static int N = 30;


(2) 초기화 부분의 변수 i는 N=30부터 시작해서, i가 0보다 클 때까지 반복한다. 1씩 내려가다가 1까지 계산된 뒤 멈춘다. 출력을 하면, 

* 이 줄바꿈하면서 총 30개가 출력된다. 바깥 for문은 줄바꿈 30줄 하는 것으로 쓰일 것이다. 그리고 j가 30부터 1까지 사용될 것이다.


for(int i = N; i> 0; i --) { 

System.out.println("*");

}


(3) 이중 for문으로서, j는 i부터 시작해서,, j가 0보다 클 때까지, j를 하나씩 빼준다.  이때, println이 아니라 별이 붙어나오도록 ln을 뺀다.

(4) 문자열이 없는 println(); 만 호출해줘서 줄바꿈이 되도록 한다.


for(int i = N; i> 0; i --) { 

// 초기화 부분의 변수 i는 N=30부터 시작해서, i가 0보다 클 때까지 반복한다. 1씩 내려가다가 0이 되면 멈춘다.

for(int j = i; j>0 ; j--) {  //j는 30일때부터 시작해 1까지 가고, 또 29부터 시작해서 1까지 가고.. 를 반복

System.out.print("*");

}

System.out.println();

}


< 해석할 때, i를 먼저 고정시켜서 해석한다. >

i가 30일때, j는 30부터 1까지 총 30번이 반복되면서 30개의 별이 붙어서 출력된다. + 줄바꿈한다.

i가 29라면, j는 29부터 1까지 총 29개의 별을 붙혀 출력된다. +줄바꿈한다.

...

i가 1이라면, j는 1개의 별을 붙혀서 출력한다.+줄바꿈한다.



6. for문을 이용해서 원을 출력하는 프로그램을 작성해보자.

- x^2 + y^2 = r^2 원점을 중심으로 하는 원의 방정식의 원리를 도입할 것이다.

(1) 처음 상수를 15로 선언하자.

final static int N = 15;

(2) for문을 i는 -N부터 시작해서 / N까지/ 1씩 증가시키면서, 줄바꿈을 할 것이다.( 총 (2N + 1) 번의 줄바꿈)

(3) 이중for문에는 j가 -N부터 시작해서 N까지 1씩 증가시키면서 ( 가로도 2N+1 만큼 차지, i 와 무관)

i를 x, j를 y로 생각하고 원의 방정식을 만든다. 만약 반지름 내부라면 "*" 를 출력하고, 반지름 밖이라면 " " 공백을 출력하도록 하자


public class Main {

final static int N = 15;


public static void main(String[] args) {


// x^2 + y^2 = r^2 원점을 중심으로 하는 원의 방정식

for ( int i = -N; i<=N ; i++) {

for( int j = -N ; j <=N ;j++) {

if(i*i + j*j <= N*N) {

System.out.print("*");

}else {

System.out.print(" ");


}

}

System.out.println();


}




}

}


<해석> 

가로, 세로 2n+1의 격자안에서 

i가 -15 일때, +15까지 총 31번을 줄바꿈 할 것이다.(N이 홀수어야 한다?)

i가 -15라면, j는 -15부터 +15까지 31번을 반복하여, 붙혀서 출력하는데, 원의방정식 내부에 *를 출력한다. 원이아니라면 공백을 출력한다.

i가 -14라면, j는 -15부터 +15까지 31번을 반복하여, 붙혀서 출력...

- j는 i에 영향을 안받고, 정해진 N에 의해, 무조건 31개를 붙혀서 출력하며, 원의공식에 따라서 원 내부에 *를 찍는다

- i는 N에 의해 31개부터 1까지 줄어들면서 줄바꿈을 한다.




7. for(;;)  /  white(true)는 무한루프 이며, break로 탈출할 수 있다.

int count = 0;

for(;;)

{

System.out.println("출력");

count++;

if(count==10) {

break;

}

}

+ Recent posts