《 프로 그래 밍 주옥 》 읽 기 소기 (3) - 데이터 가 데이터 구 조 를 결정 한다.

4492 단어
본 장 은 약술 한다.
이 장 은 복잡 한 if 판단 프로그램 단락 으로 주 제 를 제시 하 는데 이런 코드 의 여분 이 많 고 유사 성 이 높 은 프로그램 구 조 는 적당 한 데이터 구조 (예 를 들 어 수조) 로 같은 목적 을 달성 하 는 것 을 고려 해 야 한다.따라서 본 장의 제목 의 완전한 의 미 를 끌 어 낸다. 적절 한 데이터 보 기 는 실제 적 으로 프로그램의 구 조 를 결정 한다.
구조 화 데이터
이 장 은 복잡 한 프로그램의 복잡 한 코드 양 이 이성 에 맞지 않 는 다 는 것 을 대량으로 소개 하여 독자 들 이 깊이 이해 하고 기억 할 수 있 게 하고 나중에 프로그램 을 쓸 때 유사 한 코드 를 다시 쓰 는 것 을 피 할 수 있다.저 자 는 네 번 째 소절 에서 구조 화 된 데이터 의 개념 을 제시 했다.구조 화 된 데 이 터 는 구조 가 뚜렷 한 데 이 터 를 말한다. 초기 에 적당 한 변수 이름 만 선택 했다 고 할 수 있 었 지만 후기 에 프로 그래 밍 언어 는 기록 이나 구조 와 그들 을 가리 키 는 지침 을 넣 었 다.데 이 터 를 처리 하 는 코드 대신 insert 와 search 라 는 함 수 를 사용 하 는 것 을 배 웠 습 니 다. 이 는 데이터 표현 방식 을 바 꿀 때 프로그램의 다른 부분 을 손상 시 키 지 않 는 데 도움 이 됩 니 다.요약 하면 시스템 처리 대기 데 이 터 를 연구 하면 우수한 모듈 화 구 조 를 깊이 인식 할 수 있다.특수 데 이 터 를 처리 하 는 강력 한 도구 가 많 습 니 다.
  • 하이퍼텍스트
  • 이름 - 값 쌍
  • 스프 레 드 시트
  • 데이터베이스
  • 특정 분야 의 프로 그래 밍 언어
  • 의 원리
    이 장 은 주로 독자 에 게 구조 화 된 데이터 사상 을 주입 시 키 고 작은 이야기 의 형식 으로 독자 에 게 '작은 프로그램 으로 이 루어 질 수 있 는 것 은 큰 프로그램 을 만 들 지 말 라' 고 알려 준다.데이터 구조 디자인 은 시간 과 공간 을 절약 하고 이식 성과 유지 가능성 을 향상 시 키 는 등 긍정 적 인 영향 도 많다.다음은 특수 데이터 처리 에 관 한 몇 가지 원칙 입 니 다.
  • 배열 을 사용 하여 중복 코드 를 다시 작성 합 니 다. 지루 한 유사 코드 는 보통 가장 간단 한 데이터 구조 인 배열 을 사용 하여 더 좋 은 설명 을 할 수 있 습 니 다.
  • 복잡 한 구 조 를 밀봉 하고 매우 복잡 한 데이터 구조 가 필요 할 때 추상 적 인 용 어 를 사용 하여 정 의 를 내 리 며 조작 을 유형 으로 표시 한다.
  • 가능 한 한 고급 도구, 하이퍼텍스트, 이름 - 값 쌍, 스프 레 드 시트, 데이터 베이스, 프로 그래 밍 언어 등 을 사용 합 니 다.
  • 데이터 에서 프로그램의 구 조 를 얻어 내 는 것 도 이 장의 주제 이다.

  • 전체적으로 말 하면 본 장 은 복잡 한 코드 대신 적절 한 데이터 구 조 를 사용 하여 데이터 에서 프로그램 구 조 를 얻 는 것 을 알려 주 는 것 이다.인 코딩 을 시작 하기 전에 우수한 프로그래머 는 입 출력 과 중간 데이터 구 조 를 철저히 이해 할 것 이다.
    문제 풀이
    1. 상기 지식 을 배 워 서 이 문제 에 직면 하면 우 리 는 배열 이 해당 하 는 데 이 터 를 저장 하 는 방식 을 쉽게 생각 할 수 있다.이 문제 에서 세 개의 저장 배열 이 필요 하 다. 기본 세금, 등급 차기 와 세율 은 이런 방식 으로 복잡 한 조건 판단 을 피하 고 코드 량 을 줄 일 수 있다.2. k 단계 상 계수 선형 재 귀 정의 급수, 똑 같이 두 개의 배열 을 사용 하고 하나의 저장 매개 변수 c [1] 부터 c [k + 1] 까지 다른 저장 결과 a [1] 부터 a [n] 까지 코드 가 간결 하고 건장 성 이 좋다.구체 적 인 실현 은 다음 과 같다.
    /************************************************************************/
    /* 《    》             * 3.7   2,  k              *          ,        ,    ,     */
    /************************************************************************/
    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    const int N = 100;
    
    int main()
    {
        //  k,m
        int k, m;
        int c[N + 1] = { 0 }, a[N] = {0};
        cin >> k >> m;
    
        //  c[1] c[k+1]  k+1   ,         ,   1    
        for (int i = 1; i <= k + 1; i++)
            cin >> c[i];
    
        for (int j = 1; j <= k; j++)
            a[j] = c[j - 1] * a[j - 1] + c[j];
    
        for (int j = 1; j <= k; j++)
            cout << "a[" << j << "] = " << a[j] << "\t";
        cout << endl << "a[" << m << "] = " << a[m] << endl;
    
        system("pause");
    
        return 0;
    }

    3. 대문자 로 인쇄 하고 책 부록 의 답 을 제시 합 니 다.4. 다음 날짜 문 제 를 처리 하 는 함 수 를 작성 합 니 다. (1) 두 날 짜 를 정 하고 둘 사이 의 일 수 를 계산 합 니 다.(2) 날 짜 를 정 하고 반환 값 은 주 몇 입 니까?(3) 주어진 달 과 년, 문자 배열 로 이 달의 달력 을 생 성 합 니 다.
          

    5. 영어 의 일부분 연결 문 제 를 처리 합 니 다.
          

    6. 이 문 제 는 출력 템 플 릿 을 포맷 하여 데이터베이스 에 있 는 기록 이 맞 춤 형 문 서 를 만 들 도록 해 야 합 니 다. 책 에 있 는 인 스 턴 스 와 비슷 합 니 다.실제 응용 에서 스 크 립 트 언어 로 구현 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기