티스토리 뷰

코딩 초급

[C/C++] 기초 2

태장고 21302 2021. 10. 10. 16:54

목차

1. 논리연산

2. 조건문

3. 반복문

4. 배열

5. 함수

 

논리 연산

수학에서의 논리 연산과 컴퓨터에서의 논리 연산이 다르고, 참 거짓을 판별할 때 중요한 연산 방법이니

여려워 보여도 잘 읽어보세요.

수학에서의 Boolean Algebra 연산자는 크게 3가지로 나뉜다.

1. x ∧ y : 둘 다 참일 경우를 의미한다.

2. x V y : 둘 중 하나라도 참인 경우를 의미한다.

3. ㄱx : 참을 거짓으로 거짓을 참으로 바꾸는 연산자이다.

자 수학에서는 이것 외에도 여러가지 연산자가 있지만, 컴퓨터와 연관지어 설명할 때 꼭 필요한 3가지만 알려주도록 하겠다.

예시를 들어보자면, ( 0은 거짓, 1은 참 을 나타낸다. )

2.의 경우에 0 1이면 둘 중 하나가 참이므로 1을 출력한다. 또 1 1이어도 " 둘 중 하나라도 참 " 이라는 조건에 성립하기 때문에 1을 출력한다.

3.의 경우에 0이면 1을 출력하고, 1이면 0을 출력한다.

이렇게 Boolean Algebra 에 대하여 이해가 됬다면,

이제 이것이 C언어에서는 어떻게 쓰이는지 알아보도록 하자.

위 3개가 C언어에도 똑같이 있다. ( 표현법이 다를 뿐!! )

1. x && y : x와 y가 모두 참인 경우 1을 출력

2. x | | y : x와 y 중 하나라도 참일 경우 1을 출력

3. !x : x가 1의 경우 0을 출력하고, 0일 경우에 1을 출력

C언어에서는 위와 같이 사용하고 있다.

그렇다면 이것은 왜 필요한 것일까?? 값을 판별할 때 필요하다. 컴퓨터는 " 2진수 ( 0과 1 ) "로 모든 것을 표현하기 때문에 참일 경우와 거짓일 경우를 간단하게 1과 0으로 표현할 수 있는 Bool타입을 사용하는 것이다.

 

이러한 bool 타입은 참거짓을 판별할 때 중요하게 사용되기도 하지만 반복문, 조건문 등의 참 거짓을 가르는 조건을 다루는 부분에서도 원리 측면에서 사용이 된다.

 

조건문

if~ 조건은 다음과 같이 사용할 수 있다. 조건문의 시작과 끝은 다음과 같이 중괄호의 시작과 끝으로 표현해 준다.

if('조건')
{
  실행1
  실행2
}
실행3

위 코드는 조건이 성립하면 실행1과 실행2를 실행시키고, 아니면 실행시키지 않는 코드이다. 실행3은 조건 성립 유무와 상관 없이 무조건 실행된다. 조건문을 사용하는 이유는 연산의 필요 유무를 결정하기 위해서 이다. 어떤 조건의 경우에만 연산을 해야할 때 사용한다. 또는 변수의 값을 판별할 때 사용하기도 한다.

 

if~ else~ 조건문은 다음과 같이 사용할 수 있다.

if('조건')
{
  실행1
}
else
{
  실행2
}
실행3

if~ else~ 조건문은 조건이 맞으면 실행1을 실행하고, 조건에 위배되면 실행2를 실행한다. 실행3은 어떤 조건문에도 영향을 받지 않으므로 무조건 실행된다.

 

+조건문의 실행 여부는 참(1)과 거짓(0)으로 판별된다. 추가적으로 말해주자면 1이상의 모든 수는 모두 참으로 판별한다.

 

반복문

반복문을 사용하는 이유는? 귀찮아서 이다. 우리가 반복된 연산을 하려고 할 때 덧셈을 10000번 한다던가.. 고등학교 과정이긴 하지만 시그마(∑)를 연산한다던가 할 때에 일일이 하기는 귀찮으니 사용하는 것이 반복문이다. 반복문은 다음과 같이 사용할 수 있다.

사용 코드는 다음과 같다.

for(int i=0; i<100; i++) // 0부터 99까지 반복하는 코드이다.

위 코드에서 보이 듯이 반복문의 처음에는 시작점, 두번째에는 끝내기 위한 조건, 마지막은 어떻게 진행시켜 나갈 것인지에 대한 정보가 나와있다. 위 코드의 경우에는 0부터 시작해서 100미만인 동안 반복문을 돌리는 코드라고 해석할 수 있다.

 

for외에도 다양한 반복문이 존재한다.

그 중 하나인 while에 대해서 알아보자. while은 조건이 성립할 때까지 반복하는 반복문이다. for과 같이 시작점을 정해주는 것이 아닌 조건문처럼 조건이 성립하지 않는다면 계속해서 반복한다.

while('조건') //while문의 형태이다.

 

goto라는 반복문도 존재하나 정보올림피아드(KOI)에 한번도 안나왔다는 점과 사람들이 잘 안쓴다는 점을 보았을 때, 굳이? 알 필요는 없을 것 같다.

 

그래도! 강의하는 입장에서 조금만 알려주자면 goto를 돌리면서 안에 조건문을 달아 break 해주면 된다.

reload:
  실행1
if('조건') break; // 조건이 성립하면 반복문을 종료함
goto reload;

 소소한 팁?을 주자면 이거 쓸 바에 그냥 while 쓰는게 편하다. 굳이 오기 부리지 말고 그냥 while이랑 for을 사용하자!

 

배열을 언제 멈출지 또는 조건에 해당되지 않게 반복문을 돌린다면 세그먼트 에러가 뜰 수 있다. segment error 라는 문구가 뜨면 반복문이 무한으로 돌고 있을 가능성이 크니, 에러를 찾을 때 반복문 부터 찾아보자!

 

배열

배열은 어떤 것인가! 변수의 집합체라고 생각하면 쉽다. 변수 1개를 선언하는 건 쉽지만 변수 1000개를 선언하는 건 귀찮기 때문에 배열을 사용한다고 생각하면 된다. 배열은 다음과 같이 사용할 수 있다.

int d[1001]; //배열을 선언함
for(int i=0; i<1000; i++)
  scanf("%d", d[i]); // i번째 인덱스에 수를 저장한다.
  
 d[n] //n번째 값에 접근한다.

값 1000개를 받아서 n번째 칸에 접근하는 코드이다. 위의 경우 0번째 칸부터 채워나가기 시작해서 999번째 칸까지 수를 받는다.

위 코드에서는 정수형 배열을 선언하였는데, 타입을 변화시키면 실수, 문자 등의 수도 얼마든지 받을 수 있다.

 

배열에서도 에러가 나는 경우가 몇가지 있는데, 존재하지 않는 인덱스에 접근을 했다던가.... 배열 범위가 너무 크면 에러가 날 수 있다. 이것은 직접  해 본 결과 100억을 넘어가게 인덱스를 잡으면 에러가 터진다.

 

함수

함수를 사용하는 이유는 기능을 만들어 놓고 가져다 쓰기 위함이다. 함수는 다음과 같은 형태로 만들 수 있는데, 많이 사용하는 순으로 만들어 보았다.

 

void : 아무것도 반환하지 않는 타입의 함수이다. void 타입 함수는 호출할 시, 함수 내에서 끝을 보아야 한다.

int : 정수형 타입의 함수이다. 함수 내에서 값을 연산하고 정수형으로 결과를 반환할 수 있다.

long long int : 주로 큰 수를 다룰 때 사용하는 함수이다. 이 함수를 사용하면 연산이 큰 수를 반환할 수 있다.

 

함수의 형태는 다음과 같다.

void f(int k) //함수의 이름 앞에는 반환할 타입이, 함수의 이름 뒤에는 입력받을 값의 타입을 쓴다.

 

이외에 char, float, 등의 여러 형태가 존재하지만 많이 사용하지는 않으니? 스킵!

 

함수는 다음과 같이 사용할 수 있다.

void f()
{
  printf("Hello");
}

int main()
{
  f(); // f라는 이름의 함수로 이동
}

 

TMI : 글쓴이는 함수를 많이 애용하는데, 그 이유는 만들어 놓으면 가져다 쓰는 느낌이 좋아서 라고 한다 ^^

 

기초 2편은 여기까지~~!!

'코딩 초급' 카테고리의 다른 글

문자열 문제에 유용한 도구  (0) 2021.11.28
[C/C++] 기초 1  (0) 2021.10.10
[Python] 기초 2  (0) 2021.10.10
[Python] 기초1  (0) 2021.10.10
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함