일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 패스트 캠퍼스
- 생존코딩
- 오존석의 생존코딩
- ㅇ
- 모두의 연구소 # 오준석의생존코딩# 오름캠프
- 모두의연구소
- Tag #패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #자바인강
- #패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #자바인강
- 오름캠프
- 오준석의생존코딩
- 오름캠프플러터
- 모두의연구소 오준석생존코딩 오름캠프
- 모두연구소
- 플러터
- 오준석의 생존코딩
- Today
- Total
꾸준히 하고싶은 개발자
day 3일차 dart_basic 과 실습 본문
Dart란
구글에서 개발한 현대적인 객체지향 프로그래밍 언어입니다
객체지향 파이썬 절차지향 c언어
타입추론 기능 비동기 등 강력한 기능 제공 한다.
AOT, JIT 컴파일을 통해 네이티브 크로스 플랫폼에 적합
자바스크립트
Dart는 왜 만들어졌을까?
Dart는 Javascript가 한계를 가지기 때문에 구글에서 고안하게 되었습니다.
Javascript의 한계로는 다음의 것들이 있습니다.
동적 타이핑 언어이기 때문에 런타임 오류가 발생하기 쉬습니다.개발자가 의도하지 않은 방식으로 데이터 타입이 인식될 수 있습니다.유연한 문법 구조로 가독성이 떨어집니다.같은 목적의 기능도 다양한 방식으로 작성될 수 있어서 다른 개발자가 알아보기 어려울 수도 있습니다.일반적인 프로그래밍 언어보다 실행속도가 느릴 수 있습니다.인터프리터 언어라서 코드를 매번 새로 읽어야 합니다.
Dart와 다른 언어의 다른 점은?
Dart와 다른 언어의 가장 중요한 차이점으로는 NULL Safety와 Hybrid Compile이라는 특성이 있습니다.
Null Safety는 프로그래밍 언어에서 null 값에 대한 안정성과 예외 처리를 개선하는 기능입니다. Null은 값이 필요한 변수가 메모리에 할당조차 안 되어 있는 것을 의미합니다.
간단한 코드는 Null을 사용하지 않는 것만으로 해결되나 코드양이 많아지면 의도치 않게 Null이 할당되는 경우 가 발생할 수 있습니다.
Hybrid Compile
Dart 코드를 다른 프로그래밍 언어로 변환하여 실행할 수 있는 기술을 말합니다.
상황에 따라 Javascript로. 변환되어 웹 브라우저에서 실행될 수도 있다.,
Flutter를 활용하여 Dart 코드를 네이티브 코드로 변환하여 모바일 앱에서 실행될 수도 있습니다.
main 함수
Dart나 다른 프로그래밍 언어에서 main 함수는 프로그램의 진입점으로 사용됩니다. 프로그램이 실행될 때 운영 체제나 런타임 환경은 main 함수를 찾아서 거기서부터 코드를 실행합니다.
Variables
Dart는 Type-Safe를 유지하면서도, 대부분의 변수에 타입을 지정하지 않고 var를 사용하여 선언할 수 있습니다. 변수의 타입은 초기 값에 따라 결정됩니다.
var i =1;
var s ='String';
var b = true;
비동기 프로그램
프로그램 실행할 떄 여러가지 작업중에 이작업중에 다른 작업을 할 수있듯이
미래 올 값을 기다린다.
Aot JIT 컴파일
다트는 동시에 사용이 가능하다 .
Dart Control Flow 중 while 과 do/while의 차이는 뭔가요?
while 은 판별은 먼저하고 실행한다 . do while은 실행을 먼저하고 판별한다.
Control Flow
Dart는 일반적인 제어문을 지원합니다. 제어문에는 if/else, switch/case, while, do/while, for 등이 포함됩니다.
함수
함수는 특수한 경우를 제외하고
인수, 매개변수 (넣어주는 값)와 반환하는 값의 타입을 지정해주는 것이 권장
됩니다. 몇몇 특수한 경우 void와 같이 타입과 반환 값을 지정하지 않을 수도 있습니다.
람다식
간단한 함수는 =>(화살표) 단축 구문
으로 만들 수도 있으며, 함수가 다른 함수의 인수로 사용될 수도 있습니다.
Comments(주석)
한 줄 주석, 문서화용 주석, 여러 줄 주석 표시를 모두 지원합니다
Imports(임포트)
다른 라이브러리에서 정의된 API에 액세스하려면import 를 사용합니다.
Dart에서 제공하는 라이브러리 혹은 외부 패키지, 프로젝트 내 파일에 정의된 API, 함수 등을 불러올 수 있습니다.
late
초기화를 나중에 하겠다는 표시를 하는 역할을 합니다.
final 과 Const
Fianl : 한 번 값을 할당하면 변경이 불가능한 키워드 이며, 초기화 후 값을 변경할 수 없습니다.
Const : 한 번 값을 할당하면 변경이 불가능한 키워드 이며, 값을 변경할 수 없습니다.
Final Class Object (일급객체)
다른 객체들에 일반적으로 적용 할 수있는 연산을 모두 지원하는 객체
dart 문법을 이용한 369game
문제
문제설명
4명의 플레이어가 참가하고 차례대로 나오며 30배수 는 ahh 3의배수는 clap 10의배수범위는 1에서 100까지 출력한다.
clap 총 갯수
rool 총갯수
ahh 총 갯수
4명의 플레이어중에 가장많은 clap을 한 플레이어 수 구하기 입니다.
문제풀이
1. 초기화 하기
main(){
// 4명의 플레이어 선언
List<String> players = ['player1', 'player2', 'player3', 'player4'];
int playerIndex = 0;
// 현재 카운드
int currentCount = 0;
// 3의 배수 카운드
int clapCount = 0;
// 10의 배수 카운트
int roolCount = 0;
// 30의배수 카운드
int ahhCount = 0;
// 3의 배수 카운터 수
int clapCountMax =0;
List<int> clapCountPlayer = [0, 0, 0, 0];
}
4명의 플레이어 리스트로 선언합니다.
각각의 카운트 수를 초기화를 해줍니다.
2.이제 반복문을 통해서 차례대로 순서 출력하고 조건문 통해서 조건 주기
//1~100까지 반복루프를 통해서 선언하기
for (var i = 1; i <= 100; i++) {
//1-4까지
String currentPlayer = players[playerIndex];
if (i % 30 == 0) {
print('${currentPlayer}:ahh');
ahhCount++;
} else if (i % 3 == 0) {
print('${currentPlayer}:clap');
clapCount++;
clapCountPlayer[playerIndex]++;
} else if (i % 10 == 0) {
print('${currentPlayer}:rool');
roolCount++;
} else {
print('${currentPlayer}:${i}');
}
playerIndex = (playerIndex + 1) % players.length;
}
리스트 4명의 플레이어들을 1~100까지 반복이 되므로 리스트 playIndex로 찾아서 currentPlayer에 담아준다.
3.조건문에 조건주기
30배수일때 : 문자열 : ahh 를 출력하고 다음번째에 나올 수를 위해서 ahhCount++ 증감연산자를 사용한다.
3의배수일때 : clap를 출력하고 다음번째에 나올 수를 위해서 clapCount++ 증감연산자를 사용한다.
10의배수일때 : rool를 출력하고 다음번째에 나올 수를 위해서 roolCount++ 증감연산자를 사용한다.
나머지 (else)는 플레이어에 현재 수를 출력한다.
플레이어 인덱스를 플레이어 길이만큼 (4명) 나눈다.
4.3의 배수(clap)와 10의배수(rool)와30의배수 총갯수구하기
// 3의배수와 10의배수 30의배수 갯수 를 출력하기
print('clap의 총갯수: ${clapCount}입니다.');
print('rool의 총 갯수: ${roolCount}입니다.');
print('ahh의 총 갯수: ${ahhCount}입니다.');
5.clap 를 가장 많이한 플레이어 수 구하기
5. 가장 많은 플레이어 중에clap나온 수 구하기
//clap를 가장 많은 플레이어 수 구하기
String playerMaxClap = "";
for (var i = 0; i < players.length; i++) {
int count = clapCountPlayer[i];
// 각각의 플레이어가 몇번 clap했는지 출력
print('${players[i]}:${count}');
if (count > clapCountMax) {
clapCountMax = count;
playerMaxClap = players[i];
}
}
print('가장 많은 3의배수 나온 player: ${playerMaxClap} ');
}
playerMaxClap 선언 및 초기화한다.
플레이어 만큼 for문 돌려서
각각의 플레이어가 몇번 clap했는지 출력하고 count 변수에 담아줍니다.
조건식
카운트 수가 가장많이한 카운트한 플레이어보다 클떄
가장 많이 한 플레이어 수 와 clap한카운드 수 가 같을때
각각의플레이수 와 가장 많이 clap한 플레이어 수 같게해준다.
플레이어들중에 가장 많이 한 플레이어를 출력한다.
몰랐던 내용
for (var i = 0; i < players.length; i++) {
int count = clapCountPlayer[i];
플레이수 만큼 인덱스 로 찾을 때 사용한다.
전체코드
main() {
// 4명의 플레이어 선언하기
List<String> players = ['player1', 'player2', 'player3', 'player4'];
int playerIndex = 0;
// 현재 카운드
int currentCount = 0;
// 3의 배수 카운드
int clapCount = 0;
// 10의 배수 카운트
int roolCount = 0;
// 30의배수 카운드
int ahhCount = 0;
// 3의 배수 카운터 수
int clapCountMax =0;
//누가 많이 했는지 플레이어 수 0으로 초기화
List<int> clapCountPlayer = [0, 0, 0, 0];
// 반복문을 통해서
for (var i = 1; i <= 100; i++) {
String currentPlayer = players[playerIndex];
playerIndex = (playerIndex + 1) % players.length;
if (i % 30 == 0) {
print('${currentPlayer}:ahh');
ahhCount++;
} else if (i % 3 == 0) {
print('${currentPlayer}:clap');
clapCount++;
clapCountPlayer[playerIndex]++;
} else if (i % 10 == 0) {
print('${currentPlayer}:rool');
roolCount++;
} else {
print('${currentPlayer}:${i}');
}
}
// 3의배수와 10의배수 30의배수 갯수 를 출력하기
print('clap의 총갯수: ${clapCount}입니다.');
print('rool의 총 갯수: ${roolCount}입니다.');
print('ahh의 총 갯수: ${ahhCount}입니다.');
//clap를 가장 많은 플레이어 수 구하기
String playerMaxClap = "";
for (var i = 0; i < players.length; i++) {
int count = clapCountPlayer[i];
print('${players[i]}:${count}');
if (count > clapCountMax) {
clapCountMax = count;
playerMaxClap = players[i];
}
}
print('가장 많은 3의배수 나온 player: ${playerMaxClap} ');
}
'모두의연구소 > day1일차' 카테고리의 다른 글
1일차git hub (0) | 2023.11.29 |
---|