반응형

구글 검색해서 주워왔는데 문제될꺼 없겠지?

자바, C, 스크립트 모든 언어에 반드시 있는 조건문.

Dart에도 조건문이 존재한다. 이번에는 조건문 If와 Switch에 대해 다뤄보려 한다.

주어진 조건에 대해 결정을 내리는 역할을 하며, 결정된 내용(정의된 기능)을 수행토록 한다.

소스로 알아보도록 하고, 준비물인 웹컴파일러는 아래 포스팅에 포함되어 있다.

 

Dart언어공부-01.Hello World

Flutter가 요즘 핫하게 올라오면서, Flutter의 주력 언어(다른언어도 가능함)인 Dart를 공부해보려 한다. 간단하게 Flutter란? Google에서 개발하고 Mobile World Congress 2018에서 최초 베타..

masswhale.tistory.com


1. if(조건){수행할 내용}

void main() {
  int number=20;
  
  //number라는 변수를 4로 나누었을때, 나머지가 0인지를 if괄호안에 조건을 
  //작성한다. true가 반환되면서 중괄호 안의 기능이 수행된다.
  if(number % 4 == 0){
    print('4의배수 맞음');
  }  
}

실행결과

4의배수 맞음

2. if(조건){수행할 내용}else if(다른 조건){수행할 내용}

void main() {
  int number=20;
  
  //number라는 변수를 4로 나누었을때, 나머지가 0인지를 if괄호안에 조건을 
  //작성한다. true가 반환되면서 중괄호 안의 기능이 수행된다.
  if(number % 4 == 0){
    print('4의배수 맞음');
  }  
  
  //첫번째 조건이 맞지 않을 수도 있을때, 추가적인 조건을 질의할 수 있다.
  //말로 풀자면, 2곱하기2는 5야? 아니야? 그럼 2곱하기2는 4야?? 이런식으로 되묻는다고 생각하자.
  //위의 예제를 이어서 작성.
  if(number % 4 == 1){
    print('나머지는 1');
  }else if(number % 4 == 0){
    print('4의배수 맞음');
  }
}

실행결과

4의배수 맞음
4의배수 맞음

3. if(조건){수행할 내용}else if(다른 조건){수행할 내용}else{위 조건들에 해당안될때 수행할 내용}

void main() {
  int numbers=21;
  int _number=21;
  
  //아래 소스로 얘기하고 싶은건, 첫번째 조건이 아닌 경우 다음조건으로 이동한다는 점과
  //만족하는 조건이 찾아졌을땐, 그 다음 로직(if나 else)을 수행하지않는다.
  //또한 else에서는 if, else if의 조건들이 하나도 만족하지 않을때만 수행한다.
  if(numbers % 4 == 0){
    print('4의배수 맞음');
  }else if(numbers % 4 == 1){
    print('나머지는 1');
  }else if(_number % 4 == 2){
    print('나머지는2');    
  }else{
    print('어떠한 조건에도 해당안됨.');
  }
  
  //조건을 단순하게 예를들어 도출될 결과값이 두개밖에 없다면, 
  //if, else if가 아닌
  //if else로 사용해도 된다.
}

 

실행결과

나머지는 1

4. Switch

기본적으로 if문과 성격은 같다. 하지만 주어진 조건이 성립할때, 기능이 수행되지만

if else if...처럼 다중 조건에서는 사용에 불편함이 있다. 대신 속도는 if보다 빠르다.

void main() {
  int sNumber=20;
  switch(sNumber % 4){
    case 0 : 
      print('4의 배수입니다.');
      break;
    case 1:
      print('나머지가 1입니다');
      break;
    case 2 : 
      print('나머지가 2');
      break;
    default : 
      print('해당되는 값 없음');
      break;
  }
  
  //설명에도 써놓았지만, 위에서의 조건은 4로 나눈 나머지의 값만 가지고
  //찾아가지만, 3으로,2로 등 여러값으로 나누었을때의 대한 다중 조건은 사용할 수가 없다. 
  if(sNumber % 4 == 0){
    print('4의배수입니다.');
  }else if(sNumber % 3 ==0){
    print('3의배수입니다.');
  }else if(sNumber % 2 ==0){
    print('2의배수입니다.');
   }
  
  
}

실행결과

4의 배수입니다.
4의배수입니다.

 

Dart의 조건문 if, Switch 스터디 끝.

(다시 기초부터 훑으려니깐 지루하네....그냥 건너뛸까...)

 

반응형
반응형

이번 스터디에서는 연산자를 알아보려고 한다.

우리가 익히 알고 있는 사칙연산(+,-,*,/)와 프로그램에서 사용하는 대소(크기)비교,

논리연산 등을 다뤄보려 한다.

자세한건 소스를 실행하면서 알아보고, 준비물인 웹컴파일러는 아래 포스팅에 포함되어 있다.

 

Dart언어공부-01.Hello World

Flutter가 요즘 핫하게 올라오면서, Flutter의 주력 언어(다른언어도 가능함)인 Dart를 공부해보려 한다. 간단하게 Flutter란? Google에서 개발하고 Mobile World Congress 2018에서 최초 베타..

masswhale.tistory.com


1. 기본 사칙연산

void main() {
	//기본 사칙연산
    //int(정수형)타입의 number라는 이름의 변수 선언 및 2라는 값으로 초기화
    int number = 2;
    
    //사칙연산을 실행하여 결과를 알아보자
    print(number + 2);
    print(number - 2);
    print(number * 2);
    print(number / 2);

}

실행결과

4
0
4
1

2. 사칙연산 중 나누기에서는 몫만 존재하는 것이 아닌, 나머지도 존재한다. 

void main() {
	int number = 2;
    //해당 변수를 특정값으로 나누었을때, 나머지를 알고싶다면 % 연산자(기호)를 사용한다.
    //결과값이 0이라면 나눈값의 배수인것을 확인할 수 있다.
    print(number % 2);
    print(number % 3);
}

실행결과

0
2

3. 증가/감소 연산

void main() {
	int number = 2;
    
    //선언된 변수 뒤에 ++연산을 사용하여 값을 증가시킨다.
    //1씩증가 및 감소하며, String 타입의 변수에는 적용되지 않는다.
    
    //증가시키려 할때.
    number++;
    print(number);

	//감소시키려 할때.
    number--;
    print(number);

}

실행결과

3
2

4. null값인 경우 처리(표현)방법

void main(){
	int number2;
    
    //number2 라는 int타입의 변수 선언 후, 출력하면 숫자값의 선언(초기화)이 되지 않았기때문에
    //null이라는 값이 출력된다.    
    print(number2);
    
    //하지만 아래와 같은 표현방법으로 null인경우 4로 할당하도록 하면
    number2 ??= 4;
    
    //지정한 4가 추출된다.
    print(number2);
    
}

실행결과

null
4

5. 이미 할당(초기화)된 값에 추가로 사칙연산하는 방법들

void main(){
	int number4 = 2;
    //number4라는 변수에 2라는 값을 할당 후,
    //1을 더하는 방법은 아래와 같은 방법이 있다.    
    number4 = 2+1;
    
    //하지만 아래 연산기호를 이용하여 표현할수도 있다.
    //기존 변수에 1을 더하여 할당한다는 의미이다.
    number4 += 1;
    
    print(number4);
    
    //뺄셈을 할땐, 더하기기호와 반대로 사용하면 된다.
    
    number4 -= 1;
    print(number4);
    
    //알아본 김에 곱셈, 나눗셈도 알아보자.
    //같은 방식으로 연산자(기호)만 변경하여, 작성한다.
    number4 *= 2;
    print(number4);
    
    //아래는 나눗셈을 할때인데, 위와같이 단순하게 number4 /=2; 라 할경우엔 오류가 발생한다.
    //나눗셈은 몫과 나머지를 발생시키기 때문에 정수형인 int로 처리할수 없도록
    //Dart에서 정해져있다. 따라서 나눗셈 연산을 시도할땐, int가 아닌 범위가 더 큰double로
    //선언하여 처리해야 한다.
    //편의상 number44라는 변수를 사용하여 예제를 보자
    
    double number44 = 2;
    number44 /= 2;
    print(number44);
}

실행결과

4
3
6
1

6. 주어진 값을 비교하는 연산자

주어진 1개 이상의 값을 연산하여 true인지 false인지 boolean형 값을 구해보자

void main(){
	int _number1 = 1;
    int _number2 = 2;
    
    //ture false검증
    //대,소 비교 연산을 통해 두개의 값이 맞는지 틀린지 값을 구해낸다.  > , <
    //true or false로 표현된다.
    print(_number1 < _number2);
    print(_number1 > _number2);
    
    //또한 초과,미만 표현이 아닌 이상,이하 표현도 가능하다.   >= ,  <= 
    //이퀄스 기호를 추가하여 작성한다.
    print(_number1 <= _number2);
    print(_number1 >= _number2);
    
    
    //대,소만 있는것이 아닌 '같다'와 '같지 않다'도 확인할 수 있다.  ==,  !=
    print(_number1 == _number2);
    print(_number1 != _number2);
    
}

실행결과

true
false
true
false
false
true

7. 타입비교

이번에는 선언된 변수가 특정타입이 맞는지 검증하는 연산자를 사용해보자

void main(){
  int _numbers1 = 1;
  //int형으로 선언된 _numbers1의 타입을 확인하는 연산자를 사용해보자.
  //맞는지, 아닌지를 묻는 연산이기 때문에 true or false값을 반환하며
  //자료형 별로 질의를 할수 있다. 
  //변수 is 타입질의 형태로 사용한다.
  
  print(_numbers1 is int);
  print(_numbers1 is String);
  print(_numbers1 is bool);
  //맞는지만 물어볼수 있는것이 아니라, 맞지않은지도 느낌표(!)를 사용하여 질의할수 있다.
  print(_numbers1 is! String);
}

실행결과

true
false
false
true

8. 논리비교

약간 헷갈릴 수 있는데, 6번에서 사용한 대소비교 등이 두개이상이 합쳐졌다고 할수있다.

void main() {
  
  //&&연산자를 기준으로 좌우측의 두 조건이 만족할때 true가 표현된다.
  result = 12 > 10 && 1 < 0;
  print(result);  
  
  //위 &&연산자와는 반대로 || 연산자는 좌우 둘중하나의 조건만 맞으면 true가 표현된다.
  result = 12 > 10 || 1 < 0;
  print(result);  
  
}

실행결과

false
true

총 8개의 연산자를 스터디해보았다.

다른 언어들과 다를것이 없어서, 이미 다른언어를 사용중이거나 배워본 사람은 한번 훑허보면 될듯싶다. 

Dart 연산자 스터디 끝.

반응형
반응형

fial과 const의 기본 개념은 한번 선언된 값을 변경되지 못하게 해달라는 의미를 가진다. 

  //일반적으로 우리가 사용할땐, 문자열 변수를 선언 후
  String name = '이름';
  
  //이렇게 값을 변경(재할당)하여 사용할 수 있다.
  name = '이름2';

 

  //하지만 선언 후, 할당한 값을 변경하지 못하게 하고 싶을 떈, 앞에 final을 붙여서 사용한다.
  final String name = '이름';
  
  //const도 마찬가지로 값을 변경하지 못하는 final과 같은 의미를 가진다.
  const String name = '이름';

 

그런데 여기서 둘다 값을 변경하지 못하지만 어떤 차이가 있는지가 중요하다.

const의 경우 컴파일타임에 저장된다는 점과, final은 런타임에 지정된다는 점이 차이가 있다.

프로그래밍 언어가 기계어로 번역되어 실행되는 과정을 컴파일이라 하고, 이 과정을 컴파일 타임이라한다.

이 컴파일된 프로그램이 실행되는 과정이 런타임이라 한다. 

 

무슨 의미인지는 아래 예제를 보면서 확인해 보자.

  //실행한 결과값을 보면, 첫번째 라인의 값과 두번쨰 라인의 값이 1초정도 차이가 나는것을 확인할 수 있다.
  //const는 첫번째 print의 값이고, final은 두번째 print의 값으로 예제를 들수 있는데,
  //프로그램이 만들어 지기 전 컴파일되는 과정에서 값이 지정되어 버리는것은 첫번째 print. 즉 const이며
  //컴파일 완료 후, 프로그램이 만들어진 후 실행되자마자 값이 지정되는 것이 두번쨰 print. 즉 final이다.
  DateTime now = DateTime.now();
  
  print(now);
  
  Future.delayed(
    Duration(milliseconds : 1000),
    (){
      DateTime now2 = DateTime.now();
      print(now2);
    }
    
  );

실제 final과 const를 넣어서 예제를 다시 살펴보자.

  //첫번째 print와 두번째 print의 값이 위 예제와 동일하게 1초간의 딜레이가 발생한것을 확인할 수 있다.
  //이는 당연히 컴파일이 완료된 후, 런타임(프로그램 시작!)시에 값이 할당되어 출력되기 때문이다.
  final DateTime now = DateTime.now();
  
  print(now);
  
  Future.delayed(
    Duration(milliseconds : 1000),
    (){
      final DateTime now2 = DateTime.now();
      print(now2);
    }
    
  );

반대로 const로 변경하면, 라인 오류가 발생한다. 

컴파일시에 DateTime.now()를 컴퓨터가 알수 없기 때문이다.

그래서 const 사용시엔 값을 반드시 지정해주어야 한다. 

  const DateTime now = DateTime.now();
  
  print(now);
  
  Future.delayed(
    Duration(milliseconds : 1000),
    (){
      const DateTime now2 = DateTime.now();
      print(now2);
    }
    
  );

보통은 코딩시엔 final을 많이 사용한다.

final과 const에 대해 이런 차이가 있다 정도만 알고있으면 된다. 

 

오늘 스터디 끝.

반응형
반응형

허전해서 넣어본 이미지

프로그램 개발할때 절대 빠지지 않고, 빠져서도 안되는 "변수"

이 변수를 사용할 땐, 언어자체에서의 룰이 있지만, 개발자들간의 업무협업에 있어서

암묵적인 룰들도 존재한다.

아래 소스 코드들을 읽어보면서 이해하도록 하자.

//09.변수 정의 규칙의 대하여
void main() {
  //1. 같은 이름의 변수를 사용하지 않는다.
  String _name = '임의값1';
  //아래 변수는 사용할 수 없다.
  //이건 IDE에서도 제한한다.
  //String _name = '임의값2';
  
  //그래도 값을 쓰고 싶다면 새로 선언이 아닌 재할당은 가능하다.
  _name = '임의값2';
  
  //또한 타입을 다르게 해서 선언해도 안된다.
  //이미 사용한 변수명 중복금지.
  //int _name = 1;
  
  /*
   * 변수의 타입이 같던 다르던, 같은 이름의 변수는 선언할 수 없다.
   * */
  
  //2. 대부분의 프로그래밍 언어는 소문자로 변수선언을 한다.
  int _name2 = 1;
  
  //3. 여러개의 변수 이름을 이어서 하고싶다면?
  //아래와 같이 선언해서는 안된다.
  //String rain bow = 'color';
  
  //4. 공백없이 붙여서 사용하며, 단어가 바뀌는 구간에 대문자로 변경하여
  //두가지 의미를 가진 단어가 합쳐진것으로 친다. 암묵적인 룰
  //낙타 표기법이라 한다. 
  String rainBow = 'color';
  
  //5. 언더바를 먼저 사용할 수 있다.
  //이 언더바를 사용한 변수는 주로 private변수 및 class에서 사용이 많이된다.
  //나중에 다루겠음.
  String _rainBow = 'color';
  
  //6. 대문자로 시작하는 경우
  //소문자로 시작한 name이 선언되어 있다고 해도, 사용가능하다.
  //다른 변수로 인식은 하지만, 일반적으로 class에서 대문자로 시작하여 
  //사용하기 때문에, 추후 개발자들간에 업무에 있어서 혼동을 방지하기 위해
  //대문자 시작은 최대한 사용하지 않도록 한다.
  String Name = '이름';
  
  
}

 

간단하게 요약하자면, 변수명은 타입이 다르다 하더라도 중복된 변수는 사용해서는 안되며,

(이는 최초 선언시에만 해당함, 이미 선언된 변수에 재할당은 무관)

반드시 소문자로 사용하고, 카멜 노테이션(낙타표기법)에 따라 한 단어 이상 이어질땐,

의미가 변경되는 단어(합쳐진 단어)에서 대문자로 변경하여 사용한다.

이번 강의 스터디 끝.


Dart소스를 실행시키기 위한 준비물(웹컴파일러)은 아래 포스팅에 링크 있습니다.

 

Dart언어공부-01.Hello World

Flutter가 요즘 핫하게 올라오면서, Flutter의 주력 언어(다른언어도 가능함)인 Dart를 공부해보려 한다. 간단하게 Flutter란? Google에서 개발하고 Mobile World Congress 2018에서 최초 베타..

masswhale.tistory.com

 

 

Flutter개발을 위한 Dart 기초 유튜브 강의는 아래 포스팅에 링크되어 있습니다.

 

Flutter개발을 위한 Dart언어 왕초보 강의

Flutter를 이용한 앱개발을 위해 Dart강의를 찾던 중 유튜브에서 기가막힌 강의를 찾아냈다. (혹시 Dart언어에 대해 빠르고 간략하게 기초를 쌓고 싶으신 분에게 추천드림..) 정말 마음에 드는점은

masswhale.tistory.com

 

반응형

+ Recent posts