Programming
33개의 글
While 문 ? 저번에 포스팅했던 for 와 같은 용도로 사용됩니다. 반복을 위하여 사용되는 것이지요. 하지만 For 문과는 문법적인 차이점이 있습니다. For 문은 다음과 같은 문법을 가지고 있었습니다. for ( 초기식 ; 조건식 ; 증감식 ){ 실행문} 그러나 while문은 다음과 같은 문법을 가지고 있습니다. while(조건식){실행문} For 문은 다음과 같은 문법을 가지고 있었습니다. 초기식과, 증감식이 사라진 것을 볼 수 있지요 ? 초기식과 증감식은 사용자가 원하는 위치에 집어넣어서 사용할 수 있습니다. for문과는 다르게 조금 더 활용에 있어서 자유롭다고 해야할까요 ? 그러나 익숙하지 않다면 실수하는 것도 더 잦을 수 밖에 없습니다. 따라서 보통 일반적인 경우 , (횟수별로 반복)하는 경..
반복문 ?컴퓨터가 사람과 다른 점은, 같은 일을 계속해서 수백만번 시켜도 지루해하지 않는다는 점과 실수를 하지 않는다는 점입니다. 따라서 우리는 우리가 반복해서 하기 싫은 일들을 컴퓨터에게 반복하도록 시킬 수 있습니다. 그러기 위해서 사용되는 것이 반복문이며, for 반복문과 while (do/while) 반복문이 있습니다. 오늘은 for 반복문을 간단하게 배워봅시다. for 반복문for 반복문은 다음과 같은 문법으로 사용됩니다. for ( 초기식 ; 조건식 ; 증감식 ){ 실행문} 위에서 초기식은 for문을 처음 시작할 때 한번만 실행되는 코드입니다. 조건식 은 조건식 내부의 조건이 true라면 실행문을 실행해라 ! 라는 뜻입니다. 증감식 은 조건식의 변수를 증가 혹은 감소 시키며 조건식에 의해 반복문..
트리 구조란?여태 배운 Stack, Queue, Linked List는 전부 선형 구조였다. 1 : 1로 노드가 연결되어 있는 구조라는 뜻이다. 트리 구조는 처음으로 비선형 구조, 1 : 多 데이터구조 이다. 트리라는 이름에서 알 수 있듯이 나무를 생각하면 이해하기가 편하다.뿌리는 하나에, 수많은 가지가 나 있는 것을 상상해보자. 트리 구조는 우리가 일상 생활에서 매우 많이 접하고 있다. 계층 이 있는 부분이 바로 트리 구조라고 할 수 있다. 우리가 내컴퓨터 에 들어가면 볼 수 있는 디렉토리의 구조들도 트리 구조이다. 혹은 회사에서 직속 상관과 부하 직원의 관계 또한 트리이다. 트리가 트리이기 위해선 한가지 제한 조건이 있다. 부모 노드는 단 하나여야 한다는 것. 1 : 多 구조 이지 , 多 : 多 구조..
Switch?Switch는 조건 분기문으로, if와 else if의 연속을 보다 보기 쉽게, 편리하게 만들어놨다고 생각하시면 좋습니다. switch는 혼자 쓰이는게 아니라 항상 case와 default와 함께 쓰입니다. 보통 메뉴를 고르거나, 특정 선택지가 주어졌을 때에 그 대답에 따라 실행하는 코드가 다를 때에 주로 사용됩니다. 사용 문법은 다음과 같습니다. 3 + 7은 몇인가요 ? 1번 : 62번 : 83번 : 104번 : 12 라는 질문에 대한 대답을 switch 문으로 처리한다고 해봅시다.정답의 번호를 받는 변수를 ans 라고 가정해보겠습니다. 12345678910switch(ans){ case 3: printf("정답입니다!"); break; case 1: case 2: case 4: print..
c programmingif / else 조건문written by YangD 조건문 ?조건문은 가장 기초적인 문법이지만, 가장 많이 쓰이는 문법이기도 합니다.실제 생활에서도 많이 쓰입니다. 만약 내가 의사라면 사람들을 살릴 것이다. 위의 의사라면 이 조건문의 조건이 되는 것이고, 사람들을 살릴것이다 라는 내용이 조건문 안의 내용이 되는 것입니다. 이는 다음과 같이 표현할 수 있습니다. if(나 == 의사){사람들을 살린다;} 뭔가 이해가 오시나요? C에서는 = 하나면 왼쪽 변수에 오른쪽 값을 집어 넣는 것이고, =가 2개 즉 == 는 왼쪽과 오른쪽의 값을 비교해서 같으면 1, 틀리면 0을 반환합니다.if문 안의 조건이 1 이상 이면 다음 중괄호의 내용을 실행하고, 0이면 실행을 안하게 됩니다. if( 이..
Queue 코드 구현문제 .4명의 사람이 각자 물건들을 사들고 마트 계산 줄에 서있습니다.차례대로 4명이 카트에 물건을 올려두면, 점원이 계산을 해주게 됩니다.이 때 어떤 자료구조를 써야하며, 어떻게 구현해야 하나요? 목표 결과물: 소스 파일 다운로드: 구현시 주의사항 1. makeNode에서, 현재 node는 item이 포인터로 지정이 되어 있기 때문에 동적 할당을 통해 만들어주어야 합니다.2. enqueue할때에는, Q의 count가 0일 경우엔 집어넣는 노드를 front이면서 rear인 상태로 만들어주어야 합니다.3. dequeue가 특히 주의하여야 할 점이 많은데, 들어가 있는 node의 개수가 몇개인지에 따라서 조건문을 분기시켜야 합니다. 또한 rear에서 node를 빼내야 하므로, rear의 ..
c programming표준 입출력 라이브러리 - stdio.hwritten by YangD 이미지 출처 : http://www.pskills.org/c.jspstdio.h여태 화면에 출력을 하기 위해서, printf() 함수를 사용했었습니다.그럼 이것은 어디에 있는 걸까요 ? 바로 여태 계속 #include 로 불러들이던 stdio.h 헤더파일 내부에 선언되어 있습니다.stdio는 standard input output 의 약자로, 말 그대로 표준 입 출력에 관련된 모든 내용들이 들어가 있는 표준 라이브러리입니다. 아주 많은 함수와 관련 변수가 있지만, 그 중에서 가장 많이 쓰이는 몇가지 함수에 대해 알아보려고 합니다. printf / scanf 함수 123456789#include void main(..
c programmingPreCompilerwritten by YangD 이미지 출처 : http://www.pskills.org/c.jsp 전처리기 ?전(前)처리기 는 영어로 PreCompiler 라고도 합니다.영어를 보자면, 컴파일 전의 것 이라고 해석할 수 있겠네요. C 소스 코드가 실행 파일로 바뀌는 것, 즉 High-level 언어가 Low-level 언어로 바뀌는 것을 컴파일이라고 합니다. 전처리기는 언어마다 방식이 다를 수 있으며,C에서는 # 표시가 들어가는 것이 전처리기 입니다. 컴파일러가 컴파일을 시작하기 전에 먼저 처리해주는 것이라고 생각하시면 됩니다. 또 하나의 특징으로는, 전처리기는 문장을 끝낼 때에 세미콜론(;)을 붙이지 않습니다. #includeC에는 여러가지 전처리기들이 존재합..
Queue?저번에 Stack에 배울 때 가장 중요했던 특징은 바로 LIFO(Last In First Out)였다.반면에 Queue에서 가장 큰 특징은 FIFO(First In First Out)이다. 약자가 뜻하는 대로, 먼저 들어간 것이 먼저 나온다는 뜻이다.일반적인 줄 서기 개념을 생각하면 바로 Queue의 개념이랑 동일하다는 것을 알 수 있다. 혹시 모르니 실생활 예를 들어보자. 마트에서 계산을 위하여 줄을 서 있다.먼저 온 사람은 먼저 계산을 하고, 나중에 온 사람은 나중에 계산을 한다.이것이 Queue이다. 그림으로 표현하면 다음과 같다.위의 Data 숫자는 도착한 순서를 의미한다.Data 1은 첫번째로 도착했기 때문에, Queue에서 빠져나갈 때에 가장 먼저 나간다. 반대로 7은 마지막으로 도..
이미지 출처 : http://www.pskills.org/c.jsp자료형 ? Data Type?C 언어를 시작하기 위해 가장 먼저 알아야 할 것은 바로 자료형 입니다.우리가 표현하는 모든 것은 데이터라고 할 수 있습니다. 사람의 이름, 나이, 사는곳 .........생각해 보면 사실 우리가 표현하는것은 종류가 한정되어 있다는 것을 알 수 있습니다.바로 숫자와 문자입니다. 이것을 컴퓨터가 이해할 수 있도록 만드는게 바로 자료형입니다. 흔이 알려진 상식으로, '컴퓨터는 1과 0밖에 모른다' 라는 것이 있습니다.즉 컴퓨터는 2진수를 사용한다는 것이죠. 2진수를 배워보셨다면 아시겠지만, 예를들어 15는 2진수로 1111 으로 표현됩니다.10을 2진수로 표현하면 1010 이 되겠지요. 이런식으로 2진수는 각 자리..
개발자가 되어보자 ! 이미지 출처 : http://www.pskills.org/c.jsp 개발 환경 세팅C 개발을 시작하기 전에, 먼저 개발을 위한 환경을 시작하는게 가장 먼저겠죠? 개발을 위해 필요한 프로그램은 에디터와 컴파일러 두가지입니다. 에디터는 코드를 작성하기 위해 사용합니다. C 파일을 열어서 수정할 수 있는 모든 프로그램에 해당합니다.리눅스 환경의 Vi, nano / 윈도우 환경의 Visual Studio, Atom 등이 있습니다.에디터는 철저하게 사람을 위해 개발되었습니다. 사람이 보기 편하고, 수정하고 관리하기 편하게 만들어져 있습니다.따라서 본인이 필요한 기능이 충분히 포함된 에디터를 사용하는 것이 좋습니다. 컴파일러가 실제로는 더 중요한 역할을 합니다. C 언어는 High-level ..
Stack : 스택 문제. 당신은 자동차를 아주 좋아하는 재벌 2세입니다. 5대의 개인 차량을 갖고 있지만, 자동차에 비해 차고가 너무 초라합니다.슬프게도 차고가 너무 좁아서 문에 가장 가까운 차만 꺼내서 탈 수 있습니다. 이 문제를 해결하기 위해 당신은 하루에 차량을 한대씩 꺼내서새로운 차고에 집어 넣기로 결정했습니다. 이 오래된 차고를 C 언어로 구현하시오 ! 목표 결과물 : 문제 파일 : 문제 코드 : 파일로 받는게 번거로우면 아래 파일명 클릭하여 소스 그대로 복사123456789101112131415161718192021222324252627#include #include #include "stack.h" void main() { pStack stack = makeStack(); printf("B..
Stack : 스택 이번에 배울 자료구조는 스택이다.스택을 이해하기 위해서 기억해야 할 가장 큰 특징은 바로LIFO (Last In First Out) 이다. (first in last out이라고도 하지만 글쎄.. 하나만 기억해두는게 더 깔끔하다.) 무슨말이냐 하면, 마지막으로 들어온 것이 먼저 나간다는 것이다.다음 그림을 봐보자. 출처 [네이버 지식백과] 스택 [stack] (컴퓨터인터넷IT용어대사전, 2011. 1. 20., 일진사)그림을 보면 아래쪽에 네모난 통이 있다.이것이 Stack이다.데이터를 저장하는 바구니라고 생각하면 된다. 보통 바구니에 무엇을 넣게 되면, 먼저 넣은것은 아래로, 나중에 넣은것은 위에 있게 된다.그럼 바구니에서 어떤 것을 꺼내게 될 때에, 마지막에 넣은것이 위에 있기 때..
Linked List : 연결 리스트 저번 시간에는 연결 리스트의 개념에 대해 배워 보았다.이번 포스팅은 연결 리스트를 어떻게 구현하는지에 관한 내용이다. 어떤 개념을 이해하는 데에 효과적인 방법으로는 ,자신이 직접 코드를 작성하는 것 / 남이 짠 코드를 분석하는 것 이라고 생각한다.따라서 이 두 가지 방법을 모두 다 사용하기 위해 절반의 코드를 작성하여 업로드 할 것이다.비어 있는 부분의 코드를 직접 작성하기 위해서는, 기존에 작성되어 있는 코드를 잘 이해하여야 한다. 그럼 시작해보자. 우선 굉장히 단순하게 연결 리스트를 구현하기 위한 것이다. 1. 구조체 정의 12345678910typedef struct _node { int data; struct _node *next;}Node, *pNode; t..
Linked List : 연결 리스트 처음으로 나오는 연속하지 않는 자료구조이다.배열을 설명할 때 나왔던 것처럼, 연속된 메모리를 사용하려면 메모리에 커다란 가용 공간이 있어야 한다.그렇지만 연결 리스트를 사용하면 그런 제한 조건에서 벗어나게 된다. 그렇다면 연결 리스트는 어떤 방식으로 동작하는 것일까 ? 먼저, 배열과 비교해보자. 배열은 연속된 메모리에 할당되어 있으므로, 각각의 변수에 접근하기가 매우 편했다.예를 들어 int 변수의 배열이라면, 1번째 변수의 주소에 4를 더하면 2번째 변수의 주소가 되고, 3번째 변수의 주소는 그 주소에 4를 더하면 된다.무척이나 간단하게 변수들에 접근 할 수 있다는 것이다. 그림1. 불연속 메모리 공간 그림1을 보자면, 우리가 연결 리스트를 사용하는 가장 큰 장점은..