[블체스 Part.3] 230509

이현진·2023년 5월 9일
0

BlockChain School

목록 보기
12/20

복습

1

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.8.2 <0.9.0;

contract Review1 {
    // 이름, 생일, 번호를 담은 구조체 Student를 선언하고 Student들이 들어갈 수 있는 array students를 선언하시오.
    struct Student{
        string name;
        uint birth;
        uint number;
    }

    Student[] students;
    // students에 Student를 넣을 수 있는 함수, 
    // n번째 학생을 반환해주는 함수, 
    // n번째 학생의 이름을 반환해주는 함수를 구현하세요.

    function pushStudent(string memory _name, uint _birth, uint _number) public {
        students.push(Student(_name, _birth, _number));
    }

    function getStudent(uint _n) public view returns(Student memory) {
        return students[_n-1];
    }

    function getName(uint _n) public view returns(string memory) {
        return students[_n-1].name;
    }
}

contract Review2 {
    // 이름 a, 번호 b, bytes2 c를 담은 구조체 D
    struct D {
        string a;
        uint b;
        bytes2 c;
    }
    // D형 변수 ddd를 선언하시오.
    D ddd;

    // ddd에 값을 부여하는 함수를 구현하시오.
    function setDdd(string memory _a, uint _b, bytes2 _c) public {
        ddd = D(_a, _b, _c);
    }
    
    // D가 들어가는 array D_list를 선언하시오.
    // D_list 전체를 반환하는 함수, 
    // D_list 안에서 n번째 데이터를 반환하는 함수를 각각 구현하시오.

    D[] D_list;

    function getDlist() public view returns(D[] memory) {
        return D_list;
    }

    function getNum(uint _n) public view returns(D memory) {
        return D_list[_n-1];
    }



}

2

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.8.18;

contract Review3 {
    // ABC라는 구조체 안에는 숫자형 a, 문자형 b, 문자형 array c가 들어있다.
    struct ABC {
        uint a;
        string b;
        string[] c;
    }

    // ABC가 들어가는 array ABCs를 구현하고 
    // ABCs에 ABC를 넣는 함수, 
    // 특정 ABC를 반환하는 함수 
    // ABCs 전체를 반환하는 함수, 
    // 특정 ABC의 c array를 반환받는 함수를 각각 구현하시오.

    ABC[] ABCs;

    function pushABC(uint _a, string memory _b, string[] memory _c) public {
        ABCs.push(ABC(_a, _b, _c));
    }

    function getABC(uint _n) public view returns(ABC memory) {
        return ABCs[_n-1];
    }

    function getABCs() public view returns(ABC[] memory) {
        return ABCs;
    }

    function getC(uint _n) public view returns(string[] memory) {
        return ABCs[_n-1].c;
    }
}

Mapping


For, If

For

같은 동작을 반복
어떠한 값을 받으면 같은 행동을 쭉 반복한다.

If

조건에 따라 다른 동작을 함
1이면 이렇게, 2이면 저렇게
들어온 값에 따라서 다른 행동을 한다.

배열 push

길이가 정해져있는 배열은 push나 pop이 안된다. 이걸 사용하면 길이가 달라지니까!
push 대신
배열[n+1번째] = 배열에 집어넣을 값
이런 식으로 배열에 값을 집어넣어야 한다.


이렇게 하면 b배열에 순차적으로 값이 잘 들어온다.

이렇게 하면 b배열 맨 앞, 0번째 요소를 건너뛰고 값을 넣는다.

배열 요소의 합


머클 트리, 패트리샤트리


숙제

내일모레까지 비트코인 백서 읽어오기
가능한 오늘 1독!

오늘은 감기때문에 수업에 집중하기 너무 힘들었다ㅠㅠ
중간에 조퇴하고 병원에 다녀올까도 생각했는데
도저히 조퇴하면 안될 것 같아서.... 기를쓰고 버텼다.ㅋㅋㅋ

버티자. 버티고 보는 거야.

profile
https://github.com/lhjbg0821

0개의 댓글