c언어

c언어/워딩(미정리)

별찍기

예제로 도형출력 지난시간 배운 예제를 가지고, 직각삼각형을 출력할 수 있을까? 반복문을 배우면 거의 반드시 들어가는 문제로, 많은 분들이 배우실 때 어려움을 겪는 문제다. 여기서 논리를 파악하자면, 가로를 내부 반복문이고, x축이라고 본다면, 세로는 외부 반복문이고, y축이 된다. 이때 x와 y의 수의 차이에 따라서 ‘개행’이 되냐 아니냐에 차이인데, 이정도가 도형을 출력하는 논리다. 이 도형 출력의 코드는 엄청 쉽다. 단지, 내부 반복문에서 for(x = 0; x < 5; x++)를 for(x = 0; x

c언어/워딩(미정리)

중첩되는 반복문

반복문의 중첩 ‘*‘를 5번 반복해서 출력하는 반복문이 있다고 한다. 여기서 이 반복문을 4번 또 반복하는 경우도 있는데, 사실 이러는 경우는 5 × 4 = 20으로 그냥 *을 20번 반복하면 될 것 같지만, 이와 다른 경우에는 반복문을 2개 끼워 넣는 것이 효과적일 수가 있다. 여기서 반복문이 반복문에 들어있는 경우를 ’반복문의 중첩’ 이라고 한다. 이 반복문의 중첩을 슈도코드를 예로 들어서 설명할 수 있다. (여기서 슈도코드 ‘pseudo code’ 란, 의사코드라고도 하는데, 풀어서 말하면 코드를 흉내 내서 논리를 표현한 자유로운 표현과 언어로 쓴 코드다.) 만약에 백화점에서 쇼핑을 하는 여자가 하는 일을 코드로 작성한다면, while(둘러볼 매장이 있는가?)로 조건을 세울 것이다. 그리고 그 반복..

c언어/워딩(미정리)

do while문, for문

do while문 while문과 비슷한 do while문은 둘이 비교해서 보면 알기 쉽다. while문은 옆에 조건식이 들어가며, while문의 스코프{ }안의 구문은 while문의 조건식에 맞게 될 경우 구문이 실행된다. 그리고 절대로 while문에는 끝에 세미클론 ;을 붙이면 안 된다고 했다. 그러나 do while문은 do가 맨 위로 가고, 구문 다음에 while(조건식); 이 붙게 된다. 이 do while문이 while문과 무슨 차이인가 하면, do while문은 처음에 무조건 1번은 실행되고,(do) 그다음은 while문처럼 조건을 봐서 맞을 경우 그만큼 반복하는 것이다. 사용빈도는 그렇게 많지는 않은데, 예를 들어, while문 위에 나오는 실행문이 while문에 들어가는 실행문과 일치하는 ..

c언어/워딩(미정리)

반복문, while문

반복문 c언어에도 단계를 나눈다면, part 1은 반복문 까지가 된다. 여기까지는 p/g을 하는데 모든 언어에서 통합되는 기본 논리를 배운 것과 다름없다. 그런 뜻에서 part1을 배운 것은 프로그램을 작성하는게 큰 의미가 있다. 여기서 이 반복문은 지난시간 배운 분기가 나뉘는 제어문과 다르니 유의하자. if(조건식){ 실행문; 실행문; }으로 쓰이는 것을 배웠었다. 이 if과 반복문은 형식에 비슷한 점이 많다. 반복문은 비유하자면 인형 눈깔을 붙이는 것으로 들 수 있다 인형 눈깔 100번을 똑같이 붙일 때, 같은 작업을 100번 반복하는 건데, 이걸 줄여서 생략할 수 있는 것이 반복문이다. 반복문은 기본구조는 쉽지만, 복잡한 논리로 정교하게 짜여 졌을 때 골치를 앓을 어려운 프로그램이 될 수도 있다. ..

c언어/워딩(미정리)

switch/case 문, goto 문

if else와 다중 if문 if문에서 else가 붙으면 거짓일 경우에도 추가로 실행문이 붙게 된다. if(조건식) a실행문; 일 경우 참이면 a실행문을 추가로 실행하는데, if(조건식) a실행문; else b실행문; 일 경우에는 참이면 a실행문을 추가로 실행하고, 거짓이면 b실행문을 추가로 실행한다. else는 ‘아니면‘이라고 해석하면 좋다. (조건연산자와 완벽하게 비슷하다 조건연산자와 비교해서 보면 쉽다) else if라는 경우도 존재한다. if가 ‘만약‘이고, else가 ‘아니면‘이면, else if는 위의 if가 ‘아니면 만약‘이 된다. 여기서도 한 else if조건식이 실행될 경우 나머지는 실행이 되지 않으며, 앞에 있는 if가 실행될 경우에, 나머지는 실행되지 않는다. 형식으로 보자면 if(조..

c언어

조건문이란, if문

앞으로 배울 내용은 제어문의 세트입니다. 그중 처음엔 분기문인 if문을 다루고, 두번째는 반복문인 while, for문을 다룹니다. 이렇게 제어문으로 넘어가는 단계부터, 지난 시간에 언급했듯이 논리구조가 들어가기에 기존의 단순연산의 코드에서 제대로 된 프로그램의 틀이 나오게 됩니다. 처음에 배울 분기문은 조건에 따라 분기가 갈리기 때문에, 전에 배운 3항 연산자, 조건연산자를 떠올리며 배우면 좋을 듯합니다. 분기문이란 무엇인가요? 만약 이렇다면 이것을 하고, 아니면 다른 것을 하거나 아무것도 없는 등의 구조를 한번에 담아낸 것입니다. 이 분기문은 if, else if, else, goto, switch case문으로 나뉘는데요. 우선 기초라 할 수 있는 if문을 알아봅시다. if문의 형식은 if()로 괄..

c언어

다양한 연산자

c언어의 주요한 연산자들을 지난시간 학습했습니다. 그러나 c언어에서는 그보다 훨씬 많은 연산자가 있다는 것 아시나요? 이번시간은 많이 쓰이진 않더라도 알아두고 넘어가야할 c언어의 또다른 연산자들을 알아보겠습니다. 복합 대입 연산자 사실 대입 연산자에는 두 가지 종류가 있습니다. 단순대입 연산자와 복합 대입연산자 입니다. 단순대입 연산자는 지난시간 다룬 ‘=’이고, 복합대입 연산자는 단순대입 연산자에 산술연산자, 비트연산자가 결합된 것입니다. 산술연산자가 합쳐진 복합대입 연산자로는 +=, -=, *=, /=가 있고, 비트연산자가 합쳐진 복합대입 연산자로는 &=, |=, =, ^=, ~=가 있습니다. 여기서 복합대입 연산자는 어떤 역할일까요? a += 3;은 a = a+3;과 완벽하게 똑같습다. 그러니까 +..

c언어

산술연산자 응용

이번 산학 선생님과의 시간에서는 지금까지 배운 c언어의 연산자를 이용해서 코드를 읽고 출력결과를 맞추는 문제를 풀었습니다. 얼마나 지금까지의 학습내용을 이해했는지 테스트 해보는 시간이였는데요. 아래 문제를 보고 한번 결과를 다시한번 맞춰봅시다. 문제 1> int n = 2; int m = 2; printf("%d %d\n", n++, m--); printf("%d %d\n", n, m); 단항 증감 연산자에서 전위식과 후위식의 차이를 묻는 문제였네요. 답은 "2 2 \n 3 1" 이였습니다. 문제2> int a= 3, b; b= ++a; printf("%d\n", b); b= a++; printf("%d\n", b); 후위식은 단순대입연산자보다 우선순위가 늦다는 걸 알면 끝입니다. 답은 "4 \n 4" ..

c언어

C언어 형식문자, 심화

형식문자는 첫 시간에 이스케이프문자와 같이 얼추 가볍게 배웠었는데요, 그러나 표에서 나왔던 것들은 새발의 피입니다. 이번시간은 그 형식문자를 자세하고 깊게 알아보겠습니다. 이전에 남겨둔 과제1번도 같이 풀구요. 형식문자는 '%서식문자'로 간단하게 끝나는게 사실 다가 아닙니다. 형식문자를 제대로 쓰자면 아래와 같은데요. %[플래그(flag)][폭(width)][.정밀도][크기(length)]서식문자(specifier) 다시말해서, 형식문자의 세부설정으로 플래그(=정렬이나 맨앞 공백, 부호설정), 폭(=데이터 자릿수 개수), 정밀도(=소수점뒤 자릿수 개수), 크기(=데이터 범위(세부 자료형) )를 설정해줄 수 있는 것입니다. //형식문자 세세한 설정 하나하나 자세히 알아보자면, 플래그는 왼쪽, 오른쪽 정렬이..

c언어

비트, 논리, 비교연산 예제

이제 비트, 논리, 비교연산을 배웠으니, 간단하게 순차 구조(3) 학습지의 과제를 풀어봅시다! 힌트가 있다면, 쉬프트는 비트(2진수로 된 수)에서 한비트씩 왼쪽, 오른쪽으로 이동하니까 2의 거듭제곱만큼 움직이겠네요~ 과제2> 입력받은 정수 값의 부호를 바꿔서 출력하는 프로그램을 작성해보자. #include void main(){ int n; scanf("%d", &n); printf("%d", ~n+1); // -n == ~n+1 (1의보수(~n) + 1 == 2의 보수 == 음수) } 과제3> 다음 연산의 결과를 출력하는 프로그램을 작성해보자. (단, *연산자와 /연산자를 사용하지 않고 곱셉, 나눗셈을 구현해야한다) 3*8/4의 결과는? #include void main(){ int n; n=32; /..

도솔비
'c언어' 카테고리의 글 목록 (4 Page)