본문 바로가기

프로그래밍

C언어 - 배열과 함수 이전 글에서 작성한 최종 코드이다. #include int main() { int i, b=0, s=0; char a[4] = { '1', '2', '3', '4' }; for (i = 1; i 더보기
C언어 - 타입캐스팅 typecasting 타입 캐스팅이란 쉽게 말해서 형 변환을 하는 것이다. 6일차에서 다루었던 자료형을 살펴보자. 예를 들어서 형 확장은 정수형이 실수형이 되는 것이기 때문에 표현 범위가 넓어진다. 하지만 예를들어 형 축소는 실수형이 정수형이 되는 과정에서는 값이 손실되어 형이 축소된다. (ex. 4.3333333333 ------> 4) 그렇다면 왜 형 변환을 하는 것일까? 가장 쉬운 예시로는 정수형과 실수형을 연산할 때이다. #include int main() { int a = 16; int b = 7; float c; c = a / b; printf("%f", c); } 정수형끼리 나누어서 실수형으로 출력해본다면 어떤 값이 나올까? 2가 아닌 소수점이 생긴 2.0000... 이 나온 것을 확인할 수 있다. 하지만 2.0.. 더보기
C언어 - 사용자 정의 함수 (최종) 아래의 코드를 살펴보고 문제점을 찾아보자. #include void add(int a, int b) { int c; c = a + b; printf("%d", c); } int main() { int a; int b; a = 2; b = 3; add(a, b); } 코드를 실행했을 때 컴파일 오류가 발생했을 것이다. 코드를 고치면서 차근차근 오류를 수정해보자. 우선 출력함수를 main() 에서 시도해보자. #include void add(int a, int b) { int c; c = a + b; } int main() { int a; int b; a = 2; b = 3; add(a, b); print("%d", c); } 더하기 결과 출력을 함수 밖에서 하여도 컴파일 오류가 난다. main에 c가 선언.. 더보기
C언어 - 프로그래밍을 위한 간단한 알고리즘 프로그래밍이란? 현실세계를 컴퓨터에서 흉내 내는 것을 의미한다. 이해를 돕기 위해 하나의 예를 준비했다. 상자가 9개 있는 창고A와 상자가 하나도 없는 창고B가 있으며 승혁이가 창고A에 있는 9개의 상자를 창고B에 옮기려고 한다. 1. 일 할 준비를 한다. 2. 상자 3개를 옮긴다. 3. 다시 돌아가야 할지 말지 '판단'해 본다. 아직 덜 옮겼기에 다시 창고 A로 간다. 4. 상자 3개를 옮긴다. 5. 다시 돌아가야 할지 말지 '판단'해 본다. 아직 덜 옮겼기에 다시 창고 A로 간다. 6. 상자 3개를 옮긴다. 7. 돌아가야 할지 말지 '판단'해 본다. 다 옮겼으니 그만한다. 승혁이는 모든 상자를 다 옮길 때 까지 3개씩 옮기는 작업을 '반복'했고 상자를 다 옮겼는지 '판단'을 했다. 다 했는지에 대한 .. 더보기
C언어 - break, continue break는 일단 멈췄다가 가장 가까운 반복문이나 분기문을 빠져나간다. 참고로 break는 반복문인 for, while, do-while과 분기문인 switch에게만 적용된다. continue는 일단 멈췄다가 가장 가까운 반복문의 조건 또는 갱신식(for문일 경우)으로 이동한다. 그렇기에 continue 뒤에 있는 부분은 실행되지 않는다. 아래 코드의 결과에 대해서 생각해보자. !!!반드시 먼저 생각해본다음 실행해보자!!! #include int main() { int i; for (i = 0; i < 4; i = i + 1) { printf("A"); if (i == 2) continue; printf("B"); } printf("C"); return 0; } 우선 0번째 A와 B 출력된다 다음 1번째.. 더보기
C언어 #include <stdio.h> 우리가 처음 배울 내용의 코드이다. #define _CRT_SECURE_NO_WARNINGS//scanf함수의 오류를 방지하기위해 사용. (이후 강의에 설명) #include int main(void) {// () 안에 있는 void는 생략 가능. 이후에는 생략하여 작성. int a, b, c; a = 2; b = 3; c = a + b; printf("%d", c); } 왜 처음에 #include 를 작성하는 것일까? stdio.h는 STanDard Input Output.헤더파일 을 의미하며 헤더파일이란 C와 C++에서의 소스 코드의 파일이며 여러 함수들이 선언되어 있는 파일이다. 즉, 위의 코드를 필수로 작성해야 오류가 발생하지 않는다! int main() 은 왜 작성하는 것일까? 우선 { } 의 .. 더보기
C언어 - 이진수 우리가 흔히 사용하는 숫자 1, 2, 3, ···, 10 등의 숫자는 십진수라고 일컫는다. 하지만 컴퓨터는 이진수 기반의 체계로 0과 1을 사용하여 컴퓨터 내에서 정보를 전달한다. 컴퓨터가 이진수를 사용하는 이유는 컴퓨터가 의미를 구분할수 있는 최소 단위가 On과 Off로 전기적 신호로 의미를 전달 할 수 있는 가장 간단한 방법이기 때문입니다. 그럼 0과 1이 의미하는 것은 무엇인가?! 위의 그림 그대로 0은 OFF 상태, 1은 ON 상태이다. 우리가 이진수를 쉽게 이해하기 위해선 자리수 중요하다고 볼 수 있다. 아래에 십진수 7359 가 있다. ( 자리수에 대한 예시일 뿐 숫자와 연관X ) ( 10^2 처럼 ^2는 제곱(2승), ^3는 세제곱(3승) 이다.) 7359는 7000 + 300 + 50 + .. 더보기
C언어 - 할당 연산자 우리가 보편적으로 사용하는 수학식을 프로그래밍의 관점으로 본다면 위와 같이 볼 수 있다. A, B, C는 값을 입력받는 '변수' 이며 '+'와 같이 ' - , * , % ' 는 '연산자'라 칭한다. 여기서 ' = '은 할당 연산자이며 등호가 아니다. 평소 수학식에서 사용하는 ' = '은 등호로써 "같다" 라는 의미로 쓰이지만 프로그래밍에서는 "값을 주다", "할당하다"의 의미로 사용된다. 변수를 메모리에 기입해보자! A = 12 "변수 A에 12를 할당"을 표현한다면 위와 같이 메모리 그림을 그릴 수 있다. 0, ,1 2 번지는 이미 할당되어 있고 3번지가 아직 할당되어 있지 않다고 가정하고 그린 것이다. 3번지 안에 이진수 0000 1100의 값은 12이다. 2진수에 대해서는 다음 게시물을 통해 더 정.. 더보기