자바 라벨 제어문

자바 2017. 5. 12. 19:22
자바의 라벨 제어문은 continue와 break와 같이 연계하여 사용이 된다.
이중 반복문에서, 어떤 조건에서 이중 반복문을 벗어나거나 바깥쪽 반복문으로 벗어나도록 하기 위하여 라벨을 사용한다.

// Label을 이용한 continue문 프로그램 예제

public class LabelContinue {
    public static void main(String[] args) {
        jump: for(int x = 1;x <= 7;x++) {
            System.out.println("x 값 = " + x);
            for(int y = 1;y <= 5;y++) {
                System.out.println("y 값 = " + y);
                if(x <= 2)
                    continue jump;
                else if(x <= 4)
                    break jump;
                System.out.println("x = " + x + " : y = " + y);
            }
            System.out.println("x 값 = " + x);
        }
        System.out.println("프로그램 종료");
    }
}

실행 결과는 다음과 같다.

x 값 = 1

y 값 = 1

x 값 = 2

y 값 = 1

x 값 = 3

y 값 = 1

프로그램 종료

x 값이 2보다 작거나 같으면 바깥쪽 while 문으로 continue가 수행이 되고

x 값이 3일 경우 바깥쪽 while 문으로 break가 수행이 되어 while 문이 종료되고 프로그램 종료가 출력됨을 확인할 수 있다.

'자바' 카테고리의 다른 글

자바의 정석 연습문제 풀이 3-1 중  (0) 2022.06.29
자바 protected 접근 제어자  (0) 2017.05.18
utf-8로 저장된 자바 파일 에러 방지  (0) 2017.05.10
자바 super와 this  (0) 2017.04.06
자바 매소드 오버라이딩  (0) 2017.04.05
Posted by 세상을 살아가는 사람
,

자바 접근 제어자

자바 2017. 4. 5. 12:15
- 클래스, 멤버변수, 매소드에 대한 접근 권한 설정
- 종류 : public, protected, default, private
- public : 어디서든지 접근이 가능
- protected : 외부 클래스에서는 접근이 허용되지 않으며, 상속받은 클래스에서 접근 가능. 멤버변수와 매소드에서 지원.
- private : 상속받은 클래스에서도 접근이 허용되지 않음. 선언된 클래스내에서만 접근 가능.
- default : 접근 제어자를 사용하지 않을 경우 적용되는 접근 권한. 같은 패키지내에서는 접근이 가능하나 외부 클래스에서는 접근이 허용되지 않음.

private으로 선언하면 외부 클래스에서 접근이 허용되지 않으므로, "정보 은닉"과 같은 객체지향의 하나의 특성을 가진다. 보통 멤버는 private로 선언하여, 외부에서 직접 접근하지 못하게 은닉하고, 멤버를 변경하기 위한 매소드를 public으로 선언하여 간접적으로 값을 변경할 수 있다. 또한 매소드를 통한 접근은 다양한 부가 기능을 추가할수 있어 효과적이다.

'자바' 카테고리의 다른 글

자바 protected 접근 제어자  (0) 2017.05.18
자바 라벨 제어문  (0) 2017.05.12
utf-8로 저장된 자바 파일 에러 방지  (0) 2017.05.10
자바 super와 this  (0) 2017.04.06
자바 매소드 오버라이딩  (0) 2017.04.05
Posted by 세상을 살아가는 사람
,

5V GPIO I/O를 사용하는 아두이노 우노 보드에 대하여 ESP8266을 사용하는 방법을 기술한다.

기존에 기술한 것과 차이점은 아두이노 우노의 RESET 핀을 GND로 연결함으로써 아두이노를 dumy USB로 동작하게 함으로써 ESP8266의 Firmware를 업그레이드 할 때 용이하게 할 수 있다는 것이다.

SoftSerial을 사용하든 Hardware Serial을 사용하든 3.3V로 변환하지 않아도 된다는 것이 신기하기만 하다. 그 동안 동작을 잘 하지 않은 것이 ESP8266이 default로 115200bps로 동작하여 baud rate를 맞출 수 없어

동작이 잘 안되었던 것으로 판단이 된다. 따라서 9600bps로 Firmware를 업그레이 한다면 쉽게 사용할 수 있을 것 같다.


Posted by 세상을 살아가는 사람
,

이전 글에서 Firmware 업그레이드한 ESP8266 모듈을 사용하여 Station Mode 및 AP Mode로 동작함을 확인한다. 여기서도 아두이노 우노 보드가 3.3V GPIO I/O를 출력하는 것을 사용하였다. 5V GPIO I/O를 사용하는 것은 별도로 기술한다.






Posted by 세상을 살아가는 사람
,

ESP8266이 판매할 때 115200bps로 초기화 되어 있고, 아두이노와 연동하기 위해서는 9600bps로 동작하는 것이 좋다고 하여 Firmware를 upgrade 하고자 한다. 이에 대한 방법을 기술한다.

주의사항 : 여기서 사용한 아두이노 우노 보드는 3.3V로 GPIO I/O를 동작시킬 수 있도록 설정할 수 있는 것이다. 5V GPIO I/O로 동작하는 것은 별도로 기술한다.


Posted by 세상을 살아가는 사람
,

아두이노 우노보드에 WiFi 기능을 위해 WizFi250-H를 SPI로 연결하여 사용하고 있다.

프로젝트에서 Ubidots IoT cloud 플랫폼과 연동을 하려고 MQTT를 사용하는 방법을 기술한다.

아두이노 IDE 스케치 프로그램

mqtt_wizfi250_ubidots.ino




Posted by 세상을 살아가는 사람
,

OV7670카메라를 아두이노 우노 보드에 연결하여 실험을 해보았다.

http://arduino-makers.tistory.com/68를 참고하여 해 보았는데, 화질이 정말 좋지 않았다. terrible!!!

그래도 촬영은 되는 것 같다...

Posted by 세상을 살아가는 사람
,

BCM2835 Hardware를 사용한 라즈베리파이 3(?)에서 pi 카메라를 연결하여 동작 실험을 하고 있다.

1. 라즈베리파이를 최신의 버전으로 업그레이드를 한다.

$ sudo apt-get update

$ sudo apt-get upgrade

2. 우선 카메라를 카메라 I/F에 연결하고, $ sudo raspi-config를 사용하여 카메라 기능을 enable 시키고 재부팅을 한다.

  - 카메라 케이블은 파란색 부분이 이더넷 잭이 있는 쪽으로 연결

3. 카메라 촬영

  $ raspistill -o image.jpg


4. 동영상 촬영

  - $ raspivid -o video.h264

  - HDMI port를 사용하여 모니터로 동영상 촬영된 것을 보기 : $ omxplayer video.h264

    + 터미널로 동영상이 출력되지 않고, HDMI 케이블에 연결된 모니터로 출력된다.

5. 동영상 스트리밍 서버를 구현하기 : mjpg-streamer 구현

  $ sudo apt-get install git cmake libjpeg8-dev imagemagick -y

  $ sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h

  $ git clone https://github.com/liamfraser/mjpg-streamer

  $ cd mjpg-streamer/mjpg-streamer-experimental/

  $ make clean all

  $ sudo nano mjpg.sh    // /home/pi 디렉토리에 파일 생성

export STREAMER_PATH=$HOME/mjpg-streamer/mjpg-streamer-experimental

export LD_LIBRARY_PATH=$STREAMER_PATH

$STREAMER_PATH/mjpg_streamer -i "input_raspicam.so -d 200" -o "output_http.so -w $STREAMER_PATH/www"

$ sh mjpg.sh

- 크롬 브라우저에서 확인 : http://hostname:8080/stream.html

- 혹시 8080 port가 이미 사용 중이라면 port 관련 부분을 변경해 준다.


Posted by 세상을 살아가는 사람
,

라즈베리파이 모델이 여러가지가 있고, 또 Open Hardware라서 여러 벤더들이 있다.

라즈베리파이 모델 3라고 하여, 보드에 WiFi와 BLE과 내장되어 있는 것이 있는데, /proc/cpu_info를 해보니

CPU가 BCM2835 였다. 보통 BCM2709인데, 이상하게 이놈은 BCM2835였다. 아니면 BCM2836엔데...

그래서 webiopi가 동작하지 않는다. 프로그램에서 CPU 정보를 읽어 처리를 하는데, 정상적인 CPU가 아니기 때문에 비정상적인 처리를 하는 것이다. 그러므로 구매할 때 내장된 CPU 정보를 꼭 확인해 보는 것이 필요하다.

Posted by 세상을 살아가는 사람
,

아두이노를 이용하여 IoT를 하기 위해 정리한 책. 다만 클라우드 서버와의 연동과 WiFi 연결에 대한 자료가 부족. 아두이노 중심의 모듈들에 대한 실험이 그런대로 잘 정리되어 있으며, Free RTOS에 대한 것이 조금 관심이 간다.



Posted by 세상을 살아가는 사람
,