스마트 컨트롤러 - ATmega12A 소개, 주소상수를 활용한 초기화, #define

 

 

#1&2 ATmega128A 지급 및 부품 설명

 



PCB 8, 전원 공급기 및 전선을 받음.

 


오실레이터에 주파수를 의미하는 숫자는 표시된 만큼은 정확하다.

ex)16.000=>16.000Mhz

 

//SMD(Small Mounded Device)

 

//왠만하면 손으로 MCU를 만지는 것을 삼간다. 정전기로 인해 회로가 파괴될 수 있다.

 

 

ATmega126A Datasheet.







www.atmel.com에 접속한다.

 

ATmega126A 데이트 시트를 다운 받는다.

 

/*RISC(Reduced Instruction Set Computer) & CISC(Complex Instcution Set Computer)

 

RISC방법은 메뉴얼화된 명령어를 사용하여 구동시키는 것이고 CISC방법은 세부적인 명령어를 통해 구동시키는 것이다.*/

#3. Pointer - 주소상수 입력을 통한 초기화

 

학습목표

 

지난 시간(2/26)에 입력하였던 코드를 불러온다.

 

// 0012FF28

 

int Num=50;

int *ip = &Num;

 

Num <- iP

50() 2000(번지)

 

iPNum을 가리킨다!

 

*iP = 100;

*2000 = 100; -> 2000을 상수로 생각함으로 주소임을 표시해 주어야 한다.

 

이것을 바탕으로! 주소 상수로 변수를 초기화 시키는 작업을 하겠다.

 

변수를 초기화 하는 방법은 총 3가지가 된다.

 

1. 변수에 직접 초기화한다.

ex) iNum=100;

 

2. 포인터로 초기화한다.

ex) *iP = 200;

 

3.주소값으로 변수를 찾아간 초기화 한다.

 

7

! *12FF28 = 200; 는 오류를 일으킨다. 좌항을 상수로 인식하기 때문이다. 해당 *CPU가 이항연산자로(곱하기) 인식하기 때문에 포인터 연산자로 인식하게 만들어주어야 한다.

 

그러므로 compiler12FF28주소 상수로 만들어 주는 작업이 필요하다.

 

우선 괄호를 쳐서 상수로 취급되고 있는 주소를 묶어준다.

ex) (12FF28) = 200;

 

 

casting으로 선언된 변수와의 형을 맞춰 준다.

ex) ((int *)12FF28) = 200;

 

*넣어 주어 포인터 선언을 한다.

ex) *((int *)12FF28) = 200;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#4. #define의 활용

 

#define은 자주 쓰는 입력들을 미리 선언해 놓고 간단한 명령어를 통해 출력하는 전처리 언어이다.

 

전처리 언어는 컴파일 시 적용되기 때문에 프로그램이 구동되는 것에는 영향을 미치지 않는다.

 

p/559 예제

 


 

#define을 통해서 변수가 원하는 값을 표현해 주고 있음을 볼 수 있다!

 

 

 

/* Visual Studio에서 compiler*.i 파일을 생성하는 옵션 설정

 

*/











반응형
Posted by newind2000
Busan IT/제어기초2015. 2. 27. 13:44

수동소자 복습

  

패러데이의 법칙

 

감은 코일에 N극과 S극이 있는 자석을 대면 변화를 싫어하는 코일은 처음에는 밀어내는 척력이 작용하다가 자석이 멀리 움직이면 인력이 작용하게 된다.

 

/*이승규 선생님이 하사하신 선물

mully.net*/

 

 

1820년에 외르스테드(Oersted)는 전류가 흐르는 도선에 의하여 자기가 만들어진다는 사실을 발견하였다.

 

이에 패러데이와 헨리는 코일에 단순히 자석을 넣었다 뺐다 함으로서 도선에 전류가 흐를 수 있다는 사실을 발견하였다.

 

이와 같이 코일내에 자기장을 변화시켜 전압이 유도되는 현상을 전자기유도라고 한다.

 

이 때 코일의 개수가 늘어남에 따라 도선에 큰 전압이 유도된다. 이 때 감기도선의 수와 유도되는 전압은 정비례하여 늘어난다.

ex) 코일의 개수가 2개에서 4개가 되면 전압은 xV에서 2xV가 된다.

 

또한 자석의 움직이는 속도가 높아지면 높아질수록 큰 전압이 유도된다.

 

* 가정에서 자석을 활용하여 전기를 생산해보자.

 

준비물: 꼬마전구, 전선(집게가 달린), 자석, 스프링

 

실습 후 Faraday의 유도 법칙을 계산하여 변수를 변환하여 원하는 전력을 생산시켜보자.


 

 

 

 

 

 

 

 

2. 변압기

 

코일을 감은 횟수에 비례하여 자기장의 바뀌는 것을 원리로 원하는 전압으로 변환시키는 기계이다.

 

1차 코일과 2차 코일 사이에 철심을 넣으면 자기장은 철심에 집중되어 자기장의 변화에 더 민감하게 반응하게 된다.


 

* 승압변압기는 마치 공짜로 에너지를 얻는 것처럼 보인다. 하지만 전압이 높아지면 최대로 흐를 수 있는 전류가 줄기 때문에 에너지의 이득은 없다.

 



 

 

3. 저항 코일(인덕터), 축전기(캐피시터)

 

코일은 기존의 성질을 유지하려는 관성을 가지고 있다. 전류가 흐름으로써 자기장이 발생하면 이에 역기전력을 발생시켜 관성을 유지하려고 한다. 이 역기전력 때문에 전류는 서서히 증가하게 된다. 이러한 관성 때문에 전류와 전압의 흐름이 일정한 직류 전류를 계속 공급하는 반면에 교류는 전류를 통과시키지 못한다.

 

축전기는 도선의 일부가 끊어진 형태로, 직류전기를 흘려 보내면 축전기가 충전되는 동안에는 전류가 흐르지만 충전이 완료되면 전류가 더 이상 흐르지 않게 된다. 하지만 교류전기를 흘려보내면 충전과 방전이 번갈아가며 일어나기 때문에 전류는 계속 흐를 수 있게 된다.

 

코일

축전기

직류

흐름

흐르다가 충전되는 멈춤

교류

전류 방향이 일정할때만 흐름

흐름

주파수

높을수록 안 흐름

높을수록 잘 흐름

임피던스(Impedence)

 

임피던스란 교류 회로합성저항을 말한다.

 

수동회로 소자를 단독으로 사용하는 경우는 드물다 회로의 손상을 줄이기 위해 복수의 회로 소자를 사용한다.

 

 

 



 

 

전원을 끌 때는 회로가 손상되는 것이 아니라 CPU에서 데이터 손상 및 오작동이 일어날 수 있다.

 

수동소자에서 레지스터는 전류를 막연하게 소모하는 것이고 인덕터(L)와 캐피시터(C)는 에너지를 충전하고 방전한다.

 

4. 다이오드(Diode)

 

+전하를 전공이라고 하고 -전하를 전자라고 한다. 실제로 전자만 움직이고 전공은 움직이지 않는다. 전공은 질량이 크기 때문이다.

 

전압을 걸면 전자들 사이에 척력이 발생하고 +쪽으로 이동하게 된다.

 

PN접합에서 전자는 -에서 +방향으로 이동하게 되는데 이 때 전류가 흐르는 순방향으로 PN이 달리게 되면 전류가 흐르지만 전류가 흐르는 역방향으로 PN접합이 있을 경우 전류가 흐르지 않게 된다.

 

5. 트랜지스터(Transistor)

 



 

채터링(Chatterinig) 방지 목적으로 위와 C1이 사용 되는 것을 알 수 있다.

 

//채터링은 전원을 켜고 끌 때 발생하는 아크, 잡음 등의 현상을 일컫는 말이다.

 



 

 

 



 

채터링 방지 목적으로 위와 C14/C1가 사용되었다. 스위치를 떼었을 때 불이 천천히 꺼지는 것을 확인할 수 있다.

 

 

 

반응형
Posted by newind2000
Busan IT/제어기초2015. 2. 26. 17:30

반파, 전파정류회로도 및 강압회로도 그리기

 

우리가 가정에서 공급받는 상용전기는 AC(교류)220V이다.

 

 

전력(electric power : P)이란 전기가 단위시간인 1초 동안에 하는 일의 양을 말한다. 따라서 1초 동안에 많은 일을 하는 전기는 전력이 세다고 말하고 1초 동안에 많은 일을 하지 못할  때는 전력이 약하다고 말한다.




 

 

ACDC로 바꿀 때 정류회로가 필요하고 정류회로에는 diode가 필요하다.

 

//diode의 특성은 전류를 한쪽 방향으로만 흐르게 한다는 특성이 있다.

 

//캐패시터의 주요 기능은 충전과 방전이다.

 

 

지난 시간에 그렸던 반파/전파정류회로를 만들어 보자!

 



<반파 전류 회로>

 

 

 

 



<전파 전류 회로>

 

 

트랜스포머가 없을시 브릿지 전파 정류회로를 쓴다.

 

 

DC-AC inverter 만드는 순서

 

DC의 발진 주파수를 60hz로 맞춘다. -> Trans를 사용하여 전압을 낮춘다.

 

직류/교류로 변환 시 효율을 생각해야 한다.

 

 

 

AC-DC로 바꾼 후 전압을 낮추는 회로 만들기

 



 

 

 

 

 

 

 

 

반응형
Posted by newind2000
Busan IT/제어언어2015. 2. 26. 13:50

제어언어 - 함수의 이해/return/포인터

 

#1. 함수 - 재귀함수와 return

 

학습목표 - 기본적인 함수의 구조를 이해하고 사용할 수 있다.

 

/* 금일로써 교육일정표에 나오는 C언어만 배우는 수업은 마지막이다.

 

다른 수업을 진행하면서 진도를 나가지 못한 C언어 대해서 마저 교육하겠다.

 

내일부터 오후에 소프트웨어 수업을 할 것이다.

 

금일은 이후 과정에서 필요한 아트메가에서의 CPU제어를 위해 pointer에 대하여 배우겠다.*/

 

함수 계속.

 

int main( )

{

 

return 99; // 종료하면 99(integer)를 반환해라.

 

}

 

//프로그래밍 언어마다 함수를 불러오는 이름이 다르다. Java에서는 method, assembly에서는 procedure.

 

Assembly언어에서 함수명을 어떻게 처리하는지 살펴보자.

 

 

 

 

실습 - 함수의 표현 변화)

 

C에서 변환되는 함수는 assembly로 변환될 때 “_”가 붙는다.

<--------------------------------------------------------------------------->

 

어제(2/25) 입력하였던 소스를 다시 살펴보자.

 


 

//어떤 함수 실행하였을 때 해당 함수가 반복되는 경우 이를 재귀함수라고 한다.

 

#2. 함수 - 재귀함수와 return

 

학습목표 - 함수의 진행을 해석할 수 있고 return 값의 정의를 이해하고 활용할 수 있다.

 

 

실습 - 재귀함수구조의 이해)

 

Visual Studio에 전 시간에 배웠던 소스를 입력한다.

scanfbreak point를 설정한다.

 

 

debug를 실행한다. watch창에 &iNumiNum을 입력해준다.

 

 

F10을 눌러 scanf를 수행해 준다.

 

 

 

이 때 iNum의 주소가 다시 main함수를 실행함으로써 바뀐 것을 알 수 있다.

 

 

 

다시 F10을 눌러 scanf까지 수행해주고 이번에는 재귀함수를 끝내기 위해 0을 입력해준다.

 

 

F10을 누르면 printf명령어로 와서 0이 출력되는 것을 도스 창에서 띄워준다.

 

 

이후 다시 F10을 누르면 if문 안에 있는 명령어로 돌아오는 것을 볼 수 있다. 주소 값이 처음 iNum값으로 돌아간 것으로 유추해보면 처음의 main함수로 돌아온 것을 알 수 있다.

 

 


F10을 여러 차례 눌러 확인해보면 iNum에 재귀함수의 return99가 들어가 있고 이것이 printf로 출력되었음을 알 수 있다.

 

 

F11은 호출한 함수를 쫓아가는 명령을 수행하는 키이다.

 

scanf에서 1을 입력 시 if함수 괄호 안에서 F11을 눌렀을 경우 화살표가 메인함수 처음을 가리키고 있음을 볼 수 있다.

<--------------------------------------------------------------------------->

 

지금까지 주구장창 0만 입력하였던 return값에 대하여 알아보자!

 

실습 - return )

 

 

<--------------------------------------------------------------------------->

 

Return값은 주로 프로그램을 실행하고 그 프로그램이 정상적으로 종료되었는지 확인하기 위하여 출력하는 값이지만 목적에 따라 원하는 값을 출력하여 사용할 수도 있다.

#3. 함수 - return

 

학습목표 - Return값을 활용할 수 있다.

 

실습 - return 값 계속)

함수를 하나의 변수처럼 사용하여 main함수로 출력할 수 있다.

 

/* 삼천포

조합형 한글 vs. 완성형 한글

조합형 한글은 자음이 어디에 가든 모양이 일정하지만 완성형 한글은 자음이 어디에 붙느냐에 따라 모양이 바뀐다. 조합형은 자음과 모음으로 만들 수 있는 모든 글자를 표시할 수 있다.

반면 완성형은 등록되지 않은 한글은 표시되지 않는다. */

 

p/210 전달인자의 유무와 반환 값에 따른 함수의 분류

 

p/212 예제 add함수)

 

* Visual Studio에서 입력한다.

Add함수는 인자가 2개인 함수(num1, num2)이고 main 함수로


 

 

// num1/num2/result는 지역변수라고 부른다.

 

자주 사용하는 함수를 만들어 놓고 호출하여 사용하면 코딩의 양을 줄일 수 있다.

 

 

 

 

 

 

 

 

 

 

#4. 포인터

 

실습 - 포인터)

 

변수 하나를 선언하고 주소와 값을 출력시켜보자.

 

우선 그 전에! 

보완을 위해 주소를 무작위로 출력하는 옵션을 해지 시켜준다.










































반응형
Posted by newind2000
Busan IT/제어기초2015. 2. 25. 17:28

Regulator(DC -> DC 강압)

 

 

전원에 관련한 내용이 수업에 많이 나오고 있다.

 

많이 쓰는 전압은 5v, 3.3v, 1.8v이다.

 

오늘 수업의 초점은 외부에서 전원을 받으면 많이 쓰이는 전압으로 바꾸어주는 회로도를 짜겠다.

 

오늘은 DC -> DC바꾸는 것이 초점을 맞춰 수업을 진행한다.

 

내일은 AC -> DC로 바꾸는 것을 하겠다.

 

레귤레이터를 사용하여 강압 하는 법을 알아본다.

 

프로테우스를 사용하여 7805 강압기를 만들어 본다.

 



!!! V outground를 달면 shot가 일어난다.(건전지 + - 를 이어놓는 것과 같아짐)

 

강압의 가장 간단한 회로도이기 때문에 많이 쓰인다.

 

하나 더 해보자.

 

LM3175volt 만들기

 



 

외부 전압이 흘러 회로가 망가지는 것이 다른 제품에도 퍼지지 않게 막는 것을 절연이라고 한다.

 

이것을 위해 절연 IC를 사용한다. ex) MAX253(trancer의 생김새를 따서 꽃반지라고도 불림)

 



 

포토 커플러(Photo coupler) 회로간을 전기적으로 절연한 상태에서 전기 신호를 전달하는 목적으로 발광소자와 수광소자를 광학적으로 결합하여 하나의 패키지에 내장한 광복 소자를 말한다.

ex) PC817

 



 

 

절연 IC - DCR010505 Altium으로 그려보기



 

 

Regulator - 78XXLM317의 사용방법은 알아 두는 것이 좋다.

 

//오늘은 DC전압으로 만드는 것을 하였지만 내일은 교류 전압을 DC로 바꾸는 것을 한다.









 

 

 

 

반응형
Posted by newind2000
Busan IT/제어언어2015. 2. 25. 13:22

제어언어 - 반복문의 일반성과 특수성/switch/함수

 

#1. 반복문의 일반성과 특수성

 

Switch문까지 배우고 나면 스스로 생각하여 알고리즘을 만들 수 있는 기본소양을 갖추게 된다.

 

알고리즘을 세울 때 일반적인 규칙에 어긋나는 값들은 특수성으로 간주하고 초기값으로 지정하면 된다.

 

실습 - 특수성과 일반성)

 

1 1 2 3 5 8 13 21...55까지 10개의 수열이 나오는 알고리즘을 작성하여라.

 

 

초기 값 1 , 1의 일반성에 적용되지 않음으로 따로 값을 선언해주고 이 값들은 규칙을 설정해 주어 for문으로 반복시켜 값을 도출한다.

 

규칙 -> 값은 = ()+ 전전(前前)

 

 

#2. 반복문의 일반성과 특수성

 

위의 실습 설명.

 

//알고리즘을 만들 때 가능한 부분부터 작게 나누어서 천천히 실행하면 된다.

//원하는 값을 도출하고 나서는 최적화 기법을 고민해야 한다.

 

#3. Switch

 

switch

 

기본 문법은 if와 동일하다.

 

switch(정수 변수 )

{

case 정수 상수:

명령;

 

case 정수 상수(위와는 다른 정수 상수):

명령;

}

 

정수 변수와 case가 일치하는 것의 명령어를 실행시킨다.

 

 

switch는 주로 switch case라고 부른다.

 

괄호 안에는 case가 들어가는데 케이스 명에는 정수 상수가 들어가야 한다.

 

 

 

주의 : case 다음 띄우고 양의 정수를 입력해야 하고 “:” 콜론을 찍어야 한다.

case당 명령어가 끝나면 "break;" 입력하여 빠져나오게 해야 한다.

 

실습 - switch문과 if else문의 비교)

if else 문을 활용하여 성적표시기를 만들어보자.

 

switch문으로 바꿔주기!

 

 

default값은 해당 case가 없을 경우에 실행된다.

 

#4. 함수

 

case의 실행내용이 같을 경우 case를 겹쳐주면 된다.

 

p/200 goto

 

쓰지 마라.

 

프로그램 내에서 아무렇게나 갈 수 있는 것이 goto 문이다.

 

goto "레이블을 실행시키면 레이블을 찾아가 그 곳에 있는 명령어를 실행시킨다.

 

goto를 쓰지 않는 이유는 언어의 분석과 흐름을 망치기 때문이다.

 

//이론을 읽기보다 문제를 많이 풀어라.

 

//일을 쪼개서 해결해라.

 

 

 

Ch.9 함수

 

y = f (x)

 

int(반환형태) main(함수이름) (void)(입력형태)

 

ex) int printf(const char *, ...);

int main(void);

int scanf(const char *, ...);

// “...” 가변인자(고정되지 않은 인자)라는 뜻이다.

 

함수의 기본형을 함수의 원형 혹은 함수의 prototype이라고 부른다.

 

둥근 괄호가 없으면 함수가 아니다.

 

 

 

 

 

 

p/209 예제

 

 

main 함수 반환 값이 나오는 프로그램을 만들어보자.

 

설명은 다음 시간에...

 












 

 

 

반응형

'Busan IT > 제어언어' 카테고리의 다른 글

함수의 이해/return값/포인터  (0) 2015.02.26
디버깅(Debugging)과 논리연산자  (0) 2015.02.24
복습 및 디버깅(debugging)  (0) 2015.02.23
연산과 변수의 최적화  (0) 2015.02.17
C언어 복습 및 비트 연산자  (0) 2015.02.16
Posted by newind2000
Busan IT/제어기초2015. 2. 24. 17:26

휴대폰 충전기(MC34063) 시뮬레이션

 

휴대폰 충전기(MC34063) 프로테우스(proteus)에서 시뮬레이션 돌려보기

 



 

Capacitorripple을 평화(平和)시켜주는 역할을 한다.

 

필요 없는 소자를 굳이 고르라고 하면 다이오드이다.

 

인덕터(Inductor)는 변화를 싫어하는 성질이 있어서 초기 전류가 흐르면 전류를 막아주고 전류흐름이 끊기면 전류를 흐르게 해준다.

 

인덕터의 용량이 커질수록 기울기가 완만해진다.

 

레지스터(resistor)가 비율이 1:3으로 되어야 한다.

반응형
Posted by newind2000
Busan IT/제어언어2015. 2. 24. 13:16

디버깅(Debugging)과 논리연산자

 

#1. 디버깅(Debugging)

 

디버깅(Debugging) 계속.

 

p/156 예제.

 

//최적화를 위해 초기화는 사용직전에 해주는 것이 좋다.

 

watch창을 통해 변수와 조건문의 상태를 확인해본다.

Do~while문은 중괄호에 있는 명령어를 반드시 한번은 실행되어야 할 때 쓰인다.

#2. 디버깅(Debugging)

 

p/164 for(반복문)

 

whilevs. for

 

입맛에 맞춰서 쓰면 된다!

 

p/166 예제 debugging

 

노란 화살표는 다음 수행될 행을 가리킨다.

 

디버그에 있는 watch창을 통해 모든 변수의 변화과정을 볼 수 있다.

 

 

#3. 조건문

 

p/179 조건문 예제

 


보안상 문제로 scanfcompiler에서 막는 경우가 있다. 이것을 해지하기 위해 #pragma를 쓰면 된다. ex) #pragma warning(disable:4996)

 

// 에러 코드가 뜨면 해당 코드를 인터넷에 검색하여 문제점을 해결한다.

 

//출력하는 명령어를 사용하지 않더라도 어떤 특정 값이나 변수를 입력하면 CPU에서는 그에 해당하는 작업을 수행한다.

 

논리적으로 범위가 한정된 조건문에서는 else if를 사용하여 compiler가 비교하는 횟수를 최소화함으로써 효율적인 코딩을 할 수 있다.

 

p/182 예제

#4. 논리연산자

 

논리 OR에서 값이 어떻게 변화하는지 알아보자.

OR인 경우 앞에 값이 참인 경우 뒤에 것을 수행하지 않는다.

 

CPU에서 최적화를 위해 || 뒤에 있는 명령어를 수행하지 않는다.

 

때문에 이러한 경우를 피하기 위해서는 여러 연산자를 한 줄에 적지 않는 것이 좋다.

 

p/187 삼 항 연산자

 

물음표(?):(콜론)의 조합

 

-> A ? B : C

= 조건 ? 참일 때 수행 : 거짓일 때 수행

= if(A)

{

B

}

else

{

C

}

 

삼 항 연산자를 쓰는 것은 추천하진 않지만 부득이하게 코딩의 양을 줄이기 위해 사용해야 하는 경우가 있다.

 

p/188 삼 항 연산자 예제


 

continue문은 continue가 적힌 자리에서 나머지는 수행하지 않고 반복조건으로 돌아간다.

break문은 가장 가까이 있는 반복문을 빠져 나간다.

 

 

 

 

 

 

반응형
Posted by newind2000
Busan IT/제어기초2015. 2. 23. 17:25

Altium에서 라이브러리 활용으로 휴대폰 충전기 회로 설계

 

 

 

휴대폰 충전기(MC34063 ) Altium에서 만들어보기

 

 


새 프로젝트를 만든다.

 










핀 번호와 이름까지 지정해주고나서

 




생선된 회로파일의 이름을 제작된 회로도와 일치 시켜준 후에!


YES


 

 

다운받은 Altium 라이브러리 폴더를 C:\Users\Public\Documents\Altium\AD13\Library안에 넣어줍니다.

 



Step-up 방식으로 만들어 보자.

 


마무으리!















반응형
Posted by newind2000
Busan IT/제어언어2015. 2. 23. 13:37

제어언어 - 복습 및 디버깅(debugging)

 

#1. 자료형의 변환

 

학습목표: 계산 시 메모리와 CPU에서 자료형 또는 자료형의 크기가 다를 때 어떤한 결과가 발생하는지 이해할 수 있다.

 

/*MCU vs. 일반 CPU

 

MCU에서는 CPU와 메모리가 메인 보드안에 다 들어있는 반면에 일반적인 경우 CPU는 메모리와 분리되어 있다.

 

간단한 명령어로 제어할 경우 MCU를 쓰는 적절하다. */

 

//이번 주 금요일(2/27) 아트메가를 지급받아 실습할 예정

 

/*폰 노이만 방식

 

인간의 사고 방식(기억을 바탕으로 사고)을 모방하여 계산 시 우선 내부메모리에 정보를 저장하여 처리하는 방식이다.*/

 

인간이 사고 체계는 기억을 바탕으로 한다.

 

//실행 파일(exe)의 경우 하드 디스크에 있는 파일을 메모리로 불러와 실행 시킨 후 작업이 //끝나면 다시 삭제하는 것이다.

 

자료형의 변환

 

CPUBUS의 처리 속도에 따라 일회 작업량이 결정된다.

1. 정보 처리양이 작은 공간에서 큰 공간으로 갈 경우 -> 상향 또는 승격

ex) char32bit CPUBUS에서 처리

 

2. 정보 처리양이 큰 공간에서 작은 경우로 갈 경우 -> 하향

ex) 32bit CPUBUS에서 char 변수 처리 후 다시 메모리로 옮길 경우

#2 & 3. printf/scanf 함수의기본

 

학습 목표 - 이전에 배웠던 printfscanf를 책을 이론과 실습을 보면서 이해하고 보충한다.

 

//최적화를 위해서는 int변수가 가장 좋다.

 

자동 형 변환은 compiler에서 일어난다.

 

강제로 일으키는(사용자가 명령어 입력) 형 변환: 명시적 형 변환

ex) divResult = (double)num1 / num2;

 

Compiler가 해주는 형 변화: 묵시적 형 변환

 



 

p/134 printf 함수

 

- 특수 문자를 출력할 때는 “\”를 앞에 넣어준다.

 

- 8진수나 16진수를 출력할 경우 “%#o" 또는 ”%#x"를 넣어서 출력해 주는 것이 표시방법을 알려줌으로 좋다.

 

- %e 표기법: 1.xx 형태에서 10y승 숫자가 있을 경우 -> 1.xxey

//e는 대문자/소문자로 표시할 수 있다.

 

- %g 표기법: 소수점 이하 04개 이하에서는 %f 방식으로 표시

소수점 이하 04개 이상에서는 %e 방식으로 표시

 

- 필드 폭의 지정과 정렬: 필드 폭을 설정할 때는 표시방법 입력 시 %initial 사이에 숫자를 넣어주면 된다.

정렬 방식은 아무것도 입력해 주지 않을 경우에는 오른쪽 정렬, - 입력 시 왼쪽 정렬이다.

 

p/144 scanf 함수

 

- scanf 함수를 사용 시 자동적으로 줄 바꿈이 된다.

 

- 실수를 입력할 시 e표기법을 사용해도 컴파일러가 해석할 수 있다.

 

 

 

한 줄짜리 코드는 중괄호 생략 가능하다. (우리는 한줄 짜리도 다 쓴다!)

 

// 반복문을 무한반복을 시키고 싶을 경우 종료 조건에 “1”을 넣어준다.

 

// 최적화된 프로그래밍을 하려면 특정 명령어를 입력했을 때 compiler가 뭔 짓을 하는지 알// 고 있어야 한다.

 

 

#4. 디버깅

 

학습목표 - Visual Basic에서 디버깅을 사용할 수 있다.

 

디버깅(Debugging)

 

중간에 프로그램을 멈추게 하는 것을 debugging이라고 한다.

 

// 프로그램은 줄 번호에 따라 순차적으로 시행된다.(제어문을 제외하면)

 

실행법

 



 

메뉴판에 debug -> start debugging 혹은 단축키 F5

 

특정 영역에서는 debuggingbreak point을 지정하여 주거나 단축키 F9

 

이 후에 F5로 다시 실행 시키면 지정된 break point는 노란 화살표로 바뀜과 동시에 새로운 dos창이 하나 떠 있게 된다.

 

shift + F5는 디버깅을 빠져나오는 키이다.

 

//6번이 break point이면 5번까지 수행이 된다.

 

해당 줄까지 실행시키고 싶으면 메뉴 - debug에서 step over 혹은 F10을 눌러주면 된다.

 

// break point에서 어디로 이동하느냐에 따라서 step into(해당줄)/step over(다음줄)/step out(이전줄) 기능이 있다.



 

Watch1 tap을 활용하여 변수의 값을 확인할 수 있다.

 

//debugF10 key를 활용하여 프로그램이 어떻게 작동하는지 알아볼 수 있다.

반응형
Posted by newind2000