안녕하세요 대짜이찐입니다.
프로그램 기초중 변수와 배열에 대해
간단하게 설명해드리겠습니다.
변수 | ||
변수란 변하는 숫자라는 의미로,
임시적으로 저장했다가 다른 값으로 변할수 있는 수라고 해석하면 됩니다.
변수를 선언해 주면 변수의 이름을 통해 데이터값을 저장할 수 있는 공간이 생성 됩니다.
변수를 선언 하고 초기화할때의 형태는
자료형 공간 변수이름 = 데이터;
형태입니다. 첫번째로 자료형 공간을 지정해주고,
변수의 이름을 설정해주고 값을 초기화 해줍니다.
자료형 공간 변수이름;
변수이름 = 데이터;
이렇게 두 줄로 변수를 먼저 선언 해주고
이후에 변수에 값을 넣어 초기화 시켜 줄수도 있습니다.
변수를 초기화 하지 않는다면 변수에 쓰레기값(알 수 없는 값)이 들어가기 때문에
사용전에는 초기화 해주어야 합니다.
자료형
|
크기
|
값의범위
| |
문자형
|
char
|
1 바이트(Byte)
|
-128~127
|
정수형
|
Byte
|
1 바이트(Byte)
|
0~255
|
Int
|
2 바이트(Byte)
|
-32768~32767
| |
Short
|
2 바이트(Byte)
|
-32768~32767
| |
Long
|
4 바이트(Byte)
|
-2147483648~2147483647
| |
실수형
|
Float
|
4 바이트(Byte)
|
-3.4x10^38~3.4x10^38
|
Double
|
4 바이트(Byte)
|
-3.4x10^38~3.4x10^38
|
데이터의 종류에 따라 변수의 자료형을 알맞게 써야 합니다.
너무 작으면 데이터가 못들어가고, 너무 크면 RAM을 낭비하게 됩니다.
아두이노를 통해 간단한 예제로 확인해 보겠습니다.
/*
Variable
*/
int val= 0; // int 형 변수 val을 선언하고 값을 0으로 초기화
void setup() { //초기 설정 함수.
Serial.begin(9600); // 시리얼 통신 속도 9600으로 설정
}
void loop() { //반복 함수 프로그램의 주 내용이 들어간다.
Serial.println(val); // 변수 val의 값을 출력
val++; //val의 값을 1씩 증가시켜라
delay(500); // 0.1초 동안 시간을 지연시켜라.
}
|
해당 예제는 val이라는 변수를 선언하고 0으로 초기화 시킨후
Loop()함수가 동작할때마다 val의 값을 1씩 증가하여 출력하는 프로그램 입니다.
배열 | ||
배열은 같은 자료형을 가진 여러개의 변수를 모아 놓은 것입니다.
동일한 자료형의 변수를 여러개 선언해야 할 때, 유용하게 사용 할 수 있습니다.
동일한 자료형의 변수를 여러개 선언해야 할 때, 유용하게 사용 할 수 있습니다.
5개의 int형 변수를 사용 할때, 이름을 각기 다르게 하여 변수를 선언해야 하지만,
배열을 사용한다면 a라는 이름의 배열 안에 변수를 5개 넣을 수 있습니다.
배열의 구조는 자료형, 배열의 이름, 배열의 크기로 이루어져 있습니다.
배열의 요소(인덱스,index)는 0부터 시작합니다.
배열은 1차원 이상의 다차원 배열도 가능하며,
1차원 배열과 2차원 배열을 가장 많이 사용합니다.
1차원 배열과 2차원 배열을 가장 많이 사용합니다.
2차원 배열 array를 선언하고 초기화하면 위와 같은 그림으로 나타낼 수 있습니다.
위의 방법은 아두이노에서 배열을 선언하는 방법들입니다.
a처럼 초기화 하지않고, 배열의 크기만 선택한뒤 선언하는 방법이 있고,
c와같이 선언과 동시에 초기화하는 방법이 있습니다.
b의 경우에는 명시적으로 크기를 선택하지 않고 배열을 선언하는 방법이 있습니다.
이경우에는 컴파일러가 배열을 세고, 적절한 크기의 배열을 만듭니다.
message 이후로는 문자형(char) 배열을 선언할 때입니다.
이때는 마지막에는 문자열이 끝나는것을 의미하는 널(null, \0)문자를 넣어야 하기 때문에
배열의 크기를 1개 더 크게 선택해 주어야 합니다.
str1은 message와 이름만 다른 배열입니다.
str2를 보면 문자열 배열도 배열의 크기를 선택하지 않아도 컴파일이 가능합니다.
str3을 보면 문자열은 큰 따옴표(“ ”)안에 정의 되고,
이 문자들은 다시 작은 따옴표(‘ ‘)안에 정의됨을 알 수 있습니다.
str4에서는 명시적으로 널(null)문자를 더해서 선언했습니다.
감사합니다.
c와같이 선언과 동시에 초기화하는 방법이 있습니다.
b의 경우에는 명시적으로 크기를 선택하지 않고 배열을 선언하는 방법이 있습니다.
이경우에는 컴파일러가 배열을 세고, 적절한 크기의 배열을 만듭니다.
message 이후로는 문자형(char) 배열을 선언할 때입니다.
이때는 마지막에는 문자열이 끝나는것을 의미하는 널(null, \0)문자를 넣어야 하기 때문에
배열의 크기를 1개 더 크게 선택해 주어야 합니다.
str1은 message와 이름만 다른 배열입니다.
str2를 보면 문자열 배열도 배열의 크기를 선택하지 않아도 컴파일이 가능합니다.
str3을 보면 문자열은 큰 따옴표(“ ”)안에 정의 되고,
이 문자들은 다시 작은 따옴표(‘ ‘)안에 정의됨을 알 수 있습니다.
str4에서는 명시적으로 널(null)문자를 더해서 선언했습니다.
아두이노를 통해 간단한 예제로 확인해 보겠습니다.
/*
array_test
http://www.devicemart.co.kr/
*/
// 배열 선언
int arr[3][4]= { // 이중배열
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int a[5]; // 초기화 (X)
char message[6]="hello";
char str4[]={'h','e','l','l','o','\0'};
void setup() { //초기 설정 함수.
Serial.begin(9600); // 시리얼 통신 속도 9600으로 설정
for(int i=0;i<3;i++)
for(int j=0;j<4;j++)
{
Serial.print(arr[i][j]); // 변수 val의 값을 출력
Serial.print(" ");
}
Serial.print("\n");
for(int i=0;i<5;i++)
Serial.print(a[i]); // 변수 a의 값을 출력
Serial.print("\n");
for(int i=0;i<6;i++)
Serial.print(message[i]); // 변수 message의 값을 출력
Serial.print("\n");
for(int i=0;i<6;i++)
Serial.print(str4[i]); // 변수 str4의 값을 출력
Serial.print("\n");
}
void loop()
{
// void
}
|
감사합니다.
0 댓글