Basic

Variable 변수

변수란?

왜 필요한가?

ex) 문자 a을 3개 출력하시오.

void main() {

  print('a');
  print('a');
  print('a');

}

ex) 위 예제의 값 a'를hong`으로 변경하시오.

void main() {

  // 일일이 변경해야 함
  print('hong');
  print('hong');
  print('hong');

}

ex) 변수명 name을 사용해서 a를 3개 출력하시오.

void main() {

  // name이란 이름으로 메모리 어딘가 a값을 저장 
  var name = 'a';
  print(name);
  print(name);
  print(name);

}

ex) 위 예제의 값 ahong으로 변경하시오.

void main() {

  // 변수의 값 만 변경 하면 됨
  var name = 'hong';
  print(name);
  print(name);
  print(name);

}

변수의 선언

정확한 데이터 타입으로 선언

정확한 데이터 타입 종류

추론 데이터 타입 종류

변수 선언 방법 : 데이터 타입 + 변수명

ex) 정확한 데이터 타입으로 선언하시오.

void main() {

  //- String : 문자열
  String s1;
  String s2;

  //- bool : 불리언, 비교, 논리 값 true or false
  bool b1;
  bool b2;

  //- int, double :  정수, 실수
  int i;
  double d;

  //- num : 정수, 실수
  num n1;  
}

ex) 추론 데이터 타입으로 선언하시오.

void main() {

  //- var : 타입 추론 후 타입 고정
  var v;

  //- dynamic  : 계속 다른 타입 할당 가능
  dynamic d;
}

변수에 값 대입(할당)

대입(할당) 연산자 : =

변수의 초기화

정확한 데이터 타입 변수의 초기화

추론 타입 변수의 초기화

ex) 정확한 타입의 변수를 하나 선언 후 그 변수를 출력해 보시오.

void main() {

  // 변수의 선언
  num n;  

  // 변수의 사용 - Error
  print(n);

}

ex) 변수의 선언 후 초기화 or 선언과 동시에 초기화로 Error 해결

void main() {

  // 변수의 선언
  num n1;  
  // 선언 후 초기화
  n1 = 10;

  // 변수의 선언과 동시에 초기화
  num n2 = 3.14


  // 변수의 사용
  print(n1);
  print(n2);

}

ex) 추론 타입의 변수를 하나 선언 후 그 변수를 출력해 보시오.

void main() {

  // 변수의 선언
  var v;  

  // 변수의 사용 - null 출력
  print(v);

}

넣어라 VS 가져와라

ex) 변수 선언 및 값을 대입 하시오.

void main() {

  //- String : 문자열
  String s1 = 'hello';
  String s2 = "Hi";

  //- bool : 불리언, 비교, 논리 값 true or false
  bool b1 = true;
  bool b2 = false;

  //- int, double :  정수, 실수
  int i = 10;
  double d = 3.14;

  //- num : 정수, 실수
  num n1 = 10;
  num n2 = 3.14;

  //- var : 타입 추론 후 타입 고정
  var v = 10;

  //- dynamic  : 계속 다른 타입 할당 가능
  dynamic d = 'hello';
}

ex) var, dynamic의 차이점을 확인 하시오.

 void main() {

  //- var : 타입 추론 후 타입 고정
  var v = 10;

  // Error
  v = 3.14;

  //- dynamic  : 계속 다른 타입 할당 가능
  dynamic d = 'hello';

  // 다른 타입 대입 가능
  d = 3.14;  

}

ex) 변수에 실수 값 3.14를 넣고 가져와서 출력하시오.

void main() {

  // 넣어라
  double pi1 = 3.14;
  num pi2 = 3.14;
  var pi3 = 3.14;
  dynamic pi4= 3.14;

  // 가져와서 출력하라
  print(pi1);
  print(pi2);
  print(pi3);
  print(pi4);

}

상수 : final / const 선언 변수

ex) final 상수를 선언 및 초기화 후 값을 변경해 보시오.

void main() {

  // 넣어라
  final var PI = 3.14;

  // Error
  PI = 3.14159;    

}

ex) const 상수를 선언 및 초기화 후 값을 변경해 보시오.

void main() {

  // 넣어라
  const var PI = 3.14;

  // Error
  PI = 3.14159;    

}

ex) final / const 상수의 차이점을 확인 해보시오. 기본 : 값을 넣을 수 있기만 하면 됨

void main() {

  // DateTime.now() 메서드는 실행 될 때 값이 호출 됨
  DateTime now = DateTime.now();

  // OK!
  print(now);

}

final : 프로그램이 실행 될 때 있으면 됨

void main() {

  // DateTime.now() 메서드는 실행 될 때 값이 호출 됨
  final DateTime now = DateTime.now();

  // OK!
  print(now);

}

const : 프로그램이 빌드 될 때 될 때 있어야 됨

void main() {

  // DateTime.now() 메서드는 실행 될 때 값이 호출 됨
  const DateTime now = DateTime.now();

  // Error!
  print(now);

}

식별자 Identifier 네이밍 규칙, 네이밍 컨벤션

명명 관례

ex) 2개의 단어로 이루어진 변수를 선언하고 값을 출력하시오.

void main() {

  // 넣어라
  String myName = 'hong';  
  int maxNum = 100;

  // 가져와서 출력하라
  print(myName);
  print(maxNum);

}

변수의 범위 Scope

실행 블록 { }과 지역 변수 Local

ex) 하위 블록에서 상위 실행 블록 값을 확인해 보세요.

void main() {// main() 블록 시작
  int i = 10;  

  {// 블록 시작

    // 상위 블록의 변수 값 사용 가능
    print(i);  

  }// 블록 끝

  print(i);  
}// main() 블록 끝

ex) 하위 블록에서 선언한 변수 값을 상위 실행 블록에서 확인해 보세요.

void main() {
  // main() 블록 시작  

  { // 블록 시작
    int i = 10;

    print(i);
  } // 블록 끝

  // 하위 블록의 변수 값 사용 가능 : Error
  print(i);
}// main() 블록 끝