Programming 기초/Java

[Java] 프로그래밍과 디버깅

뭉제 2023. 2. 16. 17:09
목차
1. 프로그램
2. 프로그래밍 vs 코딩
3. 모의 프로그램
4. 이클립스 디버깅

 

 

프로그램(program)

· 시간에 따라 실행할 작업들의 순서

· 컴퓨터를 비롯한 시스템에서 특정 작업을 수행하는 명령어들의 집합 

 

public class Program {
	public static void main(String[] args) {
		System.out.println(1);
		System.out.println(2);
		System.out.println(3);
	}
}

위의 예시는 화면에 1, 2, 3을 순서대로 출력하는 작업을 수행한다.

 

3줄이 아니라 1억 줄에 이르는 작업을 수행한다면?

실수하면 안되는 작업이라면?

시간이 오래 걸리는 작업이라면?

 

이때, 컴퓨터 프로그래밍으로 사람이 잘 못하는 일을 기계에게 위임해서 자동화할 수 있다.

 

 

 

프로그래밍 vs 코딩


프로그래밍(programming)

· 컴퓨터의 프로그램을 작성하는 일

· 특정 목적을 달성하기 위해 설계된 알고리즘을 프로그래밍 언어를 사용하여 구체적인 프로그램으로 작성하는 과정

· 문제 분석과 프로그램의 설계 및 번역, 실행 과정을 거쳐 결과를 얻고 테스트 및 디버그하는 전 과정

 

 

코딩(coding)

· 프로그래밍 안에서 코드, 즉 명령을 작성하는 것

· 작업의 흐름에 따라 프로그래밍 언어의 명령문을 써서 프로그램을 작성하는 일

· 우리가 이해하는 언어에서 컴퓨터가 이해할 수 있는 언어(java, python 등)로 바꾸는 것 

 

=> 프로그래밍은 프로그램을 작성하는 과정이고, 그 과정에 코딩이 포함되어 있다.

 

 

 

IoT 모의 프로그램 만들기


생활코딩님 https://github.com/egoing/java-iot 에서 org.opentutorials.iot 패키지 다운 후 프로젝트에 붙여 넣기

 

 

집에 갈 때 반복적으로 일어났던 작업을 자동화하는 프로그램을 만들어 보자.

엘리베이터를 1층으로 부르고, 현관문 보안을 해제하고, 집에 들어오면 불이 켜져 있는 작업을 수행해야 한다.

 

import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Security;
import org.opentutorials.iot.Lighting;

public class OkJavaGoInHome {
	public static void main(String[] args) {
		String id="JAVA APT 507";
		
		//Elevator call
		Elevator myElevator=new Elevator(id);
		myElevator.callForUp(1);
		
		//Security off
		Security mySecurity=new Security(id);
		mySecurity.off();
		
		//Light on
		Lighting hallLamp=new Lighting(id+"/Hall Lamp");
		hallLamp.on();
		
		Lighting floorLamp=new Lighting(id+"/Floor Lamp");
		floorLamp.on();	
	}
}

실행 결과

· import 이용 -> org.opentutorials.Elevator를 Elevator로 입력 가능

· "JAVA  APT 507" 같이 반복적으로 사용되는 데이터는 변수로 지정

 

 

 

이클립스 디버깅 이용하기


디버깅(debugging)

· 프로그램의 오류를 찾아내고 고치는 작업

 

 

1) 브레이크 포인트(breakpoint) 지정

· 라인 번호 왼쪽을 더블클릭 or 우클릭 -> Toggle Breakpoint (Ctrl+Shift+B)

 

· 7번 줄에 브레이크 포인트 지정

· 브레이크 포인트를 지정한 상태에서 디버거 실행 -> 브레이크 포인트까지 코드가 실행되고 일시정지

· 브레이크 포인트를 다시 더블클릭 -> 브레이크 포인트 해제

 

 

2) 디버그 모드로 실행(F11)

· 상단의 메뉴 중 벌레 모양 버튼을 클릭하면 디버거 실행 가능

· Step Over(F6) - 한 라인씩 실행

· Resume(F8) - 다음 브레이크 포인트까지 실행, 더 이상 브레이크 포인트가 없다면 끝까지 실행

 

· 우측의 variables 탭에서 변수와 객체의 상태 확인 가능

 

· 변수 위에 마우스 커서를 올려서도 확인 가능

 

· Expressions 탭에서 변수 이름이나 수행해보고 싶은 명령어를 입력해 결과 확인 가능

 

 

3) 자세한 실행 과정 보기

· Step Into(F5) - 한 라인씩 실행(메소드를 포함한 라인을 만나면 메소드 내부로 진입)

 

- myElevetor의 callForUp 메소드가 실행되는 줄에서 Step Into 버튼 클릭

- Elevator 객체의 callForUp 메소드의 코드가 실행되는 과정을 확인 가능

Elevator 클래스

· Step Return(F7) - 현재 메소드에서 바로 리턴 후 원래 코드로 돌아감

· Terminate(Ctrl+F2) - 디버깅 종료