기능의 힘

△ UP에 의한 것으로, 위쪽으로 성장한다. 프로그래머 성장 충전 스테이션 △를

640? wx_fmt = JPEG

컴퓨터 기초 강좌  (29)  나눔

재 인쇄는 공인 (마이크로 편지에 문의하시기 바랍니다 ID : qianpangzi0206를)


01

지수 계산


그런 다음 게임의 말하기, 우리는 각 단계의 종료 후 보너스 포인트의 수, 보너스 따라 플레이어를 그 어떤 번호, 10, 42, 10 억 달러를 사용하고 가정 할 수 있습니다 얼마나 많은 포인트 릴레이의 나머지 번호입니다. 어려움을 증가, 나머지 릴레이가 점점 더 어려워되고, 성장 때문에 기하 급수적으로, 클럽의 현재의 수에 따라 포인트를 보상 의지. 우리는 인덱스를 계산하는 간단한 코드를 작성, 인덱스는 자신을 곱한 숫자입니다, 특정 횟수를 취할. 루프와 거의 완벽한 달성!

우선, 1 [체크 포인트의 현재 번호] [보너스 포인트가 X는, 결과는 [보너스 포인트] 저장된다 릴레이 잔류]에 상기 사이클 후, (1)에 새로운 변수 집합 중 하나를 소위 "보너스 포인트"를 생성한다. 예를 들어, 릴레이의 수는, 포인트 수가 인센티브 분기하여, 3 사이클 것, 3, 2, 전력의 1 × 2 × 2 × 2, 3 보너스 포인트 8,2 인 릴레이 x 개의 릴레이 릴레이 번호 (X)의 개수 .

02

코드는 "기능"에 패키지되어


인덱스 코드, 모든 시간이 코드가 문제가 발견 된 경우 이름, 구멍을 채우기 위해 변화의 양이 각각 끈적의 복사본을 만들 당신이 원하는 때마다 복사 및 붙여 넣기하는 데 사용하는 경우, 어려운 것, 다른 곳에서 사용 할 수있는 매우 실용적입니다 모든 개혁을 찾을 수있는 장소를 통해 게시하고, 코드를 더 어렵게 이해할 수 있습니다. 적은 더입니다! 우리는 몇 가지 방법은, 코드 "패키지"결과는 내부 복잡성을 통제하지 않는, 직접 사용할 수있는합니다. 이것은 차례로 추상화 계층을 향상!

코드의 복잡성을 숨기기 위해 "기능"이라고도하는 "방법"또는 "일상"으로 포장 할 수 있습니다 (그래서 일부 프로그래밍 언어라고합니다). 다른 곳에서 나는,이 기능을 사용 그것의 기능 이름을 직접 쓰고 싶어요.

现在我们把指数代码变成函数。 第一步,取名。叫什么都行,比如"快乐独角兽",但因为是算指数,  直接叫"指数"合适一些。还有,与其用特定变量名,比如 "继电器" 和 "关卡数",用更通用的名字,比如 底数(Base) 和 指数(Exp),Base 和 Exp 的初始值需要外部传入,剩余代码和之前一样,现在完成了,有函数名和新变量名。最后, 我们还需要把结果交给使用这个函数的代码,所以用 RETURN 语句,指明返回什么。

完整版代码是这样,现在可以随意用这个函数,只需要写出名字 然后传入2个数字  就可以了。如果要算 2 的 44 次方,写 exponent(2,44),结果是 18 万亿左右。幕后原理是,2 和 44 存进 Base 和 Exp,跑循环,然后返回结果。

03

使用函数


我们来用这个新函数算奖励分,首先,奖励分初始化为 0,然后用 if 语句,看剩不剩继电器(看上图的 > 0)。如果还剩,用指数函数,传入 [继电器数] 和 [关卡数],它会算 [继电器数]的[关卡数]次方,  存入奖励分。这段算奖励分的代码,之后可能还会用,也打包成一个函数。没错,这个函数 (CalcBonus) 会调用另一个函数 (Exponent)。还有这个 CalcBonus 函数,可以用在其他更复杂的函数。

我们来写一个函数, 每一关结束后都会调用,叫 LevelFinished (关卡结束),需要传入 [剩余继电器数]  [关卡数] [当前分],这些数据必须传入。里面用 CalcBonus 算奖励分,并加进总分。还有,如果当前分 > 游戏最高分,把新高分和玩家名 存起来。

이제 코드는 매우 "가 공상 은" 함수 호출 함수 호출 기능 , 우리는 코드의 복잡성이 라인 숨겨진 물품. 뿐만 아니라 결과가 53에서처럼, 마법처럼 반환됩니다 알고 있지만,이 마술, 추상적 인 힘이 아닌, 루프와 변수의 내부를 알 필요가있다. 이 예제를 이해하면 이해하는 현대의 프로그래밍 기능의 핵심 전력을.

예를 들어, 쓰기 문장의 긴 목록과 같은 브라우저와 같은 복잡한 절차, 불가능하다, 코드 라인의 수백만, 아무도, 그래서 현대의 소프트웨어는 기능 수천 개의 이해하지 다른 것들에 대한 각 담당 할 수있을 것입니다.

오늘, 코드 기능의 100 개 이상의 라인, 희귀 100 개 이상의 줄 경우이며, 어떤 함수의 철거에서 할 수가 있어야한다, 모듈성은 하나의 프로그래머 인디 앱을 만들 수 없습니다뿐만 아니라에 팀워크를 더 쓸 수 있습니다 프로그램 . 다른 프로그래머가 당신의 코드가 제대로 작동하는지 확인, 다른 함수를 작성하기 위해 함께 넣어 소유자는 전체 프로그램이 제대로 작동 할 수 있어야한다!

04

창고


실제로, 프로그래머가 이런 종류의 지수 함수를 작성하는 시간을 낭비하지 않을 것이다, 기능의 많은 현대 프로그래밍 언어 미리 작성된 세트라는있다 "도서관." 단지 효율적이지 전문가에 의해 작성된,하지만 면밀하게 조사한 후, 우리는이 주제에 대해 말할 수있는 거의 모든 것을 도서관, 네트워킹, 이미지, 사운드입니다 않습니다.

그러나 우리는 알고리즘에 대해 호기심을 이야기하기 전에?

다음 주에 뵙겠습니다

관련 독서 :

 

  1. 높은 수준의 프로그래밍 언어와 어셈블리 언어에서 진화

  2. 프로그래밍 언어의 기본 요소


프로그래머는 충전 스테이션 성장

640? wx_fmt = JPEG

를 눌러 스캔 코드, 컴퓨터 배울 수 오분 일에 관한 가장 기본적인 지식과 원칙을

우측 하단

봐주세요


추천

출처blog.csdn.net/cq20110310/article/details/91692699