|
이전 연재는 기본으로 보시면 되겠습니다.. 가겹게...
지금부터 실습 하면서 Dart 프로그램 언어를 익히도록 합니다.
1강 에서 14강 까지 입니다.
여기 까지가 Dart 프로그램 언어의 기본중에 기본 입니다.
void main() {
// 1강 : 화면(콘솔)출력
print("song");
// 2강 변수 선언법-1
// var = 어떠한 변수 타입으로 선언하지 않을때 사용
// 변수선언 3요소 : 1.변수타입, 2.변수명, 3. 변수값(저장될 내용)
var name = " 송명규";
print(name);
// 3강 변수 타입(숫자 변수)
// int : 정수형 변수 선언
int nb1 = 12;
print(nb1);
int nb2 = 38;
print(nb2);
print(nb1 + nb2);
print(nb1 - nb2);
print(nb1 * nb2);
print(nb1 / nb2);
print(nb1 % nb2);
// double : 실수형 변수 = 소수점 포함 = 정수도 출력가능
double nb3 = 1.5;
double nb4 = 3.14;
double nb5 = 1234567;
print(nb3);
print(nb4);
print(nb5);
print(nb4 + nb5);
print(nb4 - nb5);
print(nb4 * nb5);
print(nb4 / nb5);
print(nb4 % nb5);
// 4강 String 문자열 출력 = 문자변수 선언
// String 은 대문자로 시작
// "" '' 둘중 아무거나 사용하여 문자열 표시 가능 = 글자. 문자열로 인식이 됨
name = "song";
print(name);
String name1 = "송명규";
print(name1);
// String 더하기 ==>> 두 문자열 변수의 내용이 이어진다.
print(name + name1);
//$ 형식 = $을 사용하면 글자로 인식되는게 아니라 변수로 인식된다.
//즉 $바로 다음에 오는 문자는 변수로 인식된다.
print('$name$name1'); // 변수값 출력
// $ 숫자표시 및 연산에도 사용된다.
//ex)
int home = 4; // 변수
String name2 = "우리집 식구는 $home명 입니다."; // $home = 변수임
print(name2);
//------------------------------------------------------------------------
// 5강 Boolen 변수 선언
// boolen = t, f값만 있음
bool nb6 = true;
bool nb7 = false;
print(nb6);
print(nb7);
// 6강 var Dynamic 타입 변수 선언
// 6-1 var 타입
// var = 자유롭게 타입을 선언하지 않고도 변수를 지정할 수 있다. 숫자열도 지정가능
// var 타입은 변수값에 의해서 자동으로 변수 타입이 지정된다.
// var 타입은 처음에 최초에 선언된 변수타입으로 만 유지 되어 중간에 변수 타입이 다른 값으로 바꿀 수 없다.
// var, dynamic 타입은 가급적 사용치 말 것
var name3 = "송명규"; // 문자열
print(name3);
var nb8 = 34567; // 숫자열
print(nb8);
name3 = "song"; // 값 변경
print(name3);
//name3 = 1234; // error 발생
// 6-2 Dynamic 타입
// 수시로 변수 타입을 바꿀 수 있다.
// 한번 변수에 타입이 지정 되어도 계속적으로 변수의 타입을 바꿀 수 있다.
dynamic name4 = "송명규"; // 문자열
print(name4);
dynamic nb9 = 34567; // 숫자열
print(nb9);
name4 = "song"; // 값 변경
print(name4);
name4 = 1234; // 정상실행 됨
print(name4);
// var 타입 변수값을 초기화 안 하면 변수타입 값을 ㅂ마꿀수 있다.
// 즉 dynamic 타입으로 사용할 수 있다.
// 참고로 String, int, dotble, boll 타입은 초기값을 안 주면 error 처리 됨 = null문자를 넣어야 됨
var name5; // 일종의 dybamic 타입
name5 = "song";
print(name5);
name5 = 5678; // 정상동작 함
print(name5);
//--------------------------------------------------------------------------------
// 7강. List
// List : 하나의 변수에 여러가지 값을 저장할 수 있다. = C언어의 배열변수와 비숫
// List 선언 방법
// , 단위로 값을 구분
// 인덱스 = 순서 = 반드시 0번부터 시작
List ab = []; // 초기값 없음 = 선언방법-1
List ab1 = [1,2,3,4,5]; // 선언방법-2
List <int> ab2 = [ ]; // 선언방법-3
List <String> ab3 = ["song"]; // 변수의 탑이을 지정할 수 있다. = 선언방법-4
print(ab);
// List 선언 방법 = error 발생 함 = 버전이 업 되면서 지원 안 함
List ab7 = new List.from([]); // from 넣어야 됨 = 선언방법-5
print(ab7);
// List에 값을 넣기
ab1.add("송명규");
ab1.add("송준협");
ab1.add("송윤석");
ab1.add("박은주");
ab.add("song");
print(ab1);
print(ab);
// List 인덱스 = 순서 = 0 부터 시작
// List 값을 빼기
ab1.removeAt(5); // 인덱스 방식
print(ab1);
ab1.remove("박은주"); // 직접 값을 지정
print(ab1);
ab1.removeAt(1);
print(ab1);
// 인덱스 = 원하는값을 불러올수 있다.
print(ab1[4]);
print(ab1[0]);
int k = ab1[1];
print(k);
// 인덱스 = 이미 들어가 잇는 값을 변경할때
ab1[2] = "박은주";
print(ab1);
ab3.add("세드나"); // String 타입
print(ab3);
// ab3.add(3); // error 발생 = String 타입이 아니므로
// List 길이를 지정하기
List<int> ab4 = new List.from([3]); // 길이제한 = 동작안함 = 추가나 삭제할 수 없다. 변겨은 가능 함 = ver 3.0에서는 지원 안 함
print(ab4);
// List 에 초기값을 넣은 상태에서 선어하는 방법
List ab5 = [
"송명규",
"거시기",
"무시기"
];
print(ab5);
List ab6 = new List.from([
"송명규1",
"거시기2",
"무시기3"
]);
print(ab6);
// List 길이 알아내기
print(ab5.length);
print(ab6.length);
print(ab4.length);
//---------------------------------------------------------------------------
// 8강 Map에 대해사
// Map은 key 값과 value값을 가진 pair로 구성된다.
// ,를 기준으로 여러가 넣을 수 있다.
// :으로 key 값과 value 값을 구분한다.
// :을 기준으로 왼쪽 = Key 값, 오른쪽 = value 값
// 인덱스 대신 Key 값을 상요하여 value 값을 알아내는 구조 = 주로 Key 값 사용
// Key값은 전체 Map에서 하나밖에 존재하지 않는다.
Map ac = {
"my" : "송명규", // 왼쪽 = Key 값, 오른쪽 = value 값
"home" : "우리집",
"큰아들" : "송준협",
"마나님" : "Park 은 주"
}; // map 선언
print(ac);
// key 값을 활용하여 value 값 알아내기
print(ac['my']);
print(ac["마나님"]);
// 초기값 없이 Map 선언 방법
Map ac1 = {};
print(ac1); // 아무것도 없다 표시{}
// 상기Map 에다가 값을 추가 할려면
ac1.addAll({
"my1" : "송명규2", // 왼쪽 = Key 값, 오른쪽 = value 값
"home1" : "우리집2",
"큰아들1" : "송준협2",
"마나님1" : "Park 은 주2"
});
print(ac1);
ac1.addAll({"거시기" : "무시기"});
print(ac1);
// 지우는 방법
ac1.remove('큰아들1');
print(ac1);
// value 값 변경시 key 값을 사용한다.
ac1['my1'] = 'smg';
print(ac1);
print(ac1['my1']);
// 선언법 = 2가지
Map ac2 = new Map();
Map ac3 = {};
Map ac4 = new Map(); // 2번째 방법
Map ac5 = new Map.from({ // 초기값 주기
"my3" : "송명규3", // 왼쪽 = Key 값, 오른쪽 = value 값
"home3" : "우리집3",
"큰아들3" : "송준협3",
"마나님3" : "Park은주3"
}); // 2번째 방법
print(ac5);
// key 값만 다 프린터 하기
print(ac5.keys);
// key 값을 List 형태로 프린터 하기
print(ac5.keys.toList());
// value 값만 다 프린터 하기
print(ac5.values);
// value 값을 List 형태로 프린터 하기
print(ac5.values.toList());
// 변수 타입을 지정하고 선언하는 방법
Map<String, int> ac6 = {
"컴퓨터" : 500,
"식대" : 1000,
"급여" : 500000000,
"사간" : 23
};
print(ac6) ;
//-------------------------------------------
// 9강 : 변수에 대한 주의사항
// 변수 이름을 중복 선언 할 수 없다.
// 타입이 다르더라도 같은 이름의 변수명을 사용할 수 없다.
// 같은 이름의 변수는 선어할 수 없다.
// 변수는 소문자로 시작한다.
// 변수명 안에는 공백을 줄 수 없다.
// 문자를 구분시 중간에 대문자 나 _ 삽입
// 변수명은 _로도 시작할 수 있다. = 프러빛 변수 사용시에 _를 사용한다.
// 클래스 내 변수는 대문자로 시작할수 있도록 한다.
//--------------------------------------------------------------------
// 10강 : Fianal, Const
// finel 변수 값은 한번만 선언될 수 있다.
// 변수에 값을 변경하지 못하는 키워드
//10-1. final
final String ad = "song";
print(ad);
//ad = "smg"; // error 발생 = 변수값이 변경 안됨
// 10-2 const
// 한법만 선언되고 변경할 수 없다.
const String ad1 = "song1";
print(ad1);
//ad1 = "smg"; // error 발생 = 변수값이 변경 안됨
// final / const 차이점
// const : 컴파일(빌드) 타임에 값이 지정되어 있어야 한다.
// 빌드타임 = 컴퓨터가 일기 좋게 변하는 과정의 타임, 변경되는 과정의 타임
// 즉 사람이 읽기 좋은 코드에서 컴퓨터가 읽기 좋은 코드로 변경되는 과정의 시간
// const = 런 타임이나 빌드 타임을 모를떼는 사용할 수 없음
// 컴파일이 되는 순간에 값이 지정이 되어 있어야 되고(const int now = 3; = 이건 사용가능), 만약에 런 타임에 값이 지정이 된형태라면 const는 사용할 수 없다.
// final : run time에 값이 지정되어 있어도 된다. = 주로 사용 됨
// = 런 타임이다. = 즉 코드가 다 빌드되고 컴퓨터 언어로 변경이 된 다음에 실행이 되는 순간에 딱 한번만 선언이 되며는 사용이 가능하다.
//ex)
final DateTime now = DateTime.now(); // 지금 현재의 코드가 실행되는 시간을 저장한다. = run time
print(now);
// 1초동안 딜레이 주는 함수 = 1초 뒤에 {} 사이의 코드를실행해라
Future.delayed(
Duration(milliseconds: 1000),
(){ // 1초간 지연 후 이 안에 있는 코드를 실행해라
final DateTime now2 = DateTime.now(); // 지금 현재의 코드가 실행되는 시간을 저장한다.
print(now2);
}
);
/* 실행 시간이나 런 타임값을 알수 없으므로 error 발생 함
const DateTime now3 = DateTime.now(); // 지금 현재의 코드가 실행되는 시간을 저장한다. = run time
print(now3);
// 1초동안 딜레이 주는 함수 = 1초 뒤에 {} 사이의 코드를실행해라
Future.delayed(
Duration(milliseconds: 1000),
(){ // 1초간 지연 후 안에 있는 코드를 실행해라
const DateTime now4 = DateTime.now(); // 지금 현재의 코드가 실행되는 시간을 저장한다.
print(now4);
}
);
*/
// 11강 오퍼레이터 = 연산자
// 1. 계산 오퍼레이터 :
int k9 = 2;
print(k9 + 2);
print(k9 - 2);
print(k9 / 2);
print(k9 * 2);
// 2. ++, --
k9++;
print(k9);
k9--;
print(k9);
++k9;
print(k9);
--k9;
print(k9);
// 3. null 값 대입 연산자 ??=
// ??= => 해당 변수값이 null일때만 값을 저장한다.
// k9가 null 값이면(값이 지정되어 있지 않으면) 9를 넣어라, nule 값이 아니면 아무것도 하지 않는다. 즉 전상태값 유지
k9 ??= 9;
print(k9);
int? k5 = null;
print(k5);
k5 ??= 50; // k5가 null 값이면 50을 넣어라
print(k5);
int? k6; // 초기값이 없으므로, 지정 안했으므로 null 값이다.
print(k6);
k6 ??= 100; // k6이 null 값이면 k6이다가 100을 넣어라
print(k6);
// 4. 연산도중에 바로 대입하기
k6 += 5;
print(k6);
k6 -= 5;
print(k6);
//k6 /= 5; // Dart는 기본 나눈값은 double 타입으로 저장한다. = error 처리 됨
print(k6);
// 5 비교 = 관계연산자
k5 = 6;
k6 = 10;
print(k5 > k6);
print(k5 < k6);
print(k5 >= k6);
print(k5 <= k6);
print(k5 == k6);
print(k5 != k6);
// 6 변수 타입비교
String k4 = "송명규";
print(k5 is int); // true
print(k6 is String); //false
print(k4 is String); // true
// is에 반대
print(k4 is! int); // true
print(k4 is! String); // false
// 7. 논리연산자 == bool 타입 변수에만 적용 됨 = Byte 연산 불가능 함
bool k7 = 12 > 10 && 1> 0; // and
print(k7); // true
k7 = 12 < 10 && 1 < 0;
print(k7); // false
k7 = 12 > 10 || 1 < 0; // or
print(k7); // true
bool k8 = true;
k7 = false;
print( k7 || k8); // teue
k7 = true;
k7 = !k7; // not
print(k7);
k7 = false;
k7 = !k7; //not
print(k7);
// 8. Bit 논리 연산자 = C언어와 같음 = Byte 연산도 가능 함 = Bit Mask 가능 함
k5 = 0x55;
k6 = 0x81;
int k3 = k5 | k6;
print(k3);
// 12강 if, switch 문 == C언어와 같음
// 13강 for, while 문 == C언어와 같음
List<int> h1 = [
1,
2,
3,
4,
5
];
// 13-1 for 문 = List와 연동하여 많이 사용 됨
// for문사용법 1
int h2 = 0;
for(int i = 0; i < h1.length; i++)
{
// 내용 출력하기
print(h1[i]);
// 값 더하기
h2 += h1[i]; // List에 <int> 안 하면 에러발생 함
}
print(h2);
// for문사용법 2
// 더 간단한 방법
h2 = 0;
for(int i in h1){ // 이 방식의 단점은 인덱스를 알 수 없다. 최종 결과 값만 취급한다.
print(i);
h2 += i;
}
print(h2);
// 13-2 while 문 = C언어와 같음
// 13-3 do{}while 문 = C언어와 같음
// 13-4 break 문 = C언어와 같음
// 13-5 continue = 스킵해라 = C언어와 같음
k5 = 10;
for(int i = 0; i < 10; i++){
if(i == 5)
continue; // 5가 출력이 안됨 = 5를 스킵 함
print(i);
}
// 14강
//void main() => print("song");
// 14강 = Enum
enum dis_nb { // 주로 문자열로 구성되나 = 주로상수임
appr,
rgjt,
busy,
}
// 14 강 ==>> Enum Type
// 중요한 문장시 스패링 토타등에 의하여 표현이나 조건식 등에서 오타등을 방지하기 위하여 사용
// 상기같은 이유로 명시적으로 정확하게 표현하여 정의해 줄때 주로 사용한다.
// 좀 더 명료화하여, 간략화하여 사전에 스펠링, 오타등의 Error를 방지 함
// 내용을 사전에 표시 함 = 어떤 옵션들을 사용할 수 있는지 사전에 알 수 있음
// 즉 내가 임으로 변수 타입을 생성하여 사용할 수 있다. = 오타방지 기능, 내용 명료화기능
// 한정된 옵션을 매우 효율적으로 사용할 수 있다. = 유저 정의 변수 타이도 만들수 있다.
// 주로 숫자 및 문자열 상수임
// C언어 열거형 자료형과 비숫 함
// ex) 3가지 상태 = 승인(appr), 반려(rejt), 대기(busy) 가 있다고 치면
//ex1 = 기존방식
String sts = "appr"; // 승인상태
if(sts == "appr") print("ok");
else print("no");
// ex2 = Enum 사용시
dis_nb nb_4 = dis_nb.appr;
if(nb_4 == dis_nb.appr) print("ok");
else print("no");
// enum type 옵션들을 모두 표시 할 경우
print(dis_nb.values.toList());
} // main function end
|
첫댓글 main() => print("Hello, World!"); // 이런 문장도 동작합니다.