본문 바로가기

전체49

[리눅스]리눅스 C언어 개발환경 갖추고 샘플 프로그램 실행해보기(+ GCC, Vim, Make) [리눅스 C언어 개발환경 갖추고 샘플 프로그램 실행해보기(+ GCC, Vim, Make)] 이번 글에서는 리눅스 환경에서 C언어를 개발하기 위한 개발환경을 갖추고 간단한 프로그램을 작성하여 실행시켜보려고 한다. 본격적으로 시작하기 앞서 아래와 같은 명령을 터미널에 타이핑하자. $ cat /etc/issue 그러면 위와 같은 결과를 얻을 것인데 "cat /etc/issue"는 현재 사용중인 리눅스의 버전을 알려준다. 나같은 경우는 현재 Ubuntu 18.04.2 LTS 버전에서 진행하고 있으니 글을 읽을 때 이 점 고려해서 읽어 주기를 바란다. 이제 본격적으로 시작해보자. 이 글에서는 C컴파일러로 gcc, 에디터로는 Vim을 사용한다. 그리고 빌드를 쉽게 하기 위해서 빌드 자동화 유틸리티인 make를 사용.. 2020. 4. 28.
[C언어] break문과 continue문 [break문과 continue문] 이 주제에 대해서는 어느 정도 이미 언급을 했었다. break문의 역할과 활용에 대해서 어느 정도 설명을 이 글에서 무한 루프에 대해 설명하면서 언급을 했었다. 다만 간단하게 지나가듯이 설명을 했기 때문에 여기서는 break문은 정확하게 무엇이고 어떻게 사용을 할 수 있으며 break문과 같이 반복문에서 자주 사용되는 continue문에 대해서도 설명을 해보려고 한다. 먼저 늘 그렇듯이 왜 break문과 continue문이 필요한 지에 대해서 설명하려고 한다. 이해를 돕기 위해서 약간 판타지스러운 비유를 들어 설명해보겠다. 만약에 인생에서 어떠한 목표가 생겼는데, A라는 시점까지 그 목표를 달성하지 못한다면 목표를 결심한 시점으로 회귀, 돌아간다고 해보자. 그런데 시도.. 2020. 4. 27.
[C언어]만약 반복문 없이 반복하려면? - goto문과 스파게티 코드 [만약 반복문 없이 반복하려면? - goto문과 스파게티 코드] 만약 "Hello World"를 10줄에 걸쳐 10번 출력하는 코드를 반복문 없이, 그리고 printf함수를 한번만 사용해서 짜라고 하면 어떨까? 불가능한 미션인 걸까? 일단 결론부터 말하자면 C언어에서는 조건문과 반복문 외에 또다른 분기문을 제공한다. 그것이 바로 goto문이다. #include int main() { int i = 0; loop: printf("Hello World"); i++; if(i < 10) goto loop; return 0; } goto문은 label과 함께 사용하며 label은 "lable 이름:"과 같이 사용하여 표현한다. 여기서 goto문은 "goto label 이름"과 같이 사용하며 goto문을 사용하게.. 2020. 4. 26.
[C언어]반복문을 사용해보자 - while문과 do-while문, 그리고 for문 [반복문을 사용해보자 - while문과 do-while문, 그리고 for문] 이번 글에서는 while문과 do-while문, 그리고 for문으로 구성된 반복문에 대해서 알아보려고 한다. 먼저 반복문을 어디서 사용할 수 있는지, 그리고 반복문이 왜 필요한지에 대해서 이해해보자. 만약에 엄청난 To-Do-List 프로그램을 C언어로 작성했다고 하자. 그리고 이 프로그램은 기본적으로 To-Do-List를 수 십만개를 생성해서 사용하는 사람들을 대상으로 만들어져야 한다고 가정하자. 그렇다면 이 프로그램은 기본적으로 수만 개에서 수십 만개, 수백 만개의 To-Do-List가 생성되었을 때도 성능적인 이슈 없이 정상적이고 빠르게 동작해야 한다. 하지만 이것을 어떻게 확인할 수 있을까? 그 방법은 바로 직접 수백 만.. 2020. 4. 26.
[IT]오피스 활용 - 한글, 크롬의 각종 단축키 및 꿀팁 요약 [오피스 활용 - 각종 단축키 및 꿀팁 요약] 한글과 크롬 관련해서 단축키 및 꿀팁을 표로 간단, Simple하게 정리해봤다. 혹시 여기에 없는 단축키, 꿀팁이 있다면 댓글로 알려주면 좋을 것 같다 ㅎㅎ 1. 한글 활용 꿀팁 단축키 설명 Ctrl + N + T [표 만들기] 팝업창을 띄운다. 또는 내용을 쓰고 드래그 한 후 단축키를 누르면 표로 바뀐다. H 영역을 선택한 후 단축키를 누르면 모든 셀이 동일한 높이로 맞춰진다. W 영역을 선택한 후 단축키를 누르면 모든 셀이 동일한 넓이로 맞춰진다. S [셀 나누기] 팝업창을 띄운다. M 병합하고자 하는 셀을 선택 후 단축키를 누르면 셀과 내용이 병합된다. F5 한 번 누르면 셀 하나, 두 번 누르면 셀 전체가 선택된다. L 영역을 선택한 후 단축키를 누르.. 2020. 4. 24.
[AVR] Atmel Studio 7.0 설치하고 샘플 프로젝트 실행하기(+ ISP를 통해서 USB전원 공급하는 방법) [Atmel Studio 7.0 설치하고 샘플 프로젝트 실행하기(+ ISP를 통해서 USB전원 공급하는 방법)] 이 글에서는 전에 만들어둔 AVR 개발환경 준비하는 과정을 담은 영상을 글로 표현해보려고 한다. 시작하기에 앞서 준비물이 있다. 바로 AVRISP와 AVR 보드이다. AVR 보드는 AVR 칩을 사용하기 위한 기타 요소들을 모아 하나의 보드로 만든 것이며 AVRISP는 이 보드에 PC에서 작성한 코드를 업로드하기 위한 도구이다. 내가 사용한 AVRISP와 AVR 보드는 AVRISP-mk2와 AT128A-70B V2.0이다. 먼저 ISP를 통해서 USB 전원을 공급하기 위해서는 AVRISP-mk2를 분해시켜 줘야 한다. 설명서를 보면 "USB에서 나오는 5V를 타겟보드의 전원으로 사용 할 때는 제.. 2020. 4. 24.
[C언어]조건문을 사용해보자 2 - switch-case문 [조건문을 사용해보자 2 - switch-case문] 이전 글에서는 if문과 else문을 사용한 조건분기 구현에 대해서 살펴보았다. 이번에는 switch-case문을 사용해서 이전 글에서 구현했던 등급 채점 프로그램을 재구현해보고자 한다.먼저 switch문이 필요한 이유에 대해서 이해해보자. 이전 글에서 구현했던 등급 채점 프로그램의 기준은 매우 단순했다. 90점 이상, 80점 이상, 70점 이상, 70점 미만에 대해서만 조건을 구성했고 그 결과 4번만 조건문을 작성하면 됐다. 하지만 만약에 좀 더 세밀한 단위로 조건을 작성해야 한다면 어떨까? 0.1, 0.001, 0.0001 단위로 조건을 구성한다면 필요한 조건문의 개수는 매우 매우 많이 늘어나게 될 것이다. 이 경우 코드를 이해하기도 매우 어려워질 .. 2020. 4. 24.
[C언어]조건문을 사용해보자 1 - if문과 else문(+ 관계 연산자와 논리 연산자) [조건문을 사용해보자 - if문과 else문(+ 관계 연산자와 논리 연산자)] 여기서는 if문과 else문을 이용하여 조건에 따라 프로그램의 흐름을 바꾸는 방법에 대해서 살펴본다. 먼저 조건문이 필요한 이유에 대해서 이해하고 본격적으로 조건문에 대해 설명하고자 한다. 만약 우리가 선생님이고 학생들의 점수를 입력받으면 자동으로 등급을 채점해주는 프로그램을 만들고자 한다고 하자. 그러면 입력값은 학생들의 점수일테고, 출력은 학생들의 점수에 따른 등급일 터이다. 여기서 고민을 해볼 것이 어떤 기준에 따라 등급을 판별할 것이냐인데 여기서는 간단하게 위에서부터 70점 이상까지는 10점단위로 A,B,C 그리고 그 미만은 모두 F로 매긴다고 하겠다. 그러면 아래와 같이 96점은 A, 80점은 B, 64점은 F라는 결.. 2020. 4. 24.
[C언어]자료형에 대해 알아보자 [자료형에 대해 알아보자] 사실 지난 글에서 다룬 주제인 '변수'는 '자료형'이라는 개념을 이해해야만 완전히 이해할 수 있는 개념이였다. 우선 변수에 대해서 다시한번 이야기 해보자면 변수는 변할 수 있는 값을 저장할 수 있는 공간 그 자체를 가리키는 개념이였다. 우리가 변수를 선언한다는 것은 어떠한 크기의 메모리를 우리가 자유롭게 값을 쓰고 지우고를 하겠다고 프로그램을 실행하는 주체인 운영체제에게 알려주는 거라고 볼 수 있다. 여기서 중요한 것은 '어떠한 크기'의 메모리인지 어떻게 표현하는 가이다. 운영체제에게 메모리를 할당해달라고 요청하기 위해서는 얼마만큼의 메모리를 어떻게 사용할 것인지를 알려줘야만 한다. 여기서 등장하는 개념이 '자료형 Data Type'이다. 1바이트의 메모리를 사용하겠다, 2바이.. 2020. 4. 24.
[C언어]변수에 대해서 살펴보자 [변수에 대해서 살펴보자] 컴퓨터는 많은 내용을 기억해야 한다. 여기서 프로그램 실행 중에 기억해야 될 내용들은 RAM이라는 메모리를 통해서 기억된다. 메모리(Memory)는 대략적으로 위와 같은 선형 구조로써 표현할 수 있으며 각 공간마다 주소Address가 부여된다. 변수(Variable)의 엄밀한 정의는 변경 가능한 어떤 값을 저장하는 공간을 말한다. 변수와 상반되는 개념으로 변경할 수 없는 어떤 고유의 데이터를 유지하는 값은 상수(Constant)라고 한다. various(여러, 다양한) => variety(종류) / variable(변수) => variation(변화) 우리가 일상 생활 속에서 사용하는 많은 프로그램들은 수많은 변수들로 구성되어 있다. 예를 들어 철수가 어떤 게임을 한다고 할 때.. 2020. 4. 24.
[C언어]이스케이프 시퀀스에 대해 알아보자 이번 글에서는 지난 글에서 잠깐 언급되었던 이스케이프 시퀀스에 대해서 좀 더 자세히 알아보려고 한다. 이스케이프 시퀀스란 '\' 문자와 다른 문자를 결합하여 일반적인 방법으로는 표현하기 어려운 기능이나 문자를 표현할 수 있게 해주는 문자를 말한다. 지난 글의 경우, '\n'을 'Hello World!'를 출력하는 데 함께 사용하여 줄바꿈을 하는 용도로 사용했는데 이것이 바로 이스케이프 시퀀스였다. 이스케이프 시퀀스에는 줄바꿈을 해주는 '\n' 문자 외에도 다양한 것들이 있다. 일반적으론 표현할 수 없는 것들을 표현할 수 있도록 고안되었는데 생각보다 많으니 대충 살펴보고 필요할 때마다 참고하기를 바란다. 문자 의미 설명 \a 경보(alert) 경보를 울린다.(하드웨어에 따라 다르다) \b 백스페이스(bac.. 2020. 4. 24.
[C언어]Hello World를 출력해보자(+ 유용한 Dev C++ 단축키) [Hello World를 출력해보자(+ 유용한 Dev C++ 단축키)] Dev C++을 설치해봤으니 이번에는 간단한 프로그램을 작성해보려고 한다. 여기서는 "Hello World"를 출력하는 코드를 짜보고 각 줄마다 자세하게 설명해보도록 하겠다. 그 전에 C언어를 공부하면서 사용할 실습 폴더를 설정하고 Dev C++의 유용한 단축키들에 대해서 알아보자. 순서는 아래와 같다. 1. 우클릭 -> 새 폴더 생성을 통해 '실습 폴더'를 생성한다. 2. Dev C++을 실행한 후 도구->환경설정->파일/디렉토리->사용자 기본 디렉토리 옆 파일 아이콘을 클릭한다. 3. 열린 '폴더 찾아보기'에서 새롭게 생성한 실습 폴더를 클릭한 후, '확인'을 클릭한다. 이제 알아두면 유용한 Dev C++의 단축키들을 알아보고 본.. 2020. 4. 24.
반응형