class1_계산기 만들기

개굴·2023년 5월 2일
0

solidity

목록 보기
1/11

// SPDX-License-Identifier: GPL-3.0
// 없으면 경고 먹음 / 라이센스

pragma solidity ^0.8.18;
//컴파일 버전 : 컴파일과 맞지 않거나 낮으면 안됨 실행안됨 / 왠만하면 18,18 고고

contract StoreandReturn { 

    uint a; //숫자형 변수 a
    uint b; //숫자형 변수 b
    uint c=2; // 숫자형 변수 c, 값은 2
    uint add;

 
    // 상태 변수 
    // 수정하려면 돈든다
    // view에 지역변수 선언하고 담아서 수정가능 -> view는 돈 안듬
    // 돈들면 주황색이랑 콘솔에 녹색 스티커 


    // 함수이고, 이름은 getA, input값은 없음, public 하고 view 함, output 값은 1개 있음, uint 형임임
    function getA() public view returns(uint) {
        //지역변수 변경 가능 view 
        return a;
    }

    function setA(uint _a) public{
        a = _a;
    }
    function setAasFive() public {
        a = 5;
    }


   function setBasSeven() public {
        b=7;
    }


    function getB() public view returns (uint){
        return b;
    }

    function getAB() public view returns (uint,uint){
        return (a,b);
    }

    function getABC() public view returns (uint,uint,uint){
        return (a,b,c);
    }

    // 함수, 이름은 getAB, input 없음, public하고 view 함, output 값은 2개, 둘 다 uint형
    function addAB(uint _aa ,uint _bb) public returns (uint){
        add = _aa + _bb;
        return add;
    }

    // view : 상태변수 참고가능 값 변경 불가능 -> 가스 안씀
    // pure : 상태변수 변경 및 참조도 불가  -> 가스 안씀
    // view, pure 없으면 가스비 나옴 

    //view와 pure 함수는 state variable(상태변수)의 값을 변화시키지는 않음 -> gas비 안씀
    
    // 숫자 _aa와 _bb를 받아서 이 2개의 숫자를 더한 결과값을 반환하는 함수 Add를 구현하세요
    function Add(uint _aa, uint _bb) public pure/*상태변수는 하나도 필요없을 때 pure*/ returns(uint) {
        return _aa+_bb;
    }

    // 숫자 a와 b를 갖고와서 이 2개의 숫자를 더한 결과값을 반환하는 함수 Add2를 구현하세요
    function Add2() public view/*상태변수를 갖고오기 때문에 view로로*/ returns(uint) {
        return a+b;
    }


    // 상태 변수를 자역 변수에 담아 사용가능 
    function getCtest() public view returns (uint){
        uint d = c; 
        uint e = 5;
        return (d + e);
    }

}


// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.18;

contract Basic2 {

/*
계산기를 만드세요
2개의 input 값을 받아 더한 값을 반환하는 함수 Add, 곱한 값을 반환하는 함수 Mul, 뺀 값을 반환하는 Sub 그리고 몫과 나머지를 반환하는 함수 Div를 구현하세요
*/


    // 상태변수 수정도 없고, 읽는것도 없어서 pure
    function Add(uint _a, uint _b) public pure returns(uint){
        return _a+_b;
    }
    function Mul(uint _a, uint _b) public pure returns(uint) {
        return _a*_b;
    }
    function Sub(uint _a, uint _b) public pure returns (uint){
        return _a -_b;
    }
    function Div(uint _a, uint _b) public pure returns (uint,uint){
        return (_a / _b, _a%_b); //몫과 나머지 (/는 몫만 나옴 + % 나머지값)
		//소수점 없음 / 10의 18승 단위변환 -> 불완전한것을 극도로 싫어함 
    }

}
  • 가스비를 생각하며 코드 짜야함
    • 컴파일 시 -> 가스비
    • view, pure 없는 함수 실행 -> 가스비
      • 보통 저장, 수정 같은 함수 실행
        • 지역 변수는 상관없다
      • view : 상태변수 참고가능 값 변경 불가능
      • pure : 상태변수 변경 및 참조도 불가
  • uint256 이런 식으로 용량 선언도 가능하나 초보라 생략
  • 소수점 없음-> 불완전한것을 이더리움이 극도로 싫어함

0개의 댓글