ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TECHIT 앱 스쿨 2기: Android 4일차 (23.04.27)
    [THEC!T] 앱 스쿨2기 : Android 2023. 4. 27. 19:35
    728x90

    자료 출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 내용

     

    오늘은 조건문과 반복문을 배우고 실습하는 시간이 길었습니다.

    개인적으로 보는 것보단 직접하는게 실력이 금방 늘어나는 것을 스스로 잘 알고 있기에 만족스러운 날이였습니다.

    이제 내일부터 어려워 질거 같아 걱정이 되지만 잘 이해하는 방법은 보고 또 보는 방법뿐이기에 주말에는 복습할 수 있도록 하겠습니다.

     

    일단 오늘 강의 내용은 대부분 실습이였기에 주제는 매우 적습니다.  하지만 특히 자바에 초보인 저한테는  알찼던 강의였습니다.

     

    시작은 어제 시간 관계상 설명 해주시지 못한 연산자들에 대해서 알려주셨습니다.

     

    3 항 연산자

    주어진 비교 연산의 결과가 true 면 값1이 연산의 결과가 되고 false면 값2가 연산의 결과가 됩니다.

    형태 : 비교연산식 ? 값1 : 값2

    int num1 = 100;
    boolean check = num1 > 100 ? true : false;
    // 결과
    // check = false
    
    int num2 = 200;
    boolean check2 = num2 > 100 ? true : false;
    // 결과
    // check2 = true


    배정 대입 연산자 

    // 우측의 값을 좌측의 변수에 저장함.
    int a = 100;
    // = 가 대입 연산자
    // a라는 변수의 100을 저장한다.


    후위형 증감 연산자

    후위형 증감 연산자는 연산을 마친 후에 해당 값을 1을 증감 시키는 연산자 이다.

    int a = 1;
    int b = a++;
    
    // 결과 값
    a = 2
    b = 1
    // 2번 라인에서 a의 값을 b라는 변수에 저장 한 후 a의 값을 1증가 시켰다
    // 만약 감소시킬거라면 a--; 를 사용하면 된다.

     

    조건문

    조건문의 종류에는 if문, if ~ else문 if~ if else ~ else 문 switch 문이 있다.

    // if문
    int a = 100;
    int b = 200;
    
    // 괄호안에 수식이 true일 때 하기 코드 실행한다. 만약 실행하려는 코드가
    // 2줄 이상일 경우 {} 를 사용하여 묶어주어야 한다.
    if(a < 100) 
    	System.out.println("a는 100보다 작다.");
     
    // if ~ else 문
    // if문 괄호안에 조건이 false일 경우 else문을 실행한다.
    
    if(a < 100)
    	System.out.println("a는 100보다 작다.");
    else 
    	System.out.println("a는 100보다 작지 않다.");
     
     // if ~ else if ~ else 문
     // if문 괄호 안의 조건식이 true가 아니면 else if문 괄호를 확인하여 true 일 경우 진행한다.
     // 만약 if문과 else if문의 괄호 내 조건이 모두 false 라면, else문을 실행한다.
     
    if(a < 100)
    	System.out.println("a는 100보다 작다.");
    else if(b < 400)
    	System.out.println("b는 400보다 작다.");
    else 
    	System.out.println("다른 조건을 추가 해야함.");
        
    // switch 문은 해당 값이 나올 수 있는 결과가 정해져 있을때 사용한다.
    // 하지만 현재에 이르러서는 if ~ else문이나 if ~ else if ~ else 문과
    // 실행 속도가 크지 않아 많이 사용하지 않는 추세이다.
    // 그리고 해당 케이스에 조건이 동일하다면, 하기에 있는 조건들도 모두 실행하기에
    // break문을 적어 조절한다.
    
    int c = 100;
    		
    switch(c) {
    case 1:
        System.out.println("a2는 1 입니다.");
        break;
    case 5 :
        System.out.println("a2는 5 입니다.");
        break;
    case 10 : 
        System.out.println("a2는 10 입니다.");
        break;
    case 20 :
        System.out.println("a2는 20 입니다.");
        break;
    default :
        System.out.println("a2는 1, 5, 10, 20이 아닙니다.");
    }
    
    // 결과 
    a2는 1, 5, 10, 20이 아닙니다.

     

    반복문

    반복문은 for 문, while문, do ~ while문 이 있다.

     

    for문은 초기식, 조건식, 증감식으로 구성이 되어있다.

    // for문 괄호안을 보면 
    // int i = 0 초기식
    // i < 10 조건식
    // i++ 증감식
    // 해석하자면 i는 0 부터 10이 되기 전까지(9까지) 1씩 증가한다.
    // i가 10보다 작을 동안 하기 코드들을 실행한다.
    // 쉽게 말해 10번 실행한다는 말이다.
    
    for(int i = 0; i < 10; i++){
    	System.out.printf("%d ",i);
    }
    // 출력 결과
    0 1 2 3 4 5 6 7 8 9

    while문과 do ~ while문

    // while문은 주어진 조건식이 true일 경우 계속 반복한다.
    // 하기 코드는 100번을 반복하는 코드이다.
    // a는 0부터 시작하여 100까지 증가하게 되는데, a가 100이 되는 순간
    // while문 내 조건 식이 false가 되면서 반복문이 멈추게 된다.
    int a = 0;
    while(a < 100){
    	a++;
    }
    
    // 하기 코드는 a의 값이 증가하는 코드가 없어 a < 100 조건이 항상 true 이기에
    // 멈추지 않는다. 이런 경우 스택오버플로우라는 에러가 발생하며, 디버깅이 안된다.
    // 그렇기에 while문을 사용할 때에는 조건을 잘 설정해놔야 한다.
    int a = 0;
    while(a < 100){
    	System.out.println("절대로 멈추지 않는 핸들이 고장난 8톤 트럭")
    }
    
    // do ~ while문
    
    // do ~ while문은 처음부터 while문 내의 조건이 false라도 do문 안에 있는 코드를 1번 실행 시킨다.
    
    int a = 100;
    do {
    	a++
    } while (a < 100);
    
    // a는 100 이라서 실행이 while문 조건에 false 이지만 do문에 있는 코드가 한번 실행되어
    // a는 101이 된다.

     

    상기 내용은 대략적으로 적은 것이고, 이후로는 강사님께서 예제 문제를 적어주시면서 일정 시간까지 작성해보는 시간을 가졌습니다.

     

    물론 당일 배운 내용으로 작성할 수 있는 예제 문제들이였으며, 오랜만에 별찍기 문제들도 풀었던 것 같습니다.

    혹시 모르니 적어주신 문제들 중에 일부를 예시로 들겠습니다.

    		// 문제5)
    		//     *
    		//   * *
    		// * * *
    		System.out.println("문제5");
    		for(int i = 1; i <= 3; i++) {
    			for(int j = 1; j <= 3; j++) {
    				if(i+j >= 4)
    					System.out.printf("%s ", "*");
    				else
    					System.out.print("  ");
    			}
    			System.out.println();
    		}
    		
    		//강사님 코드
    //		System.out.print("  ");
    //		System.out.print("  ");
    //		System.out.print("* ");
    //		
    //		System.out.println();
    //		
    //		System.out.print("  ");
    //		System.out.print("* ");
    //		System.out.print("* ");
    //		
    //		System.out.println();
    //		
    //		System.out.print("* ");
    //		System.out.print("* ");
    //		System.out.print("* ");
    //		
    //		System.out.println();
    		
    //		for(int i = 0 ; i < 3 ; i++) {
    //			if(i <= 1) {
    //				System.out.print("  ");
    //			} else {
    //				System.out.print("* ");
    //			}
    //		}
    //		System.out.println();
    //		
    //		for(int i = 0 ; i < 3 ; i++) {
    //			if(i < 1) {
    //				System.out.print("  ");
    //			} else {
    //				System.out.print("* ");
    //			}
    //		}
    //		System.out.println();
    //		
    //		for(int i = 0 ; i < 3 ; i++) {
    //			if(i < 0) {
    //				System.out.print("  ");
    //			} else {
    //				System.out.print("* ");
    //			}
    //		}
    //		System.out.println();
    		
    //		for(int k = 0; k < 3; k++) {
    //			int a1 = 2 - k;
    //			for(int i = 0 ; i < 3 ; i++) {
    //				if(i < a1) {
    //					System.out.print("  ");
    //				} else {
    //					System.out.print("* ");
    //				}
    //			}
    //			System.out.println();
    //		}
    //

    상기 코드를 보시면 주석인 부분은 모두 강사님이 적어주신 코드입니다.

    강사님께서 반복문을 저 포함 교육생들이 이해하기 쉽게 알려주시려고 처음에는 일일이 코드를 작성하여 

    별 그림을 완성하셨고, 일일이 작성한 코드들의 공통된 부분을 알려주시면서, 반복문으로 작성 하고, 작성한 반복문에서 일한 부분을 말씀해 주신 다음 최종적으로는 이중for문이 되는 과정을 알려주셨습니다.

     

    마무리

     

    오늘 가장 기억에 남는 강사님께서 해주신 말씀이 있습니다.

     

    1. 한국말로 설계를 먼저 한 후 작성자가 원하는 대로 코드 작성.
    2. 코드는 작성자별로 다르게 나올 수 있기에 강사님의 코드와 다르다고 오답이라고 생각하지 않도록 생각하기.
    3. 강의 중 이해가 잘 가지 않을 경우 혼자 고민하지말고 물어보기

    4. 가장 중요한 건 코드에 정답은 없다 일단 돌아가도록 코드를 작성한 후 정리하는 것은 나중의 일이다.

     

    오늘 강의내용을 제외하고 해주신 말씀들 중에서 기억에 남는 말씀은 "가장 중요한 건 코드에 정답은 없다 일단 돌아가도록 코드를 작성한 후 정리하는 것은 나중의 일이다. " 입니다.

     

    어디서인지는 모르겟는데 들었던 말 중에 "일단 이쁘지만 고장난 제품말고, 쓰레기 같이 생겼지만 기능이 제대로 동작하는 제품을 만들어라" 라는 말이 떠올랐던 것 같습니다.

     

    코드에 대한 공부도 마찬가지 인것 같습니다. 

    처음에는 원하는 동작을 하도록 아는만큼 작성한 후에 작성한 것을 보면서 고쳐가며, 실력이 상승하는 길인 것 같습니다.

    약간 예시로 들자면 카카오톡이 처음에 출시 될 때 지금의 카카오톡이 아닌 것처럼?

Designed by Tistory.