수업7일차복습정리/Dart의 난수생성 및 자바의 데이터와 함수의개념

박경환·2021년 10월 31일

코딩수업

목록 보기
7/8

다트문법

if문 복습

프로그램을 작성하시오

  1. int형 변수 gender 를 선언하고, 0 또는 1을 대입한다 (어떤 것이라도 상관없음)

또한, int 형 변수 age 를 선언하고, 적당한 숫자를 대입한다.

  1. 화면에 “안녕하세요” 를 표시한다

  2. 만약 변수 gender 가 0이면 “나는 남자입니다", 그렇지 않으면 “나는 여자입니다" 를 표시한다

  3. 만약 변수 gender 가 남자이면 age 변수의 값을 표시하고, 뒤에 “살입니다" 를 붙여서 표시한다.

  4. 마지막에 “잘 부탁합니다" 를 표시한다

결과

void main() {
  exam(0);
  exam(1);
  //1. int형 변수 gender 를 선언하고, 0 또는 1을 대입한다 (어떤 것이라도 상관없음)
}

void exam(int gender) {
  //또한, int 형 변수 age 를 선언하고, 적당한 숫자를 대입한다.
  int age = 27;
  //2. 화면에 “안녕하세요” 를 표시한다
  print('안녕하세요');
  //3. 만약 변수 gender 가 0이면 “나는 남자입니다", 그렇지 않으면 “나는 여자입니다" 를 표시한다
  if (gender == 0) {
    print('나는 남자입니다');
  } else {
    print('나는 여자입니다');
  }
  //4. 만약 변수 gender 가 남자이면 age 변수의 값을 표시하고, 뒤에 “살입니다" 를 붙여서 표시한다.
  if (gender == 0) {
    print('$age살입니다');
    //5. 마지막에 “잘 부탁합니다" 를 표시한다
    print('잘 부탁합니다');
  }
}

선생님견본

void main() {
  //1. int형 변수 gender 를 선언하고, 0 또는 1을 대입한다 (어떤 것이라도 상관없음)
  int gender = 0;
  //또한, int 형 변수 age 를 선언하고, 적당한 숫자를 대입한다.
  int age = 27;
  //2. 화면에 “안녕하세요” 를 표시한다
  print('안녕하세요');
  //3. 만약 변수 gender 가 0이면 “나는 남자입니다", 그렇지 않으면 “나는 여자입니다" 를 표시한다
  if (gender == 0) {
    print('나는 남자입니다');
  } else {
    print('나는 여자입니다');
  }
  //4. 만약 변수 gender 가 남자이면 age 변수의 값을 표시하고, 뒤에 “살입니다" 를 붙여서 표시한다.
  if (gender == 0) {
    print("$age살입니다");
  }
  print('잘 부탁합니다');
  //5. 마지막에 “잘 부탁합니다" 를 표시한다
}

실습 - 원주율 구하기

스크린샷 2021-10-28 오후 12.14.55.png

스크린샷 2021-10-28 오후 12.15.11.png

결과

import 'dart:math';

void main() {
  print(piEstimate(10000000));
}
double piEstimate(int tries) {
  double result = 0;
  int hits = 0;
  Random random = Random();
  for (int i = 0; i < tries; i++) {
    //다트가 꽃히는 좌표 x, y를 랜덤한 값으로 정하되 범위는 -1, +1 사이의 실수(double)로 한다
    double x = random.nextDouble() * 2 - 1;
    double y = random.nextDouble() * 2 - 1;
    //(0.0)(x,y)
    double distance = sqrt(x * x + y * y);
    if (distance < 1) {
      hits++;
    }
    print(hits);
    //원주율
    result = 4 * hits / tries;
  }
  return result;
}

Java

데이터의 사용처

  • 객체의 프로퍼티(재산)가 되어진다
  • 함수의 결과로 Return이 되어진다
  • 함수의 인수로 전달받는다
  • 함수내의 임시 데이터로 사용된다

데이터 타입

  1. 분류 : 원시형,객체참조형

  2. 원시형

    -문자와 수를 지니는 데이터

    -문자 : char

    -수 : byte,short,int,long,float,double,Boolen

  1. 객체참조형
  • 객체의 모형 클래스를 의미한다
  • Array,string,classX
  • Array,string은 빈번하게 사용됨으로 암묵적객체생성을 컴파일러에서 지원한다 —>"선언=초기화"만으로 객체생성이 된다
  1. 타입캐스팅
  • 큰 공간의 데이터는 작은공간으로 복사가능

문자코드

  1. ASC-2
  2. 유니코드

함수 : function, Method

  • 로직(알고리즘)의 구현
  • Input(인수)에 따라 유일한 결과값을 도출
    • 함수 : 전역적으로 사용하는 일반적 함수

    • 메소드 : 객체지향에서 프로퍼티를 다루는 함수

    • static 메소드 : 클래스 내에서 일반적 함수

      package pkg2;
      
      public class MyClass1 {
      	public MyClass1() { //constructor
      		
      	}
      	private char ch1 = 'a';
      	private char ch2 = '가';		//2bytes for Unicode
      	private byte bt1 = 10;		//1byte
      	private short sh1 = 30000;	//2bytes
      	private int it1 = 1234567890; 	//4bytes
      	private long Lo1 = 1234567890123L;	//8bytes
      	private float ft1 = 126.442123F;
      	private double db1 = 123.456789;  	//double > floaa
      	
      	//DATA (객체참조형)
      	private char char1[] = {'k','o','r'} ; //암묵적 개체생
      	private char char2[] = {'k'} ;
      	
      	private int int1[] =  {100,200,300,400} ; //암묵적 개체생성 
      	private int[] int2 = {100,200,300,400} ; //암묵적 개체생성 
      	private int[] int3 = new int[]  {1,2,3,4} ; //명시적 개체생성 
      	
      	private String str1 = "KOREA" ; //암묵적 객체생성 
      	private String str2 = new String("korea") ; //명시적 객체생성 	
      	private String str3 = "" ; //객체생성이 되는ㄴ데 property가 빈 상태
      	private String str4 = null; //객체생성이 안된 상태  
      }

함수의 일반적 구성 : 선언부{구현부}

  • 구현체 구성
    1. 내부 지역변수 : 임시사용. 함수가 Return되면 메모리에서 소멸

    2. Statement

      종류

      1. Assignment : 예)a = 10 ;
      2. Control
        1. 조건문 : if, switch
        2. 반복문 : for, while
        3. 분기문 : break, continue
      3. Function Call :
    3. return

Operator의 종류

  1. Assingment(할당) : '='
  2. 산술 operator : +, +=, -=,-, *, /, %, ++, — ex) [b=10]일때 [a = b++//a = 10 ][a = ++b]//[a = 10]
  3. 상관(Relationl) : <,>,≤,≥,==,≠ —>결과는 true, false
  4. 논리 : &&(and), ||(or), ! —>결과는 true, false
private int modOperatorTest(int month) {
		//내부변수  
	 int months1[] = {30,28,30,31,30,31,30,30,31,30,30,31} ; //1~12월 일수
	 int months2[] = {30,29,30,31,30,31,30,30,31,30,30,31} ; //윤년 
 	 int retDays = 0 ;
	 //LOGIC  -- 알고리즘 --> statement
 	 if (month>12 || month<0) {
 		 return -1;
 	 }
 	 //옵션 체크 
 	 int temp = months1[0];
 	 retDays = months1[month -1];
	
	 return retDays;
	}
}
  1. BIT 연산자 : >>, <<, &, |(or)

자주 사용하는 Static Method

  • 객체와는 무관한 일반 함수
    • Class
      • interger
      • Arrays
      • Math
      • System
public static void makeLotto() {
			
			int[] lotto = {0, 0, 0, 0, 0, 0};
			int i, j, k;
			boolean error = false;
			int indexCount = 0;
			
			for (i = 0; i < 6; i++) {
				double random = Math.random();
				int temp1 = (int) (random * 10000000);
				int temp2 = temp1 % 46; // 0 ~ 45
				if (temp2 <= 0) { // control - 조건
					i--;
					continue;
				}
				
				for (j = 0; j < indexCount; j++) {
					if (temp2 == lotto[j]) {
						error = true;
					}
				}
				if (error) {
					i--;
					error = false;
					continue;
				}
				indexCount++;
				lotto[i] = temp2;
			}
			
			for (i = 0; i < 6; i++) {
				System.out.println(lotto[i]);
			}
		}
	}
profile
지식0부터 코딩전문가까지 틀린것 지적및 가르쳐주시면 감사하겠습니다!

0개의 댓글