연산자

 C에서 사용하는 연산자는 산술 연산자, 대입 연산자, 증감 연산자, 관계 연산자와 논리연산자, 비트 연산자가 있습니다.


- 산술 연산자

 산술연산자는 덧셈, 뺄셈, 곱셈, 나눗셈 등을 수행하는 연산자로 아래 표와 같은 연산자 들이 있습니다. 덧셈과 뺄셈은 동일하고 곱셈과 나눗셈은 컴퓨터 계산기에서 사용하는 것과 같이 각각 '*', '/'를 사용합니다.

수학

C언어 

사용 예 

 +

 +

 a+b

 -

 -

 a-b

 ×

 *

 a*b

 ÷

 /

 a/b

정수에서만 가능한 나머지 연산도 있습니다. '%' 기호를 사용하는데 4%3 을 할경우 나머지인 1이 출력됩니다. 추가로 %기호를 printf함수로 출력을 하려면 다음과 같이 %를 두개 써줘야합니다.

printf("%d %% %d");


- 대입 연산자

 대입연산자는 간단합니다. 변수에 값을 저장하거나, 변경할때 사용합니다.

변수=식; 과같이 사용하며, a=7; a=a+1; 과같이 사용합니다.


- 증감 연산자

 증감 연산자는 증가 연산자와 감소 연산자가 있습니다. 증가 연산자는 ++를 이용해 값을 1을 증가시키고 감소 연산자는 --를 이용해 값을 1 감소시킵니다. 주로 조건문이나, 반복문에서 많이 사용합니다. 증감 연산자는 전위 연산과 후위 연산이 있습니다. 아래 코드를 통해 살펴보겠습니다.

-------------------------------------------------------------------------------------------

#include <stdio.h>

int main()
{
int a = 10, b = 10, c = 10, d = 10;
int x;

x = a++;
printf("x : %d a : %d\n", x, a);
x = ++b;
printf("x : %d b : %d\n", x, b);
x = c--;
printf("x : %d c : %d\n", x, c);
x = --d;
printf("x : %d d : %d\n", x, d);
}

-------------------------------------------------------------------------------------------

++와 --를 앞에쓰면 전위연산 뒤에쓰면 후위연산이라고 부르는데, 전위연산은 계산을 먼저하고 값을 저장하고, 후위연산은 계산하기전에 값을 저장 한 후 연산합니다. 그래서 a에서의 후위연산이라 x=10 a=11 b에서는 전위연산이라 x=11 b=11이 저장된걸 확인 할 수 있습니다.



- 관계 연산자

 관계 연산자는 왼쪽과 오른쪽 항을 비교하는 연산자로 아래 표와 같습니다. a와 b가 같다고 할때 "=="으로 쓰는 이유는 대입연산자에서 "="기호를 사용하기 때문입니다. 관계연산자 에서 조건을 만족하면 True인 1을 거짓이면 Fasle인 0을 반환합니다.

 

 수학

 C 언어

 A가 B보다 작다

 A < B

A < B

 A가 B보다 크다

 A > B

A > B

 A와 B가 같다

 A = B

A == B

 A와 B가 같지 않다.

 A ≠ B

A != B

 A가 B보다 작거나 같다.

 A ≦ B

A <= B

 A가 B보다 크거나 같다.

 A ≧ B

A >= B 


- 논리 연산자

 논리 연산자에는 AND, OR, NOT 세가지가 있습니다. 아래와 같이 표기합니다. 관계 연산자와 같이 AND,OR연산자가 참일경우 1을 반환하고 거짓일 경우 0을 반환하며, NOT연산자는 A가 거짓일경우 1을 반환하고 참일경우 0을 반환 합니다.

 논리 연산자

 표기

 의미

 AND

 A && B

 A와 B 모두 참이다

 OR

 A || B

 A또는 B가 참이다

 NOT

 !A

 A는 거짓이다

 AND연산자는 왼쪽항이 거짓인 경우, 오른쪽 항을 계산하지 않으며, OR연산자 역시 왼쪽항이 참이면 오른쪽 항을 계산하지 않습니다.


- 비트 연산자

비트 연산자는 이진수의 계산에서 사용되며, 6가지가 있습니다.

 비트 연산자

표기 

 의미

비트 단위 AND 연산 

 비교하는 비트가 모두 1일경우 1

비트 단위 OR 연산

 비교하는 비트중 하나라도 1일경우 1

비트단위 XOR 연산

 비교하는 비트가 다를경우 1 같을경우 0

비트단위 NOT 연산 

 비트를 반전 1->0, 0->1

왼쪽으로 시프트

<< 

 왼쪽으로 시프트하면 시프트하는만큼 비트가 이동

오른쪽으로 시프트 

>> 

  왼쪽으로 시프트하면 시프트하는만큼 비트가 이동

 시프트 연산은 왼쪽으로 1번 시프트할경우 2배 증가되며 오른쪽은 2배 감소합니다.


* 출처 : 한국기술교육대학교 온라인평생교육원 C 프로그래밍_1 

          스타일 C프로그래밍 저.김종훈,김종진 출.WellBook




'언어 > C' 카테고리의 다른 글

[C] 반복문  (0) 2016.12.18
[C] 조건문  (0) 2016.12.17
[C] 입출력함수, 기본자료형, 형변환  (0) 2016.12.15
[C] C 기본개념(2) 라이브러리와 변수  (0) 2016.12.12
[C] C 기본개념 및 실습환경  (0) 2016.12.07

·출력함수


- 출력함수

 우선 출력함수는 저번에 사용한 printf가 있는데요, print안에 쓰는 포맷에대해 알아보겠습니다.

먼저 printf는 다음과 같은 형식으로 사용합니다. printf("포맷과 내용",변수명);

이때 포맷에는 각각의 자료형에 맞게 사용 해주면됩니다. int형일 경우 %d, double형일 경우 lf, float형일경우 f, 8진수와 16진수로 표현하고 싶을경우 %o,%x 문자 한글자일경우 %c, 문자열일경우 %s로 포맷을 지정해주면 됩니다.  그리고 굉장히 큰 수를 표현할 경우에는 수를 저장할때에 E를 활용하고 포맷도 %e로 써주면됩니다. 아래 코드를 보면서 확인해 보겠습니다. 

-------------------------------------------------------------------------------------------------------

#include <stdio.h>


int main()

{

int a = 10; 

double b = 3.14;

float c = 3.15;

char d = 3;

char e = 'Q';

char *f = "문자열";

// 정수형 : %d, double형 : lf, float형 : f, 문자 : %c, 문자열 :%s

printf(" a : %d\n a2 : %05d\n b : %lf\n c : %f\n d : %d\n e : %c\n f : %s\n",a,a,b,c,d,e,f);

}

-------------------------------------------------------------------------------------------------------



 

 결과 값을 확인해보면 정상적으로 출력이 된걸 확인 할 수 있습니다. 이때, d를보시면 char형임에도 불구하고 작은 범위의 숫자 표현도 가능했습니다. a2는 %05d로 포맷을 지정했는데 결과값을 보면 00010 으로 나오는데, 5자리 정수를 표현하고 앞에 빈자리는 0으로 채우라는 포맷입니다.


- 입력함수


입력함수에는 scanf가 있습니다. 형식은 printf와 비슷합니다. scanf("포맷",저장할주소); 아래 코드를 보면서 확인해보겠습니다.

-------------------------------------------------------------------------------------------

#include <stdio.h>

#pragma warning(disable:4996)

int main()

{

int a, b;

printf("a:");

scanf("%d", &a); // 변수앞에 &사용

printf("b:");

scanf("%d", &b);

printf("a+b: %d\n",a+b);

}

-------------------------------------------------------------------------------------------

Visual Studio 2013에서는 scanf를 쓰면 취약하다는 문구가 뜨면서 오류가 납니다.  scanf_s함수를 사용하거나, #pragma warning(disable:4996) 또는 #define _CRT_SECURE_NO_WARNINGS를 헤더파일 밑에 넣어주면 오류가 나지 않습니다. printf와 유사하지만 뒤에 변수앞에 &(엔퍼센트)를 붙여야 합니다. 저장할 주소를 입력 해야하기 때문에 &를 붙여줍니다. 문자를 입력받을때에는 &를 쓰지않습니다. 또한 scanf에서는 \n(줄바꿈문자)를 쓰지않습니다.



아래 코드처럼 따로따로 입력 받지 않고, 여러개를 한번에 입력 받을 수도 있습니다.

-------------------------------------------------------------------------------------------

#include <stdio.h>

#pragma warning(disable:4996)

int main()

{

  int a, b;  

        printf("a와 b를입력하시면 합이 출력됩니다. \n");

scanf("%d %d", &a, &b);

printf("a+b: %d\n",a+b);

}

-------------------------------------------------------------------------------------------





기본자료형(Basic Type)

1) 정수형

 - 위의 코드들 처럼 printf와 scanf에 %d 를사용합니다.

2) 부동소수형

 - 부동소수는 소수점이 움직인다는 말로, 부동소수 표기법은 근사치를 표기하기 위한 방법입니다. 큰 자료형 일수록 정밀도가 증가합니다. 정밀도는 숫자를 얼마나 정밀하게 표현하는가를 뜻합니다. printf 함수에 특별한 옵션이 없는 경우 기본적으로 소수점 6자리에서 반올림해서 출력합니다.

 - float과 double 비교

아래 코드는 x,y에 같은 소수점 16자리수를 넣고 16자리까지 출력하라는 코드입니다. 결과가 어떻게될까요?

-------------------------------------------------------------------------------------------

#incldue <stdio.h>

int main()

{

float x;

double y;

x = 1.23455678901234567;

y = 1.23455678901234567;

printf("float형 : %.16f\n double형 : %.16lf\n", x, y);

}

-------------------------------------------------------------------------------------------

둘 다 16자리까지 출력을 했지만, float형은 값을 정확하게 저장하지 못했습니다. double형이 float형보다 더 정밀하게 표현합니다.


3) 문자형 

위에서도 언급하였듯 char는 문자형 자료형과 정수형 자료형 둘 다 간주합니다. 정수형에서 char의 범위는 -128~127인데, 총 256개의 숫자와 문자가 표현 가능합니다. 문자는 하나하나 숫자가 정해져있습니다.

- ascii code(아스키 코드) : 숫자 값에 문자를 하나씩 대응시켜 놓은 코드입니다.

아스키표를 정리해놓은 사이트입니다. http://www.asciitable.com/


아래 코드는 char형으로 65를 선언하고 정수와 문자로 출력하는 코드입니다.

-------------------------------------------------------------------------------------------

#include <stdio.h>

int main()

{

char a = 65;

printf("정수 : %d\n문자 : %c\n", a,a);

}

-------------------------------------------------------------------------------------------

이처럼 정수로 출력할 때는 65가 나오지면 문자로 출력했을때는 알파벳 대문자 A가 출력됩니다.


아스키 코드표를 이용하면 영문 소문자를 대문자로 변환하거나 반대로 대문자를 소문자로 변환할 수 있습니다. 아스키 코드표를 보면 대문자 'A'가 65 소문자 'a'가97입니다. 32가 차이나는점을 이용해 소문자를 대문자로 바꾸는 코드를 짜봤습니다. 아래 코드는 영문 소문자를 입력하면 대문자로 변환하는 코드입니다. 

-------------------------------------------------------------------------------------------

#include <stdio.h>

#pragma warning(disable:4996)


int main()

{

char ch;

printf("영문 소문자를 입력하면 대문자로 변환됩니다 : ");

scanf("%c", &ch); // 숫자 계산을 해야하므로 &를 붙여줍니다.

printf("영문 대문자 : %c\n",ch-32); // 숫자 계산을하고난 후 출력은 문자로 해줍니다.

}

-------------------------------------------------------------------------------------------


- 배열 : 기본 자료형의 연속을 한번에 다루는 자료형으로 문자를 여러 개 묶어서 사용합니다.

char x[5]로 선언하게되면 char형이 char[0],char[1],char[2],char[3],char[4] 5개가 선언이됩니다. "LOVE"라는 문자열을 넣고싶다면 배열의 순서대로 넣어주면됩니다. 배열의 끝에는 널문자라고 불리는 '\0' 를 넣어줘야합니다. 문자열의 끝을 표시해주지 않으면 않으면 남는 배열의 크기만큼 쓰레기값이 뒤에 붙게됩니다. 아래 코드는 배열의 크기를 넉넉하게 선언하고, 널값을 주석처리 했을때의 코드입니다.

-------------------------------------------------------------------------------------------

#include <stdio.h>

int main()

{

char x[8]; // 배열을 8로 넉넉하게 선언

x[0] = 'L';
x[1] = 'O';
x[2] = 'V';
x[3] = 'E';
// x[4] = '\0'; // 널값을 주석처리
printf(x);
}

-------------------------------------------------------------------------------------------


위에 방법처럼 배열에 직접 한글자씩 넣어줄수도있지만, 번거롭다면 변수를 선언하면서 동시에 "="를 써서 초기값을 설정 하거나, String Copy의 줄임말인 strcpy함수를 쓰면 간편하게 배열에 문자열을 저장할 수 있습니다. 이때 strcpy함수를 사용하기 위해서는 <string.h> 헤더파일을 포함시켜야합니다.

-------------------------------------------------------------------------------------------

#include <stdio.h>

int main()

{

char x[5]="LOVE"; 

printf("%s\n",x);

}
-------------------------------------------------------------------------------------------

#include <stdio.h>

#include <string.h>

int main()

{

char x[5]; 

strcpy(x,"LOVE");

printf("%s\n",x);

}

-------------------------------------------------------------------------------------------


형 변환 혹은 타입캐스팅(Type Casting)

 계산을 할 때, 타입이 다를경우 형변환을 해줘야 합니다.

- 묵시적 형 변환 (implicit type conversion) : c언어 스스로 형 변환 수행하는 경우입니다. 아래와 같은 계산이 있을경우, 3은 정수이므로 float형으로 형변환 되어 계산됩니다.

-------------------------------------------------------------------------------------------

float x;

x = 3.14 + 3 ;

-------------------------------------------------------------------------------------------

- 명시적 형 변환 (explicit type conversion) : 사용자가 직접 형 변환을 붙여 직접 형 변환 수행하는 경우 입니다. 아래코드는 계산은 double형으로 하고 결과를 int형으로변환 하는 경우 입니다. 형변환 하면 소수점은 반올림하지 않고 버림하게됩니다.

-------------------------------------------------------------------------------------------

double x=1.2;
double y=3.9

int result = (int)x+y;

-------------------------------------------------------------------------------------------

- 형넓히기 : 작은자료형->더큰 자료형으로 확장되며 형변환

- 형좁히기 : 큰자료형->작은자료형 정보손실 발생->컴파일러에서 경고


* 출처 : 한국기술교육대학교 온라인평생교육원 C 프로그래밍_1 

   스타일 C프로그래밍 저.김종훈,김종진 출.WellBook

   http://www.asciitable.com/




'언어 > C' 카테고리의 다른 글

[C] 반복문  (0) 2016.12.18
[C] 조건문  (0) 2016.12.17
[C] 연산자  (0) 2016.12.16
[C] C 기본개념(2) 라이브러리와 변수  (0) 2016.12.12
[C] C 기본개념 및 실습환경  (0) 2016.12.07

C++언어란 ? 

 AT&T 벨연구소의 컴퓨터 과학자 비야네 스트롭스트룹(Bjarne Stroustrup)이 개발한 언어로 C언어를 유지, 확장한 언어입니다. 쉽게 말해 C언어가 더욱(+) 더(+) 좋아진 언어라고 말할 수 있습니다. C++언어의 특징으로는 C언어에 클래스 개념을 추가하고 가상함수, 연산자 중복정의,다중상속, 템플릿, 예외처리, 엄격한 타입검사, 범용언어, 이식성 등이 있습니다.


비야네 스트롭스트룹(Bjarne Stroustrup)



C++ 프로그래밍 작성단계

소스파일(.cpp) -> 오브텍트파일(.obj) ->실행파일(.exe)



객체지향의 개념

 C++언어는 Java와 같은 객체지향 언어입니다. 객체지향 언어에서는 객체지향의 개념을 아는것이 가장 중요합니다. 객체지향은 데이터와 알고리즘을 하나로 묶는개념에서 시작되었습니다. 아래 4가지 개념이 객체지향의 중요한 개념입니다.



- 정보은닉(Information Hiding) : 데이터에 대한 불필요한 접근을 차단하여서 데이터를 보호하는 것

- 캡슐화(encapsulation) : 데이터와 알고리즘을 하나의 단위(클래스)로 묶고, 정보를 은닉 하는것으로, 우리가 먹는 캡슐약을 생각하면 이해하기 쉽습니다. 캡슐안에 여러 약이 들어있고 캡슐로 감싸서 안에 약들이 보이지 않는 것과 같습니다.

- 상속 : 비슷한 클래스가 이미 있다면 그 클래스를 가져다 사용하는 것

- 다형성(polymorphism) : 같은 이름의 함수나 연산자를 중복 정의해 상황에 맞게 적절한 함수나 연산자를 프로그램이 자동적으로 선택하는 것


객체지향의 프로그래밍의 최종 목표 : 기존의 코드를 재사용 하는 것


* 출처 : 한국기술교육대학교 온라인평생교육원 비쥬얼 C++ 프로그래밍



리눅스란? 

 스웨덴계 핀란드인 리누스 토르발즈(Linus Torvalds)가 1991년 11월에 공개한 유닉스 기반 개인컴퓨터용 공개 운영체제입니다. 유닉스가 유료이다보니, 유닉스와 거의 유사한 환경을 제공하면서 무료라는 장점을가진 리눅스가 프로그램 개발자 및 학교 등에서 급속히 확대되고 있습니다.


리누스 토르발즈(Linus Torvalds)


 리눅스의 종류

리눅스는 누구나 수정, 배포가 가능하기때문에 수백여개의 리눅스가 존재한다고 합니다. 그중에서도 페도라(Fedora)나 센트오에스(CentOS) 우분투(Ubuntu)등이 대표적인 종류로 볼 수 있습니다. 리눅스의 버전또한 다양한데, 리눅스의 버전은 곧 커널버전을 뜻한다고합니다. 저는 fedora의 하위, 상위버전과 CentOS를 사용해 봤는데, 기본적인 리눅스 명령어는 동일합니다.

 리눅스의 특징

다중 사용자/멀티태스킹을 완벽하게 지원

- 강력한 네트워킹 기능을 제공

- 안정적인 운영체제

- 다양한 플랫폼을 지원

- 무료 운영체제(일부 배포판 제외)

- 공개 운영체제

- 하드웨어 요구사양이 낮음

- 설치와 설정이 어렵지만, 배포판의 선택으로 어느 정도 극복 가능

- 현재 서버 및 임베디드 시스템의 운영체제로도 많이 사용되고 있음


⊙ 커널

- 운영체제의 핵심으로, 모든 작업에 우선하여 동작하는 프로그램

- 인터럽트 처리, 프로세스 관리, 메모리 관리, 파일 시스템 관리, 프로그래밍 인터페이스 제공 등 운영체제의 기본적인 기능들을 제공

- 엄밀한 의미에서 리눅스는 커널만을 의미


* 출처 : 한국기술교육대학교 온라인평생교육원 쉽게 배우는 리눅스 기초

          네이버지식백과 리눅스[Linux] (두산백과)




'Server > Linux' 카테고리의 다른 글

Ubuntu 18.04 LTS 설치  (0) 2018.12.26
CentOS 7 설치  (0) 2018.11.24

파이썬 개발환경 구축(설치)


 파이썬을 개발하는 여러 환경중에 제가 구축한 환경은 두 가지가 있습니다. Python 전용 통합개발환경(IDE) Enthought Canopy를 설치하는방법과 이클립스에서 설치하는 방법입니다. Canopy를 설치하면 환경설정 관련된 것들이 자동적으로 설정되있어서 그냥 Pyton을 설치하는 것보다 간편하다고 합니다. 하지만, IDE가 부족한 면이있어 이클립스도 같이 활용하는것이 좋다고 합니다.


Enthought Canopy 설치


 첫번째는 Enthought Canopy 설치 방법입니다. Enthought Canopy는 별도의 파이썬 설치 없이 아래 통합개발환경 링크에서 설치를 하면 자동으로 파이썬이 설치됩니다

https://www.enthought.com/products/canopy/


사이트에 들어가서 중앙하단에 보이는 Get Canopy 초록색버튼을 클릭한 후에 free버전을 다운로드 합니다.


기본적으로 설치를 마치고 나면 다음과같은 두 아이콘이 생성됩니다.  


 윈도우 커맨드 창에서 정상적으로 설치가 되었는지 확인을 해보았습니다. 기본적으로 python이라고 입력하면 실행이되며, 대화식으로 print 1+2라는 구문을 입력했을 때 3이 실행되는걸 확인 할 수 있습니다. 종료하는 명령은 exit가 아닌 exit()나 Ctrl+Z를 누르게 되면 종료가 됐습니다. 다음은 ipython을 실행했을때 python과 비슷하지만 색 효과가 있어 좀더 깔끔한 대화환경을 제공할 것 같습니다. 아래 그림은 python과 ipython의 비교 입니다.




- 이클립스에서 파이썬 설치


 두번째 방법은 이클립스에서 설치하는 방법입니다. 저는 이클립스를 기존에 사용해서 바로 설치했는데 없으신 분들은 이클립스를 설치하신 이후에 설치하셔야 합니다.

 설치과정은 아래와 같습니다. 이클립스를 써보신분들은 아실수도 있는 방법입니다. 가장먼저, Help탭에서 Eclipse Marketplace를 클릭합니다.


Eclipse Marketplace 창이뜨면 왼쪽 노란색 부분에 python이라고 입력하고 오른쪽 노란색 Go를 눌러주면 아래와 같은 창이뜨는데 빨간색 부분에있는 PyDev-Python IDE for Eclipse 를 Install 버튼을 눌러 설치해주시면됩니다. 


아래 그림과 같이 기본적으로 체크되어있는대로 설치하시면 됩니다.


설치 도중에 이런 창이뜨는데 체크를 꼭 해주시고 ok 버튼을 눌러야합니다.


아래 두번째 창 역시 Yes를 눌러줘야합니다. 저같은 경우, 재시작이 안되서 이클립스 File탭에서 직접 재시작을 해줬습니다.


설치가 끝나게되면 아래 그림과같이 이클립스 우측 상단에있는 빨간색 부분 아이콘 을 눌러서 PyDev로 바꿔줍니다. 아래 그림처럼 PyDev가 없다면 설치가 정상적으로 이루어지지 않은 것입니다.


PyDev로 바꿔주고 나면 시스템 내 파이썬 인터프리터 검색을 설정해줘야 합니다. 이클립스 Window탭에서 Preferences를 클릭합니다. 


 Preferences창에서 PyDev-Interpreters-Python Interpreter에 들어가서 Quick Auto-Config 버튼을 눌러줍니다. 눌러주면 아래 그림과같이 자동으로 라이브러리 들이 추가가 됩니다.


설치가 끝난 후 예제소스를 실행해보기 위해 프로젝트를 만들고 그안에 디렉토리를 만든후 test.py라는 소스파일을 추가합니다.


간단한 예제 소스를 작성해보았습니다. 소스코드를 작성한뒤 초록색버튼으로 run을 하게되면 실행이되고 아래 콘솔창에 결과가 나옵니다.

-----------------------------------------------------------

# -*- coding: utf-8 -*-

print 1+2

print "안녕하세요"

print 9/5

print 12-32

print 9.0/5.0

print 9/5.0

print 9/5 #정수/정수 = 정수로 출력

-----------------------------------------------------------

# -*- coding: utf-8 -*- 를위에쓰는 이유는 한글을 사용하기위해서 라고합니다. 다른 언어들과는 다르게 print 함수 하나만으로 정수,실수 계산 및 문자열을 출력했습니다. Python에서 주석은 #입니다.


아래는 콘솔창의 결과입니다. 

-----------------------------------------------------------

3

안녕하세요

1

-20

1.8

1.8

1

-----------------------------------------------------------

정수/실수를 했을때는 실수로 계산이되지만, 정수/정수는 1.8임에도 불구하고 정수인 1로 결과가 나왔습니다.


다음 소스는 문자열을 합치는 소스입니다. a와 b에 각각 문자열을 넣고 합칠때에는 "+"를 사용해 합쳤습니다.

-----------------------------------------------------------

a='park'

b='hyeung'

print a+b

-----------------------------------------------------------


아래 소스는 파이썬 버전을 알아보는 소스입니다. sys라는 모듈을 활용해 버전을 확인해 보았습니다. 

-----------------------------------------------------------

import sys

print sys.version

print

print sys.version_info

-----------------------------------------------------------


아래와 같이 2.7.11버전이 설치되있는 걸 확인할 수 있습니다. print함수를 그냥 사용했을때는 아래와같이 한줄 공백이 출력됩니다.

-----------------------------------------------------------

2.7.11 | 64-bit | (default, Jun 11 2016, 11:33:47) [MSC v.1500 64 bit (AMD64)]


sys.version_info(major=2, minor=7, micro=11, releaselevel='final', serial=0)

-----------------------------------------------------------


마지막으로 cal.py라는 소스를 작성해 저장하고 윈도우 커맨드창에서 실행을 해봤습니다. 먼저 아래 소스는 달력을 출력하는 소스입니다. 

-----------------------------------------------------------

import calendar

calendar.prmonth(2016, 12)

-----------------------------------------------------------

실행을 했을때, 콘솔창에 다음과같이 2016년 12월 달력이 출력됐습니다.


저는 D:\PythonProject\Python\01 이경로에 소스파일을 작성해서 커맨드 창에서 경로로 이동을 한뒤에 실행을 했습니다. ipython cal.py로 실행을 하게되면 커맨드 창에서도 똑같이 달력이 출력되는걸 확인할 수 있습니다.



* 출처 : 한국기술교육대학교 온라인평생교육원 파이썬프로그래밍



라이브러리 


 다른 프로그래밍 언어에서도 쓰이는 용어인 라이브러리는 함수나 변수들의 집합으로 구성되며, 컴파일 과정에서 참조되는 프로그램 모듈을 뜻합니다.


 아래 코드는 "안녕하세요" 라는 문자열을 출력 하는 코드입니다. 이때, "#include <stdio.h>"가 표준 입출력 라이브러리(Standard Input/Output)의 헤더파일입니다.


-------------------------------------------------------------------------------------------------------

#include <stdio.h> // 표준입출력 라이브러리 헤더파일을 include


int main() // main()함수

{

printf("안녕하세요 \n"); // 문자열 출력함수

}

-------------------------------------------------------------------------------------------------------


 헤더파일 : 라이브러리를 사용하기위해 코드의 포함시키는 파일로, 코드의 가장위쪽에 씁니다. 가장 위쪽에 쓰는 이유는 헤더파일 밑에만 그 라이브러리가 적용되기때문에, 코드 가장위에 사용해야합니다. 헤더파일은 위 코드처럼 헤더파일은 .h 확장자를 가집니다. 


 자료형(Type) : 특정한 의미를 부여해서 묶어놓은 것으로 기본자료형과 유도자료형이 있습니다.

⊙ 기본자료형(Basic Type)

1) 정수형(Integer) : 정수를 표현하는 자료형

 - 부호가 있느냐 없느냐에 따라서 Signed/Unsigned로 구분됩니다.

 - short, long, int 타입이 있으며, 각각 2,4,2또는4 바이트의 크기를 가집니다.

2) 부동소수형 : 실수를 표현하기위한 자료형

 - float, double, long double 타입이 있으며, 각각 4,8,8 바이트의 크기를 가집니다.

3) 문자형 : 문자를 표현하기 위한 자료형

 - Signed Char/Unsigned Char로 구분됩니다.

⊙ 유도자료형(Derived Type) : 사용자에 의해 만들어지는 자료형으로 뒤에서 공부할 배열, 포인터, 구조체, 공용체가 있습니다.


 변수 

 메모리공간에 이름을 정하는 것으로, 함수등에서 사용하기위한 이름을 정의하는것을 뜻합니다.

 수학시간에 배웠던 함수 f(x)를 생각하면 쉽게 이해할 수 있습니다. f는 함수를 뜻하며 x는 변수를 뜻합니다. 아래 코드는 위에서 했던 문자열 출력을 변수를 사용해 한것입니다.

-------------------------------------------------------------------------------------------------------

#include <stdio.h> 


int main()

{

char *a = "안녕하세요 \n";

printf(a);

}

-------------------------------------------------------------------------------------------------------


 추가로 프로젝트에서 전에했던 소스파일이나 빌드를 원하지 않는 소스파일은 다음과 같이 "빌드에서 제외" 속성 예로 바꿔주면 빌드에서 제외하고 빌드를 진행 할 수 있습니다.





* 출처 : 한국기술교육대학교 온라인평생교육원 C 프로그래밍_1 

          스타일 C프로그래밍 저.김종훈,김종진 출.WellBook



'언어 > C' 카테고리의 다른 글

[C] 반복문  (0) 2016.12.18
[C] 조건문  (0) 2016.12.17
[C] 연산자  (0) 2016.12.16
[C] 입출력함수, 기본자료형, 형변환  (0) 2016.12.15
[C] C 기본개념 및 실습환경  (0) 2016.12.07

 2012년에 C언어를 배웠었는데, 군대도 다녀오고 시간이 흐르면서 기억이 희미해져서 다시 처음부터 공부하려고 합니다. 한국기술교육대학교 온라인평생교육원 강의와 저자 김종훈, 김종진의 스타일 C프로그래밍 책을 참고하면서 공부를 시작하려고 합니다. 강의 내용과 책의내용에 제 생각을 더해 글을 작성할 계획입니다.


C언어란? 

- 가장 보편적이고 기본적인 프로그래밍 언어


기본적인 용어

- 컴파일 : 사람이 알아보기 쉬운 프로그래밍 언어를 기계어로 바꾸는 작업

- 컴파일러 : 컴파일 해주는 프로그램

- 원시프로그램(소스코드) : 프로그래밍 언어로 작성한 프로그램

- 목적프로그램 : 컴파일 과정을 거쳐서 생성한 기계어 코드



실습환경


 리눅스에서도 개발을 할 수 있지만, 저는 윈도우에서 편하게 하기 위해, 실습 환경을 Visual Studio 2013 Professional 버전으로 골랐습니다. 2015버전도 나왔지만, 2015버전보다는 써본 경험도 있는 2013버전을 사용하게 되었습니다.

 비쥬얼 스튜디오는  아래 링크에서 다운받을 수 있습니다. 한글판을 원하시는분은 별도의 한글언어팩을 설치하시면 됩니다.

https://www.visualstudio.com/ko/vs/community

 소스코드를 작성하고 실행하기위해서는 가장 처음 프로젝트를 만들어야합니다. 아래 <그림1>과 같이 [파일]탭의 새로만들기에서 프로젝트를 클릭합니다.

<그림 1> 프로젝트 만들기 1


 Visual c++ 탭에서 Win32 콘솔 응용 프로그램을 선택하고 원하는 프로젝트 명을 입력하고 확인 버튼을 누릅니다.

<그림 2> 프로젝트 만들기 2


 확인 버튼을 누르면 아래 그림과 같이 Win32 응용 프로그램 마법사가 실행이되는데, 주의 할 점은 빈 프로젝트를 선택하는 것입니다. 미리 컴파일된 헤더 파일을 골라도 상관은 없지만, 굳이 테스트 코드를 실행하기위해서는 필요하지 않기때문에, 빈 프로젝트를 선택합니다.

<그림 3> Win32 응용 프로그램 마법사


 프로젝트를 만든 후에 소스파일 디렉토리를 클릭해서 추가-새항목을 누른뒤 .cpp 파일을 추가합니다. 이때, .cpp 파일을 추가하지만 확장자는 .c로 바꿔줍니다. 그리고 나중에, 헤더파일을 작성할때에는 소스파일 밑에있는 헤더파일 디렉토리에 추가 하면됩니다.

<그림4> .cpp파일 추가


 .c 파일을 추가한 후 간단 한 소스코드를 작성하고 디버그 메뉴에서 "디버깅하지않고 컴파일"을 선택하거나 Ctrl+F5 키를 이용해 디버깅하지 않고, 바로 실행을 하였습니다. 도스창에 입력한 문자열이 출력되고, 아래 출력 탭에서 test.c 파일이 .o 파일을 거쳐 .exe 파일로 생성이 되는걸 확인 할 수 있습니다.

 +@ \n은 출력하는 문자열 뒤에 한줄을 내릴때 사용하는 줄바꿈 문자인데 "\"를 출력하고싶을때는 \\를 사용하면 "\를"출력할 수 있다.

<그림 5> 문자열 출력 테스트



* 출처 : 한국기술교육대학교 온라인평생교육원 C 프로그래밍_1 

          스타일 C프로그래밍 저.김종훈,김종진 출.WellBook



'언어 > C' 카테고리의 다른 글

[C] 반복문  (0) 2016.12.18
[C] 조건문  (0) 2016.12.17
[C] 연산자  (0) 2016.12.16
[C] 입출력함수, 기본자료형, 형변환  (0) 2016.12.15
[C] C 기본개념(2) 라이브러리와 변수  (0) 2016.12.12

스크립트 언어와 파이썬


 요즘 뜨고있는 파이썬 언어를 한국기술교육대학교 온라인평생교육원 강의를 들으면서 공부를 시작하려고 합니다. 

강의 내용과 제 생각을 더해 글을 작성할 계획입니다.


- 스크립트 언어

- Scripts : 연극 대사 등이 적혀있는 스크립트의 유래 

- 스크립트 = 소스코드

- 인터프리터 방식 : 한줄단위로 해석, 수행


 1-1. 스크립트 언어의 절차


- 바이트 코드 : 어셈블리어에 가까운 언어로 기계어와는 다름


1-2. 컴파일 언어와의 비교

- 컴파일 언어는 자원을 많이 요구하고 시간이 많이 소요됨

- 수정이 빈번한 경우 컴파일 언어는 전체를 컴파일 해야하므로 인터프리터 방식이 유리


1-3. 스크립트언어의 장·단점

- 장점

소스 코드 수정이 빠르고 간단하게 이루어짐 → 개발 시간 단축

- 단점

중간코드를 만드는 것은 간단하지만 실제로 실행하는 시간은 오래걸림

실행 시간이 오래걸림


1-4. 대표적인 스크립트 언어

- JavaScript

- ActionScript : 주로 플래시 개발을 위해 사용되는 언어

- Perl 

- PHP

- Python 

- Lua, Ruby : 최근에 개발된 스크립트 언어


- 파이썬 언어의 유래 및 특징


2-1. 파이썬의 유래

- Phyton의 사전적 의미 : 독이없는 뱀, 그리스 신화에 나오는 악마

- 네덜란드의 Guido Van Rossum이 만들었으며, 영국의 쇼 프로그램의 이름에서 따옴

- ABC라는 언어에서 출발함

Guido Van Rossum


2-2. 파이썬을 배워야 하는 이유

- 생산성이 높기때문


2-3. 파이썬의 특징

- 간단하고 쉬운 문법

- 고수준의 내장 객체 자료형 제공

- 플랫폼 독립적 언어

- 메모리 자동관리 → 추가 코딩이 필요하지않음

- 쉬운 유지보수

- 많은 수의 라이브러리 제공

- 짧아지는 코드

- 높은 확장성 (모듈을 임포트하거나 자신의 코드를 모듈로만들어서 제공할 수 있음)

- 들여쓰기를 철저하게 지키도록 설계됨(문법적으로 강제로 지키게 설계됨) → 가독성을 높여주고 재사용하기 쉽게 만들어줌


* 출처 : 한국기술교육대학교 온라인평생교육원 파이썬프로그래밍



+ Recent posts