1~4교시
☆S/W★
● 함수
- 함수중에서 printf 나 scanf 에 있는뒤에 F는 Function (함수)의 약자이다.
- 함수의 종류는 무궁무진하게 많이 있으며 , 다 알기 어려울정도로 많이 가지고 있다.
- 함수도 각각 쓰이는 단어들이 다른데
C언어에서는 Function
Java에서는 Method
Assembly에서는 Precedure
라고 읽는다
□ 프로그램을 출력하기전 입력코드를 Assembly 표현
- Assembly 파일을 열기 위해서는 우리가 처음에 배웠던 호출 명령어를 알아야 한다
- cl /Fa (파일이름).c 를 호출하면 되는데 우선적으로 cl /P를 입력하여 전처리 파일을 호출해야한다.
- Assembly 파일을 봤을때 5번라인에서 printf 를 호출한다는 명령어가 있다. 그리고 Assembly에서는 언더바를 사용해여 표기 한다.
□ 재귀호출
- 재귀 호출은 main함수를 반복적으로 사용하여 불러내는 호출 방법이다.
- 하지만 재귀 호출은 CPU에 큰 손상을 입힐 위험이 크기 때문에 가능한한 사용하지 않는것이 좋다.
- 위와 같이 iNum이 1일 경우에 는 main()을 쓴다고 되어 있다.
- 만약 iNum에 1을 입력하면 프로그램은 이 코드를 한번 더 입력하며 scanf에서 대기를 하고 있는것이다.
- 숫자를 입력하세요 에서 1을 100번 입력 한후 다른 숫자를 입력하게 되면 다른 숫자가 한번 입력된 이후에 99가 100번 출력 하게 된다.
□ Visual Studio 의 Debug를 이용해서 알아보기
- 아까와 같은 함수를 Visual Studio 에 입력한다
- 우선 처음으로 7번에 Break Point를 걸어준 후 실행한다
- 실행을 하게 되면 scanf에 화살표가 표시 되고 거기서 F10을 한 번 더 실행하면 숫자를 입력이 가능하다.
- scanf 에서 숫자 1을 입력하게 되면 if문으로 넘어가게 되는데 iNum의 값이 1인지 확인을 하는 작업에서 브레이크가 걸린다.
- 여기서 맞으면 iNum = 1이 성립이 되므로 main함수로 돌아 가게 된다.
- 아까 말했듯이 1이 성립했기때문에 main함수로 다시 넘어가게 된다.
- 여기서 주의 할 점은 F10을 사용 하는것이 아닌 F11을 사용한다.
- F10 은 함수를 쫓아가기만 할뿐 실행을 하지 않는다.
- F11 은 함수를 쫓아가서 실행을 하기 때문에 만약 F10을 눌렀다면 printf로 넘어 갔을것이다.
- 이후 다시 F10을 이용하여 scanf 까지 넘어 간 이후 0을 써넣은 뒤에서 F10을 누르면 다시 if문으로 넘어가 비교를 한다.
- iNum의 값이 틀리기 때문에 printf로 와서 iNum은 0이라는 값을 출력을 해준다
- 그리고 return 99에서 아까 받았던 첫번째 main함수로 넘어 가게 된다.
- 두번째 main 함수에서 0이라는것을 확인 했기 때문에 첫번째 함수에서도 그대로 0이 적용 된다.
- 그러므로 0이 2번 입력이 되며 main 에서 99가 같이 딸려 오게 된다.
- return 값은 애초에 윈도우로 넘겨서 출력하라고 하지만 윈도우는 return값을 버리기 때문에 애초에 출력이 되지 않지만 첫번째 함수로 넘겼기 때문에 99라는 숫자가 iNum에 존재한다.
- 마지막까지 출력을 하게 되면 99라는 숫자가 같이 입력이 된다.
- 그리고 함수를 호출 한 만큼 return값은 증가 한다.
- 함수가 첫번째와 두번째로 넘어 갔는지 확인 하는 방법은 watch를 이용하여 알아보면 편리하다.
- 그림에서 보면 첫번째와 두번째의 주소가 각각 다른것을 확인 할 수 있다.
● 함수의 선언
- 여태까지 함수는 1개만 호출하여 사용하기도 했다 하지만 함수는 여러개를 호출이 가능하게 할수가 있다.
- 예시를 들어보면
- 우선 Smart라는 함수를 지정한후 return 값을 iNum으로 지정한다.
- iNum을 지정한후 다시 main함수로 넘어가 또 다른 코드를 하나 쓴다.
- 여기서 iNum이 중복이 되지 않게 조심해야 하며 num값을 입력해준후 처음과 같이 smart함수를 지정해준다.
- 우선적으로 실행하는건 main함수부터 실행을한다 14번 라인에서 smart함수로 넘어가 smart함수를 입력받는다.
- 그러면 scanf 에서 숫자를 입력하게 되며 다시 main함수로 넘어 오게 된다.
- 즉 , 메인 함수는 필요할때마다 smart함수를 호출하며 main 함수에서 여러번 실행하지 않아도 된다.
- return 값은 처음 선언한 함수값과 일치해야한다. (예 : int smart에 int iNum일 경우 return iNum / float smart에 float fNum일경우 return fNum 이런식으로 같아야한다)
□ 응용편
- 이렇게 숫자와 실수를 입력 할 수 있다.
- 주의해야 할 점은 함수를 입력할때 안의 코드와 전부 일치 해야하는 점이다.
□ 전달인자와 반환값이 모두 있는 경우
- 전달인자와 반환값이 모두 있는 경우는 가장 일반적인 함수의 형태이다
- 예시를 한번 들어보면
- 위의 그림과 같이 표시하게 되면 7과 13이 나온다.
- 여기서 int add에 있는 int iNum1과 int iNum2, 그리고 main함수에 있는 int result는 각각 다른 변수이다. 이것을 지역함수라고 부른다.
- result = add (3,4)라는 뜻은 main함수의 result값이 add함수의 값과 일치하다는것을 알수 있다.
그렇기 때문에 iNum1은 3, iNum2의 값은 4가 되는것을 알 수 있다.
- 그렇게 덧셈 결과를 보면 7이 나오게 된다. 즉, main함수에서 add함수를 호출 한 셈이 된것이다.
- 두번째 결과도 마찬가지고 add (5,8)을 main함수에서 호출을 하게 된다. main함수에서 초기값을 지정해주면 add함수에서는 초기값이 계속 변형이 되어 나온다.
5~8교시
★H/W☆
- AC 220V 에서는 단상 2선식을 쓴다
↑ 단상 2선식의 도면
- 380V 에서는 3상 4선식을 사용한다.
↑ 3상 4선식 도면
- AC -> DC를 정류 회로 라고 하며 , 정류회로의 핵심적인 부품은 Diode (다이오드) 이다.
- 다이오드의 핵심 기능 : 전류를 한쪽 방향으로만 흘리게 한다.
- 캐패시터의 역할 : 충전 or 방전
● 전파 정류 회로와 반파 정류 회로의 차이점
- 반파정류 회로를 한 번 그렸던적이 있었지만 전파 정류 회로도는 실제로 그려본 적이 없었다 . 차이점을 눈으로 확인해보면
↑ 전파 정류 회로도
↑ 반파 정류 회로도
- 합쳐보면 이렇게 나온다.
□ 반파정류와 전파정류에 캐패시터를 넣어보면
- 위와 같이 평활 캐패시터를 설치하면 전파정류회로도의 LED는 항상 켜져 있다.
- 아래의 반파정류의 LED는 깜빡거리게 된다.
- 전파 정류 회로 중에도 종류가 있는데 그 종류중 하나가 브릿지 전파 정류 회로 이다.
↑ 브릿지 전파 정류 회로도
- 차이점은 트랜스포머를 사용할때엔 일반 전파 정류 회로를 사용하고, 사용하지 않을때에는 브릿지 전파 정류 회로를 사용한다.
□ DC -> AC로 변환하는 법
- DC에서 발진을 하며 , 주파수를 60Hz로 맞춘후 트랜스를 연결 하면 된다. 주로 차량용 인버터가 그 원리이다.
□ 변압기 (Transformer) 의 원리
- 변압기는 공간을 통해 전기에너지를 전달할 수 있는 간단한 장치이다. 1차 코일에 자기장의 변화가 생기면 2차코일에 전압이 유도 된다.
- 1차 코일과 2차코일 내에 철심을 넣으면 자기장은 철심에 집중되어 자기장의 변화에 더 민감하게 반응하게 된다.
- 만약 2차 코일에 감은 도선의 수가 1차코일의 반이면 출력전압도 반으로 줄어든다.
- 반대로 2차코일에 감긴 횟수가 1차코일 보다 많으면 2차코일의 전압이 1차 코일보다 커진다.
☆ 오늘 하루도 수고 하셨습니다 ★
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20150303-25번-이량경-브레드보드, 브레드보드 전원 설계/데이터시트 확인 / AVR 작업환경 설정. (9) | 2015.03.04 |
---|---|
20150302-24번-윤재희 - 미/적분 회로 & AVR Studio 세팅 (6) | 2015.03.02 |
20150227-23번-우대희 - 패러데이법칙,AVR (6) | 2015.03.02 |
포토 커플러 (7) | 2015.02.27 |
20150225 - 21번 엄민웅 피보나치 수열, switch문, funtion (7) | 2015.02.26 |
20150223 월요일 수업 디버깅 정리. (7) | 2015.02.25 |
공부하세요 (2) | 2015.02.23 |
20150217 - 16번 박태인 - Shift 연산자 & Altium Artwork (15) | 2015.02.20 |