brunch

You can make anything
by writing

C.S.Lewis

by Cylogic Aug 06. 2020

8. 조건과 반복 작업의 이해

코딩 이해

조건문


코딩을 진행하다 보면 수많은 조건의 선택 지점을 만나게 된다.


예)

1. 앞선 프로그램에서 처럼 "만일 버튼이 눌려져 있다면?"

2. 날이 어두워지면 불이 켜지는 프로그램에서 "만일 어둡다면?"

3. 사람이 가까이 오면 작동하는 장난감에서 "만일 사람이 가까이 있다면?"

4. 자율 주행 자동차에서 "만일 앞에 장애물이 있다면?"

5. 65세 이상 노인에게 무료 제공되는 서비스에서 "나이가 65세 이상이면?"


이러한 조건에 부합하는지 아닌지를 확인하는 명령어가 바로 

if~else이다.

이처럼 조건은 다양한 곳에 이용된다.


if (조건) {

    // 이곳에 조건이 참일 경우 수행할 명령어를 둔다.

else {

    // 이곳에 조건이 거짓일 경우 수행할 명령어를 둔다.

}


앞 강좌의 예제에서 디지털 pin 2번에 연결된 버튼이 눌렸는지 아닌지를 판단하는 방법으로 바로 if  명령어가 쓰였다.


반복문


이제 6개의 LED를 연결하여 불이 켜지는 예제를 살펴보려 한다.


위의 그림과 같이 LED가 연결되었고 동시에 6개의 불을 켜고 끄는 프로그램을 만든다면 아래와 같이 만들 수 있을 것이다.


void setup()

{

  pinMode(8, OUTPUT);

  pinMode(9, OUTPUT);

  pinMode(10, OUTPUT);

  pinMode(11, OUTPUT);

  pinMode(12, OUTPUT);

  pinMode(13, OUTPUT);

}

void loop()

{

  digitalWrite(8, HIGH);

  digitalWrite(9, HIGH);

  digitalWrite(10, HIGH);

  digitalWrite(11, HIGH);

  digitalWrite(12, HIGH);

  digitalWrite(13, HIGH);  

  delay(1000); 


  digitalWrite(8, LOW);

  digitalWrite(9, LOW);

  digitalWrite(10, LOW);

  digitalWrite(11, LOW);

  digitalWrite(12, LOW);

  digitalWrite(13, LOW);  

  delay(1000);

}


8번부터 13번에 핀을 OUTPUT으로 선언하여 출력 핀으로 지정하고,

8번부터 13번 핀을 HIGH로 하여 불을 켜고,

1초간 멈춘 후,

8번부터 13번 핀을 LOW로 하여 불을 끄고,

1초간 멈춘 후,

이를 무한 반복하는 명령어이다.



8번부터 13번까지 핀에 계속하여 동일한 명령을 지시할 경우 이를 계속 반복하지 않아도 되는 방법이 있다.

바로 for라는 명령어이다.

이를 이용하여 코딩을 다시 하게 된다면,


void setup()

{

  for (int i=8; i <=13; i++)  pinMode(i, OUTPUT);

}

void loop()

{

  for (int i=8; i <=13; i++)    digitalWrite(i, HIGH);

  delay(1000); 


  for (int i=8; i <=13; i++)    digitalWrite(i, LOW);  

  delay(1000);

}


위와 같이 고칠 수 있다.

단순히 6줄의 명령어를 1줄로 바꿀 수 있는 장점뿐 아니라, 우리가 하고자 하는 일관된 명령어의 수행 구조를 명확하게 하여 준다.


형식은 다음과 같다.


for (변수 = 초기값 ; 변수의 끝 값 ; 변수의 변화량){

    // 해당 변수를 이용하여 수행할 내용

}


위의 내용은 i 변수가 8에서 13까지 하나씩 변경하며 내용을 수행하라는 명령어인 것이다.

명령이 하나밖에 없는 경우 {}를 사용하지 않고 명령어를 지정할 수 있다.




반복문의 공부에 더하여 int i=0와 같은 특정한 변수의 선언과 그 변수에 값을 지정하는 부분이 함께 표현되어 있다.


i는 변수이다.  


i=0이라면 i라는 변수에 0을 저장하는 것이다.


그 앞에 지정된 int는 i가 정수 자료를 받아들이는 변수임을 나타낸다.

만일 글자형이면 char, 실수이면 float이나 double과 같은 변수의 형식이 있는데 이들은 각각 필요하면 다시 배우기로 하자.




코딩 명령어의 가장 중요한 부분 3가지 - 변수에 값 지정,  조건, 그리고  반복에 대한 공부를 마쳤으므로 이제 이를 이용하여 다양한 코딩 작업을 진행해 보겠다.


실제 만들기 작업에 들어가기 전에 코딩의 기본을 배우는 것이 가장 어렵다. 

오늘 내용을 모두 이해하지 못하여도 따라 하기를 하는 것에는 지장이 없으니 큰 걱정 말고 다음 강좌에 들어가 보자.




브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari