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. 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. 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. 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
Busan IT/제어언어2015. 2. 17. 17:40

제어언어 - 연산과 변수의 최적화

 

#1. 쉬프트 연산과 최적과

 

학습목표 - 쉬프트 연산의 효과를 이해하고 사용할 수 있다.

 

char cNum = -1;

int iNum;

iNum = cNum;

 

char변수의 저장 공간이 적더라도 int변수로 옮기는 과정에서 음수를 입력해야 하기 때문에 모든 레지스터의 공간을 FF로 채워서 음수를 만들어야 한다.

 

shift연산 >>에서도 음수일 때 빈 공간을 0이 아닌 1로 채우는 이유도 이와 같다.

 

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

//float을 써 버리면 cpu의 속도는 현저히 줄어든다.

//CPU에도 심장처럼 지속적으로 운동을 하는 부분이 있다. 이것을 oscillator라고 한다.

 

CPU에서 연산 속도는 + > 쉬프트 연산 > 곱하기 순이다.

#2. 자료형의 선언과 사용

학습목표 - 자료형의 종류와 표현 양식을 안다.

 

C언어가 제공하는 기본 자료형의 이해

 

변수의 크기는 compiler에 따라 다르다 때문에 sizeof로 변수의 크기를 확인해 볼 수 있다.

 

//sizeof( )

 



 

char(1) <= short(2) <= long(4) <=long long(8)

 

float(4) <= double(8) <= long double(8)

 

 

p/113 예제 - 원의 넓이)

 



 

double을 사용할 때 표현 방식을 %lf(엘에프)를 사용해야 한다.

#3. 변수와 최적화

 

학습목표 - 변수를 최적화 시키는 변수를 이해한다.

 

ASCII코드는 인간이 인식할 수 있는 문자를 지정하고 이를 그림화하여 화면에 표시해 준다.

 

문자를 사용할 때 작음 따옴표를 입력해주면 ASCII코드로 인식한다.

 

p/119

 

unsigned int형으로 선언하면 cpu에 최적화되지만 문자를 입력하는 경우는 연산을 하지 않기 때문에 굳이 int가 아닌 char을 써 주는 것이 낫다.

 

//문자를 표현해 주기는 하지만 모든 정보는 컴퓨터에서 정수 형태로 저장된다.

 

상수란 변경이 불가능한 값을 뜻한다.

 

p/122 실습 - literal size)

 




끝에 "f“를 삽입해 주어 형을 선언해 주는 것을 접미사라고 한다.

 

 

/* xy좌표 축을 입력하여 사각형의 크기를 구하는 프로그램

 



 

 

 

*/

 

 

#4. 다양한 변수

 

학습목표 - 변수의 형태와 특성을 이해한다.

 

 

 

U - unsigned

 

L - long

 

F - float

 

실수에서는 L을 쓰면 long double이 된다.

 

Symbolic상수는 변수처럼 쓰지만 수정이 안되는 상수이다.

 

선언: 접두사 cont

 

//const는 대입연산자가 있을 경우 왼쪽에 배치가 안된다.

 

 




 

위에 값들을 분석해 보자면

 

100literal, iNum1variable value, iNum2constant value이다.

 

// warning C4090을 띄운 이유는 포인터를 사용하여 const를 변경할까봐 경고 메시지를 띄우는 것이다.

 

const를 사용하는 변수선언 시 관례적으로 변수 값을 전부 대문자로 사용하는데 이것은 선언한 const변수의 값을 수정하지 말라는 표시이다.

 

 

 

 

 

 

 

 

 

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

C언어 복습 및 비트 연산자

 

#1. 관계연산자

 

학습목표 - 관계연산자에 결과 값을 이해할 수 있다.

 

관계연산자

 

연산자의 결과는 참(1) 아니면 거짓(0)이다.

 

ex) 1<3 -> 1

 

대입 연산자의 결과는 그 결과 자체이다.

 

ex) A=3 -> A 이고 결론적으로는 3을 뜻한다.

 

모든 연산은 결과를 필요로 한다.

 

-> 논리 연산자는 값이 나와야 하고 비교 연산자는 참 거짓이 나오야 한다.

 

p/64, 66 예제 실습

 



#2. 콤마 연산자/예약어/진법

 

학습목표 - 콤마 연산자/예약어/진법에 대해서 이해하고 활용할 수 있다.

 

p/67 콤마 연산자(,)

 

p/67 예제)

 



 

한꺼번에 변수를 사용할 때 콤마(,)를 사용할 수 있다.

//위와 같이 변수를 선언할 수 있지만 가독성이 좋지 않음으로 따로 변수를 선언하는 것이 //.

 

콤마(,)는 여러 줄에 있는 것들을 합하여 줄 때 사용한다.

 

[ p/69, 03-5 연산자와 우선순위와 결합방향 ]

 

연산 시 한 줄에 여러 가지 연산기호를 쓰지 마라. 가독성이 떨어진다. 굳이 써야 한다면 괄호를 써서 먼저 연산해야 하는 값을 표시해 준다.

// 외울 필요 없이 헷갈리면 둥근 괄호로 묶어줘라.

// 지금까지 배우지 않은 연산자가 있으나 후에 언급할 것이다.

 

같은 서열에 있는 연산자는 결합방향에 따라서 연산을 해준다.

 

입력 연산자에서는 다른 것은 넣지 않고 표현 형식과 저장위치만 입력한다.

 

p/75 예약어

 

해당 페이지에 나온 명령어들은 변수명으로 쓸 수 없다.

// 'main‘ 예약어가 아니다. entry point이다.

 

 

진법은 한자리에서 가장 큰 수가 무엇인가를 따지는 것이다.

 

ex) 16진수 F(진법 -1 까지의 수가 표현)

 

//이진수는 C compiler에서 지원하지 않는다.

#3. 실수의 표현

 

학습목표 - 실수의 표현 방법을 이해한다.

 

8진수를 입력하려면 0으로 시작하여 숫자를 넣어주면 된다.

ex) int num3 = 012

 

16진수를 입력하려면 0x로 시작하여 숫자를 넣어주면 된다.

ex) int num2 = 0xA

 

정수와 실수의 표현방식

 

가장 왼쪽에 부호를 적어서 수를 표현하는 방식을 magnitude방식이라고 한다.

 

실습 - float의 저장형태 이해)

 

float의 저장될 수(0.125)를 직접 메모리에 넣어보자.

 



 

 

#4. &, &&, shift 연산자(비트 연산자)

 

학습목표 - 각 비트 연산의 값의 도출과정을 이해할 수 있다.

 

p/91, 예제

 




double로 할 경우 오차가 없어지는 것이 아니라 보이지 않는 자리에 오차가 생길 뿐이다.

 

1&2 -> and 연산자

 

&iNum -> 주소 연산자

 

3&iNum -> and 연산자

 

// 연산 순서가 헷갈릴 경우 ()를 써서 우선순위를 지정해주자.

&&는 논리연산자로써 좌 우항을 덩어리(참 혹은 거짓)로 계산한다.

 

&의 경우 좌 우측에 있는 숫자를 이진수로 바꾼 후 자리로 비교하여 참과 거짓을 판단한다.

 

실습 - &연산자와 &&연산자의 구분)

 



1 1 1 1

& 1 0 0 1

----------

1 0 0 1

 

그러므로 결과 값은 9가 나온다.

 

//비트 연산자는 후에 칩에 코딩할 때 많이 쓰임으로 잘 알아둘 필요가 있다.

 

“^”XOR 연산을 한다. 다르면 1 같으면 0이 나오는 연산자이다.

 

ex) 10 ^ 7

 

1 0 1 0

^ 0 1 1 1

---------

1 1 0 1

 

"~"은 틸드 연산자라 부르고 이진수가 뒤집어져 버리는 결과가 나온다.

 

ex) ~1 = -2

Shift 연산(<<, >>)

 

>>는 오른쪽으로 다 한 칸씩 옮겨지고 빈칸은 양수일 때 0으로 채워진다.

 

ex) iNum >> 1 iNum을 오른쪽으로 1씩 한 칸씩 민다는 뜻이다.

 

! signed - 부호에서는 빈자리가 1로 채워진다.

 

<<는 왼쪽으로 다 한 칸씩 옮겨지고 빈칸은 무조건 0으로 채워진다.

 

 

 

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

C프로그래밍 책과 함께 기초 복습

 

#1. C프로그래밍 목차 설명과 C언어 개론

 

나누어진 책의 목차를 보며 현재까지 배운 내용과 배우지 않은 내용의 구분과 주의해서 봐야 할 챕터들에 대해 언급.

 

책으로 다시 봐야 할 부분.

 

Chap. 6 printf 함수와 scnaf 함수 -> 두 함수의 세부 내용을 참고 할 필요가 있다.

Chap. 7 - 2. do~while문의 의한 문장의 반복 -> 수업시간에 다루지 않은 내용이다.

 

복잡한 부분이라 따로 공부한 필요한 부분.

 

Chap. 14 - 포인터와 함수에 대한 이해 -> 복잡한 부분

Chap. 17 - 포인터의 포인터 -> 2개 이상이 붙는 포인터

// Part 03. 포인터와 배열의 완성 은 따로 학습을 해둘 필요가 있다.

 

 

함수의 이름을 사용할 때 기존의 명령어들은 쓸 수 없다. 이러한 명령어들을 예약어라고 하다. 예를 들면 int 변수를 선언할 때 이 변수의 이름을 int라고 지정할 수 없다.

 

프로그램 작동 시 시작되는 것을 진입점(Entry Point)라 한다. CJava에서 진입점은 main함수이다.

 

 

 

 

 

 

 

 

 

#2. 기본문에 대한 이해

 

Main함수의 정식 표현은 아래와 같다.

 

#include <stdio.h>

 

int main (void)

{

 

return 0;

}

 

‘#’은 전처리 언어를 선언하는 부호이다.

 

기본적으로 명령어들이 설정되어 있지 않고 특정 전처리 언어를 불러와야 하는 이유는 라이브러리(명령어들의 집합)의 크기가 크기에 간단한 프로그램을 작성할 때는 크기가 큰 라이브러리를 사용할 필요가 없기에 필요한 전처리 언어가 있을 경우 그때마다 불러서 사용하는 것이 효율적이다.

 

return은 함수를 종료시키는 명령어이다. 윈도우에서는 그 값이 무엇이 입력되든 버리지만 linux0이 아닌 값을 로그파일로 저장한다.

//return 프로그램을 실행하기 전의 상태로 돌아간다는 것을 의미한다.

#3. 주석과 변수

 

Ch02. 프로그램의 기본구성의 주석 부분을 읽고 연습문제를 풀어본다.

 

주석은 코드를 읽는 자나 만든 자에게 코드에 대한 해설을 해주고 대체 코드를 시험해 볼 수 있는 기회를 제공한다.

 

주석에는 “/* */” 형식과 “//” 형식이 있다.

/* */ 형식은 한줄 이상의 주석에서 사용 될 수 있고 해당 기호 안에 내용을 모두 주석 처리한다.

// 형식은 해당 행을 주석 처리한다.

 

/* */안에 //을 사용할 수 있지만 /* */안에 /* */을 중첩사용하게 되면 두 번째 사용된 */에 의해 이하의 주석 부분은 주석이 아닌 것으로 컴파일러가 인식하게 된다.

 

 

Ch03. 변수와 연산자

 

변수는 지정된 것을 1회 이상 사용하고자 할 때 사용자의 편의를 위해 저장해 놓고자 할 때 쓰인다.

 

 

 

 

#4. 연산자

 

Ch.03 변수와 연산자

 

읽어보기

- 복합 대입 연산자

- 증감 연산자

 

 

복합 대입 연산자는

//C++에서는 전치가 대입 증감 연산자를 쓸 경우 속도가 후치보다 빠르기 때문에 전치를 써//서 습관을 들이는 것이 좋다.

 

반응형

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

연산과 변수의 최적화  (0) 2015.02.17
C언어 복습 및 비트 연산자  (0) 2015.02.16
반복문을 활용한 배열과 포인터 연산  (0) 2015.02.12
제어문(if~else, for, while)  (0) 2015.02.11
제어문(if~else, for)  (0) 2015.02.10
Posted by newind2000
Busan IT/제어언어2015. 2. 12. 13:24

반복문을 활용한 배열과 포인터 연산

 

#1. 반복문의 활용

 

실습 - 반복문의 활용)

 

구구단 2단부터 9단까지 출력해 보자.

 



 

//프로그래밍시 막힌 부분이 있으면 그림을 그려 이해를 하자. 컴퓨터가 일을 어떻게 시행하//는지 처리 순서대로 하나씩 대입해 보면서 막힌 부분을 풀어봐야 한다.

#2. 반복문의 활용

 

실습 - 반복문의 활용)

 

10미만의 소수를 구하여라.

 



 

프로그래밍을 할 때 일을 세부적으로 나누어보고 작은 것부터 프로그램을 작성하여 올라간다.

 

 

배열

 

배열을 쓸 때 배열의 숫자가 많아질 경우 이것을 반복문을 사용하여 넣어줄 수 있다.



#3. 반복문을 활용한 배열과 포인터 연산

 

실습 - 반복문의 활용)

 

위의 iArray 0 - 9번까지의 주소를 출력한다.

 



 

 

 

 

 

 

//array에서 배열의 숫자를 넣어주지 않으면 주소가 출력되어 버린다. 배열의 값을 출력하고 싶으면 배열의 번호까지 넣어주어야 한다.

 



iArray+1를 출력해 보면 iArray+1가장 앞에 있는 배열의 주소이고 &iArray+1의 경우는 전체의 iArray가 끝나는 주소 값에서 +1을 한 것이다.

 

 

 

 

포인터 연산

 

포인터의 연산에서는 선언된 변수의 크기에 맞춰서 연산을 한다.

ex) int형일 때 주소 +1 = +4 -> +1 = +1*sizeof(int)



 

#4. 반복문을 활용한 배열과 포인터 연산

 

for문에서 두 개 이상의 초기화 값을 적을때는 ‘,’로 분류해 준다. 다만 중간값(참일 때 멈추는 값은) 하나만 쓸 수 있다.

 

실습 - 변수에 따른 포인터의 주소 변화를 이해한다)

 

배열을 활용하여 변수 5개를 설정해 주고 포인터와 반복문을 사용하여 배열의 값을 출력해 보자.

 



 

 

 

 

 

 

 

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

제어문(if~else, for, while)

 

#1. 반복문의 활용

 

지금까지 제어문에는 if1. if 2. if-else 3. if-else else if) 

for("초기값“;반복조건;반복이 끝나면 수행할 내용)

{

반복할 내용

}

 

실습 - 반복문의 활용)

printf문 하나만을 사용하여 5단 출력하기




 

// 무엇이 반복되고 무엇이 반복되지 않는지 파악한 후 코딩을 해야 한다.

 

#2&#3. 가정문과 반복문의 활용

 

실습 - if~else문과 for의 활용)

 

숫자를 양수, 정수로 입력 받고 소수인지 판단하는 프로그램




//코드를 짜기 전에 문제를 정확하게 파악하여야 한다.

//조금이라도 최적화시키기 위한 코드를 만들어야 한다.

//break; 중괄호 밖으로 빠져나오는 명령어이다.

 

For문에서 괄호를 루프라고 부른다.

 

무한루프에 빠졌을 때 Ctrl + C 혹은 Ctrl + Pause Break키를 누르면 빠져 나올 수 있다.

위에 명령어들은 실행을 멈추게 한다.

 

반복문에는 for 말고도 while이 있다.

 

While문의 문법은 for과 비교하여보면 비교적 간단하다.

 

while("종료조건“)

{

X

}

 

For문과 while문 비교

 

For(초기값; 종료조건; 참일 때 시행할 명령어)

{

X

}

초기값

while(종료조건)

{

X

참일 시 시행할 명령어

}

 

두 반복문의 실행 속도는 동일하다.

 

while문은 무한 반복을 위해서는 조건문에 0이 아닌 자료를 입력해야 한다.

 

#4. 반복문의 활용

 

실습- )

 

키보드를 누르면 ASCII코드가 나오는 프로그램을 작성해 보자




 

이중 for

 

문법

 

for()

{

for()

{

}

}

 

실습 - 이중 for문의 활용)

구구단 2단부터 9단까지를 출력해 보자. 




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

제어문(if~else, for)

 

#1. 논리연산자와 if~else구문의 확장

 

C언어의 코딩 후 실행을 시키면 명령어가 순차적으로 수행되는데 이 순차적인 진행을 제어하는 것이 제어문이다.

 

If문은 조건 값에 맞는 결과가 나오면 수행시키는 제어문이고 if~else는 참일 때와 거짓일 때를 구분하여 지정한 값을 출력시키는 제어문이다.

 

논리연산자

 

And연산자(&&)or연산자(||)가 있다.

 

And연산자는 둘 다 참이어야 참으로 표시하는 논리연산자이다.

 

A

B

AND

1

0

0

0

1

0

1

1

1

0

0

0

 

Or연산자는 둘 중 하나만 참이 되면 참으로 표시하는 논리연산자이다.

 

A

B

OR

1

0

1

0

1

1

1

1

1

0

0

0

 

if문에서 if() 해당 괄호 안에 들어가는 값은 참 혹은 거짓을 판별하는 문장이 들어감으로 0만 들어가지 않으면 참이 된다.

 

if~else~else

 

//항상 if는 제일 앞에 와야 한다.

 

문법

if() 

{

}

else if() 

{

}

else {

}

 

해당 if~else~else구문은 다단의 else if구문이 추가 가능하다.

 

 

 

 

 

 

#2. if~else문의 활용(윤년 계산기)

 

윤년 계산법

 

조건(AND)

1. 4로 나누어 지는 연도? Y

2. 100으로 나누어 지는 연도? N

3. 400으로 나누어 지는 연도? Y

 

프로그램을 작성하기 위해서는 정보와 상황을 파악하는 능력이 우선시 된다. 과제가 주어지면 해당 과제를 수행하는 조건을 파악하고 수행과제를 세부적으로 나눈다. 이 때 이것을 순차적으로 파악하는 능력이 중요시 된다.

 

실습 - if~else문의 사용)

윤년과 평년을 구분해 주는 프로그램을 만들어보자.



#3. if~else문의 활용(/홀수 구분기)

 

/홀수를 구별하는 프로그램을 만들어보자.




#4. 반복문

 

//제어문을 통해 암호 설정을 할 수 있다.

 

반복문 - 똑같은 일을 반복적으로 수행하는 것이다.

 

문법

 

for(“한번만 수행될 명령어”;“조건문”;“참일 때 수행할 것”) //조건은 세미콜론으로 구분하여 3개까지 쓸 수 있다.

//중간 부분이 참인 경우만 괄호 안에 문법이 실행된다.

{

 

}

 

조건문의 값을 만족하지 못하면 실행이 중단된다.

 

실습 - for(반복문)의 이해)

1부터 10까지의 수를 출력해본다.

 

 




 

 

반응형
Posted by newind2000