다시 오신 걸 환영해요
네 이번 강의에서는 이전 과제의 솔루션
데모를 살펴볼게요 몇 가지 함수를 만드는
거였죠 주로 GCD 함수와 몇 가지 함수요 절대값 함수와 제곱근
함수요
네 프로젝트를 하나 생성하고 프로젝트
함수 이름을 정할 거예요 기존의 프로젝트를 닫겠습니다
또 다른 콘솔 응용 프로그램이죠
라이브러리나 그 어떤 그래픽 프로그래밍도
없었죠
몇 가지 함수를 다룰 거에요.
보통은 아구드라는 이름을 붙이는데 이건 학습 목적으로만
붙이는 거예요
제네릭 함수를 프로비딩하는 거죠
GCD 프로그램이었다면 가장 공통적인 분배안을 썼겠죠
네 하지만 가장 먼저 할 일은 우리의 가장 위대한 공통 분배
프로그램을 구현하는 겁니다
네 이 함수는 두 개의 비음극 정수 값 사이에서 가장 공통된
divor를 찾아 결과를 리턴합니다
네 기능 프로토타입도 제공해야 합니다 그래야
기능 어디에나 설치할 수 있으니까요
그렇게 하죠
첫 번째 함수는 function declaration이에요
왜 functiondeclaration을
만들까요? 프로그램 어디서든 호출할 수 있도록요
이 함수를 호출할 때 주요 함수
위에 실제로 간소화할 필요가 없어요
네 좋은 연습이 될 거예요 프로그램에서 무슨 일이 일어나고
있는지 쉽게 볼 수 있습니다 위에 모든 함수 선언들이 있습니다
이건 int를 반환하죠
기억하세요, 함수 헤더: 가장 먼저 해야 할 일은 반환될 데이터 형식을 지정하는
거죠
GCD는 int를 반환하죠
그런 다음 GCD라는 함수에 이름을 붙일 거예요
괄호 안에 있는 건 GCD로 넘어가고요
이 또한 int가 되겠죠
데이터 항목 두 개를 전달할 거예요
쉼표로 구분하죠
데이터 타입 foreach1과 변수 이름을 명시해요
in u와 v라고 할게요
그리고 기능의 정의인 세미콜론 토엔드가 있죠
네 이제 메인 아래에 함수를 정의할 수 있고 여전히 호출할 수 있고 아무
문제도 생기지 않습니다
좋아요, 이제 함수를 정의하고 싶으면
구현하세요 같은 기능을 하죠 헤더 int 값을 반환 GCD
형식적으로 배분과 일치해야 해요
이름을 int x로 할 수도 있지만 일관성 있게
할 거예요
int v라고 입력하죠
브래킷이 차체를 정의하기 때문에 기능적 결함이라는
걸 알 수 있죠
이게 구현 코드예요
GCD의 실제 알고리즘은 꽤 간단해요
네 네 여러분이 해야 할 일은 루프를 작성하고 루프를 살펴보면서 나머지 값에 기반한
임시 값을 살펴보는 겁니다
GCD 기능 안에 localvariable을 만들게요
괄호 안에 12에서 14까지 있는데 로컬인지 어떻게 알죠?
이 변수는 메인 함수에 접근이 안 돼요
이 블록에만 있어요
이 지역 것이기 때문에 임시로 설정할게요.
이제 루프를 생성할게요
while 루프를 사용할 거예요
while 루프는 v까지 가요 우리의 가장 큰
공통 분할이죠
최고의 공통분모는 두 가지 변수가 필요해요
매개 변수가 필요해요
그리고 그런 매개 변수들을 기반으로 최고의 공통 분할자를 찾기
위한 알고리즘을 생성하죠
네 divor를 찾으려는 경우
v가 0이 아닌 걸 확인해야 해요 두 번째 매개 변수는
이건 알고리즘의 표준 부분이에요
v가 0이 아닌 동안 반복을 위해 괄호를
칠 거예요
먼저 모듈 값인 u.V.의
값을 임시로 할당할 거예요.
그런 다음 uequal을 v으로 설정하고 v는 temp와
같다고 설정하죠
그런 다음 이 함수에서 returndata를 원하죠
데이터를 어떻게 반환할까요? return 키워드를
써서 return thedata를 반환하죠
이 경우엔 유를 반환하고 싶어요
네 이 함수가 데이터를 반환하지 않으면 형식을 void로
바꿔야 한다는 걸 기억하세요
그럼 데이터 없이 반환할 수 있어요
하지만 이건 데이터를 반환하는 거예요
그래서 맞춰야 해요
여기서 다시 반환 얘기를 하죠
네 네 또한 이 함수에 데이터를 전달하지 않을 때 void를
매개 변수로 넣거나 비워둘 수도 있어요 그럼 함수가 데이터를
받지 않을 테니까요 두 가지 변수가 있습니다
u와 v이라는 변수가 GCD 함수에 있어요
함수 안에서 사용할 수 있어요
그게 우리가 하는 일이죠
모두 기능의 특징이죠
반환 값이요 반환 값은 로컬 변수를 이용해 넘긴
데이터를 반환하는 값이죠
네 모두 구문에 주목하세요 대괄호와 상단
선언 말이에요
이제 이 함수를 테스트해보죠
다양한 물질이 있는지 시험해 볼 거예요
네 이 함수는 데이터를 반환한다는 걸 기억하세요 따라서 메인 화면에
로컬 변수를 생성해야죠 결과라고 하겠습니다
0으로 초기화할 수 있어요
그런 다음 함수를 호출해야죠
함수를 어떻게 호출하죠?
그냥 함수 이름만 지정하고 그 다음에 전달되는 데이터를
입력하죠
이 함수는 데이터를 반환하니까요 결과 = 그리고
함수 이름을 넣겠습니다
기능명은 GCD예요
첫 시험에서 150점을 받고 35점을 받을 거예요
네 다른 수치를 전달하기 위해 두 가지 테스트를 할 거예요
반환된 데이터를 프린트하고 싶어요
결과요
네 그래서 printf라고 하고 이렇게 하는 거죠 GCD 150과 35는 퍼센트
라인 피드라고요 그런 다음 결과
네 10번째 줄은 중요해요
GCD에서 데이터를 받아 변수에 할당하고 있어요
함수 전달을 두 상수로 부를 수 있어요 150과 35죠
변수를 통과시킬 수도 있어요
네 네 데이터를 전달받은 함수를 호출하는 방법은
괄호 안에 쉼표로 값을 구분하고 세미콜론은 그 끝에
있어요
여러 검사를 하고 싶어요
10과 11을 복사해서 다른 데이터를 넣을게요.
1026과 405를 입력하고 83도 입력할게요
네 그리고 실제로 할 수 있는 건 변수를 리턴하는
대신 함수의 호출을 printf 안에 넣고
저기 프린트하는 거죠 저장할 필요도 없어요
그냥 GCD 83,240라고 하죠
네 프린트할 것을 변경해야
합니다 하드 코드화된 값의 관점에서 예를 들어 1026 405 그리고 240, 83
그걸 컴파일해 보죠
에러나 경고를 꼭 넣도록 하죠
오류도 없고 경고도 없어요
그럼 실행하죠
그걸 실행하면 특정 수에 대한 가장 큰 공통
분배가 세 번 나올 거예요
GCD는 150이고 35는 5예요
1026과 405의 GCD는 27이에요
83과 240의 GCD는 1이고요
가장 큰 공통 분할은 이 두 숫자의 인자를 뜻하죠 가장
큰 요인이 뭘까요?
5는 35로 가고 5는 150으로 가요
그게 제일 높은 거예요
405번과 1026번 사이에도 27번이 들어가는데 그 둘이 합쳐 최고점이에요
작동하는 것 같네요
데이터 침입과 리턴 데이터의 기본을 다뤘죠
이제 알고리즘과 문제 해결 측면에서 몇 가지
더 연습해 볼게요
또 다른 함수인 절대값을 만들어보죠
절대값 함수는 float를 반환하고 float를 가져가요
에이버리의 간단한 기능이죠
5번째 줄에서 그 기능을 선언할 거예요
부동 소수점 절대 값 부동 소수점 절대 값 이건 이름이죠 그 다음 매개 변수
부동점 x라고 하죠 그런 다음 세미콜론을
끝내요
네 네 함수 선언을 보세요 return value요
매개 변수는 데이터 타입과 함수의 이름을 지정합니다
네 이 함수를 GCD 함수 밑으로 정의할 수
있어요 아주 간단할 거예요
네 네 반환될 형식으로 함수를 정의해요 이름과
매개 변수요 선언과 똑같죠 괄호를 써서 코드 블록을 시작하는
것만 빼고요
네 이건 쉬워요, 우리가 할 일은 매개 변수를 확인하고 0보다
작은지만 확인하면 되니까요
0보다 작으면 반대 항목을 할당합니다
x가 되겠죠
그래서 만약 빼기 값이라면 빼기 값의
곱하기 반환은 양성이 되죠
그 데이터를 반환하고 싶어요
return x라고 입력하죠
네 그런데 강의에서 언급하지 않은
예가 하나 있어요 데이터를 전체적으로 리턴하면 어떻게 될까요?
왜냐하면 다수의if 문을 갖고 있을 수 있고 각각의 if 문에 리턴할
수 있으니까요
그래서 여러분의 함수는 많은 리턴 문을 가질 수 있어요 ifs나
루프 안에 있다면요
아래쪽에 하나 만들 수 있어요
이 문제는 이해하기가 정말 어려워요
네 코드의 다른 부분을 반환해야 한다면 그냥 데이터를 변수에 저장하고
하단에 반환하면 돼요, 간단하죠 ⇲
하지만 이건 간단한 함수예요
값을 반환하는 거예요
네 이 함수를 사용해 보죠 부동 소수점 정수와 부동
소수점 정수와 함께 사용할 수 있죠
몇 가지 변수를 생성해 통과시킬
거예요
정수 설정도 만들게요
메인 요리 위에 올릴 거예요
F1 F2 F3를 위한 부동 소수점 수를 만들게요
정수 I1을 만들 거예요
결과를 저장하는 또 다른 변수를 생성할 겁니다 하지만 플로트여야
하죠
네 또 다른 변수를
생성할 건데 절대 값 결과라고
나오죠 그걸 0으로 초기화하고...
0개요
이제 오작동을 일으켜 결과를 출력할게요
코드를 복사해서 파스팅할게요
함수를 호출하고 반환된 데이터를 저장할 수 있어요 혹은 printf
함수에 전달할 수도 있죠
절대 값 기능을 테스트하는 주석을
달아야겠어요
한 줄에 별표를 사용하면 좀 더 강조가 되죠
네 절대값 함수에 다수의 호출을 붙여넣고 결과를 보여드렸습니다
24에서 F1의 값을 여과하고 있어요
f1은 플로트예요
마이너스 15예요 5살요
그걸 형식화해서 프린트할 거예요
F1도 출력할 거예요
원본보다 함수를 호출해서
변화가 있는지 볼 거예요
함수를 호출한 결과를 출력할 거예요
원본 값도요
변했는지 확인할 수 있어요
음성이다가 양성이 됐다면요
다중 라인에서 다중 테스트를 하는 거죠
그리고 37번째 줄에서 유일한 차이점은
값을 변수에 저장하지 않는다는 거죠 그냥 프린트할게요
그래서 여기 결과를 올바른 변수로 바꿔야 해요
그렇게 하죠
이 아래에서 그걸 하고 싶어요
처음 프로그래밍을 쓸 때 각각 따로 썼어요
실수가 없길 바라야죠
바꿔야 할 건 다 바꾸고요 그럼 될 거예요
네 다른 건 변수 결과를 프린트하지 않고
26번째 줄에 있는 것만요
안 그러면 결과만 좋겠죠
첫 번째는 변경된 걸 보여줘요 f1은 마이너스
값이거든요
그럼 만들어보죠
오류도 없고 경고도 없어요
토페이가 주목해야 할 출력은 절대적인
출력이에요
그래서 몇 줄 추가하는 게 더 나을 수도 있어요
마지막 것을 디스플레이한 후 라인 피드 두어 개를 추가하죠
읽고 실행하기 쉽게요
결과가 15로 나왔네요 5살요
네, F1은 원래 15세였으니 부정을 긍정으로
바꿨죠 5살요
다른 결과들도 긍정적인 가치관을 담고 있어요
네 마지막 프린트 통로는 결과를 프린트하지 않았어요 함수에서
반환된 값을 출력했습니다
작동하는 것 같아요
제가 원했던 마지막 함수는 tdefine의 제곱근 함수였어요.
이건 숫자의 제곱근을 처리하는 기능이죠
네거티브 인수가 통과되면 메시지가 표시되고 네거티브
인수가 1이 반환되죠
네 이 함수 선언을 부동 소수점 제곱근으로 정의합시다
어떤 이름이든 부동 소수점 제곱근이죠
제곱근은 사실 절대값 함수를 사용하죠
위에서 정의해도 함수 declaration 때문에
사용할 수 있어요.
그걸 정의하죠 float를 취해요
네 이 함수들을 정의하는 건 아주 편리할 거예요 반환용 데이터
타입 매개 변수 괄호요
여기서 여러 개의 변수를 생성할 거예요
이건 건물 안에서만 압류할 수 있어요
제곱 루트 알고리즘에 도움이 될 거예요
59번째 줄에서 상수 변수를 만들었어요
네 그건 얘기한 적 없지만 그건 상수를 생성하는 방법일 뿐이에요
정의를 사용하는 것과는 반대로요
플로트 변수인 펩실론을 만들었어요 001은 제곱근 연산을
도와서 정해진 범위 내에 있도록 하죠
어떤 게 1일까요? 1안단 절대 가치 선언이에요
네 사실 선언을 제공할 필요는 없어요 상단에 그걸 정의했으니까요
그래서 제거할 수 있어요
매개 변수를 확인해야 한다는 걸 기억하세요 매개 변수 유효성
검사를 해야죠
매개 변수가 0보다 작으면
코멘트를 출력하고 부정적인 값을 반환해요
x가 0보다 작으면 마이너스 인수를 제곱근에 출력하고 마이너스
1을 반환해요
네 여기 반환 값이 여러 개 있어요 한
번 반환하는 방법을 보여드리죠 아래에 두겠습니다
그 외에는 제곱근에 우알고리듬이 있죠
심령 현상은 설명하지 않겠습니다 우리가 배울 내용과
관련 없으니까요
네 하지만 기본적으로 숫자의 제곱근을 찾으려면 곱한 다음에
x에서 빼기를 하면 절대값을 얻을 수 있어요
이제 추측을 해 보죠
네 먼저 추측하고 알고리즘이 맞는지 확인할
거예요 일정한 범위 내에 있는지 확인해 주세요
맞아요 만약 그렇다면 우리 추측을 무언가로 설정하고 그걸 2로 나눌
거예요 그럼 우리가 반환할 추측이 되겠죠
맨 밑에는 맞혀보세요라고 쓰고요
그래서 탭솔루트 값 기능을 사용하죠
우리 아래에 정의되어 있지만 선언은 위에 있습니다,
좋은 거죠
한 가지는 멀티플 반환 진술서예요
네 이건 합법적인 거예요 하지만 피해야 해요 상황을 파악하기가
더 어렵거든요
네 여기서 제가 할 일은 이 마이너스 1을 추측이 아닌 변수에
저장하는 거죠 어떻게 할 수 있는지 보죠
그래서 1로 초기화할 거예요 0개요, 1개는 마이너스고요
부동 소수점 반환 값이라는 또 다른 변수를 생성하겠죠
0으로 설정할 수 있어요 0개요
그리고 반환하기 전에 여기 반환하기
전에요 왜냐하면 이건 수학 함수에서 나오거든요 그냥 이렇게 말할 수 있죠 반환
값은 1... 수익이 아니라 0이죠
그런 다음 check하고 sayif 반환 값이 1이 아님을 말할
수 있어요 0 왜냐하면 유효하지 않은
숫자나 비 유효한 숫자를 이미 갖고 있다면 이걸 실행하지 않을 테니까요 if 문으로 이걸 마무리할
수 있어요
while 문 안에서 return value = guess라고 할 수 있어요
그런 식으로 유효한 엔트리라면 올바른 것을 반환하죠
그리고 손님에게 반환하는 대신 반환가를
반환하죠
네 이 코드는 좀 더 깔끔해요 하단 한
번만 반환되거든요 따라 하기가 더 쉽죠
반환 값은 틀린 인수가 되면 마이너스 1이 되고 틀린 인수가
아니면 제곱근이 됩니다 틀린 인수가 아니면요
이걸 간단하게 만들 수도 있어요 반환값을 확인하지 않아도
되죠 그냥 Else라고 하고 Else를
원본 if의 일부로 만드는 게 더 쉽겠네요
네 만약 양수라면 더 깔끔해질 거예요 그렇게 하면
if문이 안 나오죠
이제 시험해 봐야죠
이걸 테스트해보죠
오작동을 여러 번 호출하면 돼요
테스트 제곱근이라고 할게요
아무 인쇄나 하진 않을 거예요
ican이 여러 줄 피드를 추가하도록 하겠습니다
읽기가 쉽도록요
삽입 버튼을 누르세요
좋아요, 네 이제 많은 printfs를 작업하겠습니다
Val 데이터와 inval 데이터를 전송하고 같은 방식으로 형식을 정하겠습니다
첫 번째 콜윌은 유효한 제곱근의 제곱근이라고
해보죠
먼저 마이너스 번호로 확인해 보죠
3이라고 입력하면 오류가 출력될 거예요
아니면 유효한 수치로 검사할 거예요
네 16의 제곱근이라고 하고 int를 전달하죠 개종할 거예요 경고를
받을지도 몰라요
사전 경고는 사양할게요 16만 5천 달러로 하죠
이제 실행해서 테스트해보죠
컴파일 되길 바라야죠
철자가 틀리긴 했어요
이제 실행하면 좋은 제곱근 출력이 나오겠죠
여기 마이너스 1이 있어요
네거티브 판정 점수도 출력했으니 잘됐죠
다른 건 제곱근이 맞아요
잘 작동하는 것 같아요
16의 제곱근은 4, 25로 5, 9 즉 3, 165는
12죠 85살요
제가 계산을 잘못했네요
15 곱하기 15를 생각하면 225가 나와요
여기에 225를 넣으면 15가 제곱근이 되죠
네 네 이 소스 코드를 드릴 테니 분석해
보세요 함수 선언을 이해하세요 반환 유형과 데이터
전달 매개 변수로 함수를 정의하는 법을 이해하세요
지역 변수를 이해하고 하단으로 한 번만 반환하는 법을 이해해야 합니다
알고리즘 자체는 그리 중요하지 않아요
도움이 됐으면 좋겠네요 고마워요