6.3 내장 함수

 

앞의 예제에서 print 또는 del을 사용해 보았는데 이렇게 파이썬 내부에 정의되어 있는 함수를 내장 함수라 부릅니다그리고 내장 함수는 이미 존재하고 있는 함수로 import로 불러오지 않고 바로 호출해서 사용할 수 있는 함수 입니다.

함수는 이름만 잘 만들어도 반은 먹고 들어간다고 했는데 그 말이 사살인지 확인해 볼까요?

 


6.3.1 abs 


음수, 양수 관계없이 단순히 크기만을 나타내기 때문에 음수를 양수로 변환 하는데 사용하기도 합니다.

>>> abs(3)

3

>>> abs(-3)

3

>>> abs(0.0002)

0.0002

>>> abs(-0.0002)

0.0002

 

 

6.3.2 all


자료형을 입력 받아 내부 요소가 모두 참이면 True를 리턴 하고 하나라도 거짓이 있으면 False를 리턴 합니다.

>>> all([1,2,3])

True

>>> all([4,5,1,3])

True

>>> all([4,5,1,0,3])

False

>>> all(('a', 'b', 'c'))

True

>>> all(('a', 'b', 'c', ''))

False

   

python study



6.3.3 any


자료형을 입력 받아 내부 요소가 모두 거짓이면 False를 리턴 하고 하나라도 참이 있으면 True를 리턴 합니다.

>>> any([4,5,1,0,3])

True

>>> any(('', 0))

False


 

6.3.4 chr


아스키(ASCII) 코드값을 입력 받아 문자를 출력 합니다.

# 10 진수

>>> chr(112)

'p'

>>> chr(80)

'P'

# 16 진수

>>> chr(0x50)

'P'

>>> chr(0x70)

'p'

 

 

6.3.5 dir


dir는 입력 받은 객체에 대해 사용할 수 있는 변수와 메소드를 나열해 줍니다.

입력값이 숫자인 경우

>>> dir(1)

['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']

 

입력값이 문자인 경우

>>> dir('a')

['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

 

 

6.3.6 divmod


함수 명에서도 알 수 있듯이 나눗셈의 몫과 나머지를 구하는 함수 입니다숫자가 2개 필요하고 결과를 튜플 형태로 리턴 합니다.

>>> divmod(20, 3)

(6, 2)


 

6.3.7 enumerate


리스트, 튜플, 문자열등을 입력 받아 인텍스와 함꼐 리턴 합니다.

>>> a = [1, 2, 3, 4, 5]

>>> for i, n in enumerate(a):

...   print(i, n)

...

0 1

1 2

2 3

3 4

4 5


  

6.3.8 eval


문자열을 명령어로 변환 하고 실행합니다변환된 명령어가 실행할 수 없으면 오류가 발생 합니다.

# 오류 발생

>>> eval('a' + 'b')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "<string>", line 1, in <module>

NameError: name 'ab' is not defined

 

# 정상 작동

>>> ab = 555

>>> eval('a' + 'b')

555


 

6.3.9 filter


filter(function, iterable)형태로 iterable 값들을 function을 통해 필터링 하여 결과 값을 반환 합니다. function에 어떤 조건의 데이터만 추출 하는지 정의가 되어야 합니다.

>>> def is_even(x):

...    if x % 2 == 0:

...       return True

...    else:

...       return False

...

>>> r = filter(is_even, [1,2, 3, 4, 5, 6,7])

>>> 

>>> for i in r:

...    print(i)

...

2

4

6

 

lambda도 함수와 같은 역할을 하고 반복 사용하지 않는다고 했는데 기억하시나요.

>>> r2 = list(filter(lambda x : x % 2 == 0,[1,2, 3, 4, 5, 6,7]))

>>> r2

[2, 4, 6]


 

6.3.10 hex


정수를 입력 받아 16진수를 리턴 합니다.

>>> hex(5)

'0x5'

>>> hex(10)

'0xa'

>>> hex(15)

'0xf'


 

6.3.11 id


입력된 객체의 주소값을 리턴 합니다.

>>> a = 'a'

>>> b = a

>>> id(a)

2998919036464

>>> id('a')

2998919036464

>>> id(b)

2998919036464

# a 값 변경

>>> a = 'b'

>>> id(a)

2998919034784

>>> id(b)

2998919036464

a, b, ‘a’는 모두 같은 주소를 바라보고 있습니다. a 값을 변경하면 a만 다른 주소를 바라보게 됩니다.


 

6.3.12 input


사용자로부터 입력값을 받아야 하는 경우 사용하며 input([prompt])를 이용하여 콘솔 창에 프롬프트가 나타나도록 할 수 있습니다.

>>> x = input()

Y

>>> x = input("계속 진행 하시겠습니까?(Y/N) :")

계속 진행 하시겠습니까?(Y/N) :Y

>>> x

'Y'


 

6.3.13 int


정수 형태의 문자나 정수, 실수 등을 입력 받아 정수를 반환 합니다반올림은 하지 않고 실수 형태의 문자는 오류가 발생 합니다.

>>> int('30')

30

>>> int('-45')

-45

>>> int(3.5444)

3

>>> int(-4.99999)

-4

>>> int('8.9999')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: invalid literal for int() with base 10: '8.9999'

 

다른 진수의 값을 10진수로 반환 합니다.

# 2진수 -> 10진수

>>> int('011', 2)

3

# 16진수 -> 10진수

>>> int('0xA', 16)

10

 


6.3.14 isinstance


isinstance(object, type) 형태로 사용하며 objecttype의 인스턴스 인가 확인하여 참이면 True, 거짓이면 False를 반환 합니다. type에는 복수의 데이터 형, 클래스 등이 포함될 수 있습니다.

# 정수가 정수냐?

>>> isinstance(3, int)

True

# 실수가 정수냐?

>>> isinstance(3.0, int)

False

# 실수가 정수 또는 실수냐?

>>> isinstance(3.0, (int, float))

True

# 클래스가 클래스냐?

>>> class OneClass:

...    a = 'aaa'

...

>>> b = OneClass()

>>> c = isinstance(b, OneClass)

>>> c

True

 


6.3.15 len


문자열의 길이 또는 요소의 개수를 리턴 합니다숫자의 개수는 구하지 못합니다.

>>> len('abcdefg')

7

>>> len([1, 2, 3, 4])

4

>>> len(['a', 'b', 'cc'])

3

>>> len((1, 2, 3, 4, 5))

5

>>> len(123)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: object of type 'int' has no len()

 


6.3.16 list


데이터를 입력 받아 list로 반환 합니다.

>>> list('abcdefg')

['a', 'b', 'c', 'd', 'e', 'f', 'g']

>>> list([1,2,3,4,5])

[1, 2, 3, 4, 5]

>>> list((1,2,3,4,5))

[1, 2, 3, 4, 5]


  

6.3.17 map


map(function, iterator)형태로 iterator의 요소들을 하나씩 function에 적용하여 값을 리턴 받아 옵니다.

>>> 

>>> def addFunc(n):

...    return n + n

...

>>> nums = (1, 2, 3, 4, 5)

>>> res = map(addFunc, nums)

>>> print(list(res))

[2, 4, 6, 8, 10]

 

lambda를 이용하여 function을 대체할 수 있습니다.

>>> nums = (1, 2, 3, 4, 5)

>>> result = map(lambda x: x + x, nums)

>>> print(list(result))

[2, 4, 6, 8, 10]

 


6.3.18 max


입력된 값 중 최대 값을 반환 합니다문자와 숫자는 비교할 수 없습니다.

>>> max("PYTHON python")

'y'

>>> max([1, 2, 3, 4.5])

4.5

  


6.3.19 min


입력된 값 중 최소 값을 반환 합니다. 문자와 숫자는 비교할 수 없고 문자 보다 blank가 작은 값입니다.


 

>>> min("PYTHON python")

' '

>>> min([1, 2, 3, 4.5])

1



6.3.20 oct


정수를 입력 받아 8진수로 변환 하여 리턴 합니다.

>>> oct(8)

'0o10'

>>> oct(10)

'0o12'

 


6.3.21 open


open(filename, [mode])의 형태로 filename의 파일을 오픈 합니다오픈 하는 조건은 mode에 따라 달라집니다모드가 생략 되면 읽기 모드로 오픈 합니다.

f = open(“test_file”, “r”)

 

 

6.3.22 ord


문자를 입력 받아 ASCII 코드의 10진수 번호로 리턴 합니다. chr()와 반대 개념입니다.

>>> ord('a')

97

>>> ord('A')

65


 

6.3.23 pow


pow(x, y)x의 값을 y만큼 제곱한 결과를 리턴 합니다.

>>> pow(2, 3)

8

>>> pow(3, 3)

27

 


6.3.24 range


range([start,] stop [,step])의 형태로 일련 번호를 리턴 하며 인수가 하나, , 셋 모두 선택적으로 사용 가능 합니다.


- 인수가 하나인 경우

0 부터 stop 보다 작으며 1씩 증가 하는 값. (0 <= list < stop) 

>>> range(10)

range(0, 10)

>>> list(range(10))

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

- 인수가 둘 경우

start 부터 stop 보다 작으며 1씩 증가 하는 값. (start <= list < stop)

>>> range(5, 10)

range(5, 10)

>>> list(range(5, 10))

[5, 6, 7, 8, 9]

 

- 인수가 셋 경우

start 부터 stop 보다 작으며 step씩 증가 하는 값. (start <= list < stop)

. >>> range(5, 10, 2)

range(5, 10, 2)

>>> list(range(5, 10, 2))

[5, 7, 9]

 

 

6.3.25 round


round(number[, ndigits])의 형태로 자릿수가 생략 되면 반올림 한 값을 리턴하고 자릿수가 입력 되면 정해진 자릿수 까지 반올림 된 값으로 표현 합니다.

>>> round(3.5)

4

>>> round(4)

4

>>> round(4.55555, 3)

4.556

 

6.3.26 sorted


입력값을 정렬하여 리턴 하는 함수 입니다.

>>> sorted("python")

['h', 'n', 'o', 'p', 't', 'y']

>>> sorted(['a', 'd', 'b', 'k', 'c'])

['a', 'b', 'c', 'd', 'k']

>>> sorted([5,7,2,4,6,8])

[2, 4, 5, 6, 7, 8]

>>> sorted([5,7,2,4,6,8,2])

[2, 2, 4, 5, 6, 7, 8]

>>> sorted((5,7,2,4,6,8,2))

[2, 2, 4, 5, 6, 7, 8]

 

 

6.3.27 str


입력 받은 값을 문자열 형태로 반환 합니다숫자를 문자와 결합 할 수 있습니다.

>>> str(123)

'123'

>>> str(345) + "abc"

'345abc'

>>> str("python".upper())

'PYTHON'

 

6.3.28 sum


입력된 값을 모두 더한 합을 리턴 합니다.

>>> sum((1, 2, 3))

6

>>> sum([1, 2, 3])

6

 

6.3.29 tuple


입력된 값을 튜플로 형변환 하여 반환 합니다.

>>> tuple("python")

('p', 'y', 't', 'h', 'o', 'n')

>>> tuple([1, 2, 3])

(1, 2, 3)

>>> tuple(('a', 'b', 'c'))

('a', 'b', 'c')

 

6.3.30 type


입력 값의 자료형을 리턴 합니다.

>>> type('a')

<class 'str'>

>>> type(1)

<class 'int'>

>>> type([])

<class 'list'>

 

 

6.3.31 zip


반복형 데이트를 튜플 형태의 쌍으로 묶어 리턴 합니다.

>>> a = [1, 2, 3, 4, 5]

>>> b = ['a', 'b', 'c', 'd', 'e']

>>> for i in zip(a, b):

...    print(i)

...

(1, 'a')

(2, 'b')

(3, 'c')

(4, 'd')

(5, 'e')

>>> list(zip(a, b))

[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]

 

서로 쌍의 개수가 맞지 않으면 작은 요소의 수에 맞줍니다.

>>> a = [1, 2, 3, 4, 5]

>>> b = ['a', 'b', 'c', 'd']

>>> list(zip(a, b))

[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]


- copy coding -


배가 매우 크게 임신한 여자를 보는 꿈 해몽

  -> 행운이 찾아와서 만사가 형통할 것이다.


처녀가 임신을 하는 꿈 해몽

  -> 예상하지도 못한 좋은 일이 생긴다는 암시이다.


갓난아이가 출산 되거나 여러 명 모여 있는 꿈 해몽

  -> 성욕을 억제할 수 없거나, 일거리가 많이 생긴다.


기혼여성 출산하는 꿈 해몽

  -> 아기의 울음소리 같이 좋은 소식이 들려 오거나, 큰 기쁨을 암시한다 


실제 임신부가 임신을 하는 꿈 해몽

  -> 아버지를 닮은 건강한 아이를 낳아서 기쁘하게 된다.


임신부를 보는 꿈 해몽

  -> 동업자나 조력자의 도움을 받게 되어 현재하고 있는 일이 번창할 조짐이다.


임신 출산 꿈 해몽 copy coding



동물의 출산을 보는 꿈 해몽

  -> 자신을 모함하려 든 사람이, 당신에게 호된 꼴을 당하게 된다.


코끼리가 뱃속으로 들어와 임신을 하는 꿈 해몽

  -> 문명과 문화의 장이 열리거나, 대업성취, 물질적 풍만, 진리의 보고 등의 좋은 일이 있다는 암시이다.


청룡이 여의주를 물고 뱃속으로 들어와 임신을 하는 꿈 해몽

  -> 결혼한 여자는 임신을 하여 훌륭한 인물을 생산하거나, 사업가는 큰 성과를 얻어서 발전하거나 계약이 성사 된다.


임신한 암컷 호랑이절벽에서 떨어지는 꿈 해몽

  -> 매사가 난관에 부딪혀 곤욕스러운 일을 당할 징조이다.


임신하여 배가 불러지는 꿈 해몽

  -> 재물이 생겨서 생활이 풍요해지거나, 질병에 걸려서 고생하는 반흉반길의 꿈이다.


자신이 실제와 다르게 임신을 한 꿈 해몽

  -> 만사가 침체 상태에 빠지게 되고 정신적으로 피곤함을 느낄 운명이다.


화장실에서 아기를 출산하는 꿈 해몽

  -> 재물과 이득이 늘어나고, 새로운 기회를 잡아서 크게 발전할 길몽이다.


기혼여성이 임신을 하거나 아이를 낳는 꿈 해몽

  -> 남편이 승진하거나 집안에 경사스러운 일이 생기며 목돈이 생길 것이다.


여러 가지 색깔의 돼지새끼 들이 태어나는 것을 보고 출산한 꿈 해몽

  -> 직계가족 중에서 이별을 하거나 자손들이 제각기 다른 사업에 손을 대게 된다.


임신한 남자를 보거나 남성인 자신이 임신한 꿈 해몽

  -> 큰돈이 들어올 횡재수가 있으며 수입이 늘어나고 경제적으로 안정을 찾게 된다.


남자가 임신을 하는 꿈 해몽

  -> 사업이 번창 또는 확장하거나 거래처에서 오래된 돈을 받게 된다.


임산부가 출산을 하려고 신음하는 있는 꿈 해몽

  -> 창조적 생산적인 작업을 하는데 여러가지로 고통을 당하게 될 징조이다.


기타 출산에 관한 꿈 해몽

  -> 새로운 인간관계가 생기거나, 능력이 평가되는 일도 의미하며, 실현되는 것이 즐거움이 따른다는 암시이다.


- copy coding -

 

6. 함수


반복 사용이 가능한 명령어 모음 블록인데 제어문과 다른 점은 제어문은 프로그램 문장에 존재 해야 하지만 함수는 다른 곳에 정의를 해놓고 필요할 때마다 호출을 하여 사용이 가능한 블록이라고 정의 할 수 있습니다.  함수에 값을 전달 할 수도 있고 값을 리턴 받을 수도 있고 단순히 호출만 할 수도 있습니다.

함수를 어떻게 만드는가에 따라 여러 명이 분업도 가능하고 프로그램도 깔끔하게 마무리 할 수 있습니다.

 

6.1 사용자 정의 함수


함수는 껍데기일 뿐이므로 이름만 목적에 맞게 잘 만들면 그것으로 반은 성공 한거고 안에 뭘 채우냐가 중요합니다.

 

6.1.1 함수 정의


함수의 정의는 def를 사용 하고. 함수 블록은 함수 정의 아래에 들여쓰기를 사용 합니다.  함수에 값을 전달 하려면 파라미터를 사용하고 함수를 호출한 곳으로 값을 넘기려면 return을 사용 합니다.  파라미터와 return은 필요 없으면 생략 가능 합니다.

def 함수명(*파라미터)

   수행 명령어

   수행 명령어

       ...

   return 결과 값

 

python study

 


6.1.2 함수 호출


함수 호출은 def로 정의한 함수명에 파라미터를 추가하고 함수에서 return하는 값을 받을 변수를 정의하면 됩니다.

리턴값저장변수 = 함수명(*파라미터)

 

6.1.3 예제


함수는 사용 전에 정의가 되어 있어야 합니다. hello("HongGil")이 먼저 있으면 함수를 찾을 수 없다고 오류가 발생 합니다.  함수가 복잡하면 파일로 만들어 import하여 사용 합니다.

 

#-*- coding: euc-kr -*-

 

def hello(name):

           print(name + " hello!")

 

hello("HongGil")

hello("순이")

결과

(base) F:\Python>python function101.py

HongGil hello!

순이 hello!

 

전달하는 파라미터의 갯수를 모를 경우 “*파라미터이렇게 파라미터를 대표할 수 있는 명칭 앞에 *를 사용 합니다.

def addNum(*nums):

           added = 0

           for i in nums:

                     added += i

           return added

 

numSum = addNum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

print(numSum)

결과

(base) F:\Python>python function102.py

55

 

6.1.4 global


함수 내부에서 사용되는 변수는 명칭이 동일 해도 외부와 무관합니다.  다른 사람이 만든 함수를 import 해서 사용하는데 내부에 있는 변수 명을 알 수 없을 때 동일 한 함수 명이 자신의 코드에도 존재 한다면 진짜 맨붕이 올 수 있기 때문에 전혀 다른 메모리 주소를 사용 합니다.

a = 1

def varTest(a):

           print('1st : ' + str(a))

           a = 2

           print('2nd : ' + str(a))

 

varTest(a)

print('3rd : ' + str(a))

결과

(base) F:\Python>python function103.py

1st : 1

2nd : 2

3rd : 1

난 죽어도 함수 내부에 있는 변수와 밖에 있는 변수를 동일하게 사용하고 싶다.  그러면 global 명령어를 사용하면 됩니다.

위에 있는 코드와 비교하면 알겠지만 global로 선언 하면 함수에도 적용을 하겠다는 의미로 파라미터로 전송하면 오류가 발생합니다.

a = 1

def varTest():

           global a

           print('1st : ' + str(a))

           a = 2

           print('2nd : ' + str(a))

 

varTest()

print('3rd : ' + str(a))

결과

(base) F:\Python>python function104.py

1st : 1

2nd : 2

3rd : 2

 

 

6.1.5 기본 값


함수를 호출 할 때 파라미터에 값을 넘겨주지 않아도 기본으로 설정한 값을 사용하기 위한 방법 입니다.

 

#-*- coding: euc-kr -*-

 

def levelTest(name, score, level = 90):

           if score >= level:

                     print(name + "님 축하 합니다. 테스트에 성공 했습니다!!")

           else:

                     print(name + "님 안타깝습니다. 좀더 노력 하세요.")

 

levelTest("강감찬", 95)

levelTest("홍길동", 30, 30)

결과

(base) F:\Python>python function105.py

강감찬님 축하 합니다. 테스트에 성공 했습니다!!

홍길동님 축하 합니다. 테스트에 성공 했습니다!!

 

6.1.6 return


함수로 부터 리턴되는 값은 꼭 하나일 필요는 없습니다. 콤마(,)를 사용하면 다양한 형태로 여러 개의 값을 받아올 수 있습니다.

 

#-*- coding: euc-kr -*-

 

def returnTest(i, j):

                     k = i + j

                     return i, "더하기", j, k, (i, j, k), {i, j, k}, [i, j, k]

 

r1, r2, r3, r4, r5, r6, r7 = returnTest(10, 20)

print(r1, r2, r3, r4, r5, r6, r7)

결과

(base) F:\Python>python function106.py

10 더하기 20 30 (10, 20, 30) {10, 20, 30} [10, 20, 30]

 

 

 

6.2 람다 함수


람다는 익명 함수라고 부르며 def로 선언을 하지 않지만 함수처럼 사용합니다. 인수(argument)의 제한은 없지만 표현식(expression)1개만 사용 가능 합니다.  람다함수는 오브젝트로 생성되지 않기 때문에 간단하게 사용이 가능합니다.

표현 형식은 아래와 같습니다.

lambda arguments: expression

 

람다를 선언할 때 동시에 값을 설정할 수도 있고 변수에 값을 대입하고 람다에 추가하여 사용할수도 있습니다.

>>> (lambda x : x + 10)(3)

13

>>> k = 100

>>> (lambda x : x + 200)(k)

300

>>> k = 100

>>> a = (lambda x : x + 200)(k)

>>> print(a)

300

 

람다 선언 후 함수처럼 호출 하여 사용 하는 경우

>>> a = lambda x : x + 100

>>> print(a(8))

108

>>> a = lambda x : x + ' 안녕하세요'

>>> a('홍길동')

'홍길동 안녕하세요'

 

인수가 여러 개인 경우

>>> a = lambda x, y, z : x * y * z

>>> print(a(4, 5, 6))

120

 

- copy coding -


1. installer 다운로드

 

1.1 로그인


Visual Studio를 다운로드 받으려면 마이크로 소프트에 계정이 있어야 합니다간단하게 마이크로소프트사에서 만들어도 되고 기존 메일을 사용해도 됩니다계정을 만들었으면 로그인을 합니다.



visual_studio_2017


visual_studio_2017


1.2 Visual Studio 다운로드


현재 Visual Studio 2015는 다운로드 받을 수 없습니다. 마이크로소프트 다운로드 사이트에 가면 다음과 같은 오류 메시지만 볼 수 있습니다.


visual_studio_2017


무료로 사용할 수 있는 Visual Studio 2017 community 버전을 받습니다어디로 접속 하느냐에 따라서 다운받는 화면이 다양한데 하단 2개 정도를 뽑아 봤습니다.


visual_studio_2017


visual_studio_2017


어느 화면이 되었든 비주얼 스튜디오 2017을 다운 로드 합니다.

 

1.3 인스톨러 실행


다운로드 받은 파일은 vs_community__28485899.1552526806.exe 이런 형태인데 설치를 위해 실행을 합니다.


visual_studio_2017


실행 버튼을 클릭 하면 .Net Framework 4.6이상이 필요 하다고 합니다. 시스템에 따라 .Net Framework가 설치 되어 있을 수도 있고 없을 수도 있는데 어째든 .Net Framework 4.6 이상이 필요 하다고 하니 기존에 설치 되지 않았으면 설치 하고 다시 진행을 해야 합니다.


visual_studio_2017


.Net Framework를 설치 하려면 다음 링크를 참고해서 설치 하세요.

 

.Net Framework 4.7.2 설치

 

.Net Framework 설치가 완료 되었으면 다시 인스톨러를 시작 합니다.

실행 버튼을 클릭하면 인스톨러가 파일을 받을 준비를 합니다.


visual_studio_2017


계속 버튼을 클릭 하면 필요한 파일을 다운로드 합니다.


visual_studio_2017



2. C 개발 툴 설치

 

다운로드가 완료되면 이제 실제로 Visual Studio를 설치 하는 창이 보입니다.  워크로드에 다양한 개발 툴들이 보이는데 지금 하려는건 C언어를 테스트 하는 것이니 C++를 사용한 데스크톱 개발을 체크표시를 해줍니다체크표시를 하면 거기에 포함된 항목들이 우측에 리스트 됩니다다른 개발 툴들은 지금 설치하지 않아도 나중에 필요할 때마다 추가 삭제가 가능합니다.

 


visual_studio_2017


비주얼 스튜디오 설치 위치를 변경 하려면 파란색 변경을 눌러 다른 곳으로 수정하면 되는데 저는 그냥 설치 버튼을 클릭 합니다.


visual_studio_2017


설치가 진행 되고 완료되면 로그인을 하라고 합니다.


visual_studio_2017


지금 로그인을 하지 않고 하단에 있는 나중에 로그인을 선택해도 되는데 30일 이후에는 잠겨버리니 귀찮아도 메일 주소와 비번으로 로그인을 진행 합니다.

 

드디어 Microsoft Visual Studio가 모습을 드러냅니다.


visual_studio_2017



3. C 프로그램 테스트

 

이제 본격적으로 C 프로그램을 하나 해보겠습니다.

 

3.1 프로젝트 생성

 

Visual Studio는 프로젝트 단위로 작업을 해야 하므로 귀찮아도 프로젝트를 생성해야 합니다.

  

상단 메뉴에서

파일 > 새로 만들기 > 프로젝트

를 선택 합니다.


visual_studio_2017


새 프로젝트를 설정하는 창이 나타납니다

Visual C++ > Windows 데스크톱 > Windows 데스크톱 마법사

순서로 프로젝트를 선택 합니다.


visual_studio_2017


모두 기본으로 놓고 생성 해도 되지만 이름과 위치를 수정해 보았습니다확인 버튼을 클릭 해서 프로젝트를 생성 합니다선택 창이 하나 더 나오는 군요.


visual_studio_2017


빈 프로젝트를 체크 하면 기존에 체크 되어있던 미리 컴파일된 헤더는 체크 해제 됩니다.

확인 버튼을 클릭 합니다.

 

빈 프로젝트를 생성했기 때문에 생성 후 검정 화면만 보입니다.


visual_studio_2017


3.2 파일 생성

 

C 코딩을 하기 위한 파일을 하나 생성해 봅니다오른쪽 솔루션 탐색기에서 소스파일에 마우스를 대고 우측 버튼을 클릭 합니다.


visual_studio_2017


소스파일 > 추가 > 새 항목

순으로 선택을 해서 새 항목 추가 창을 오픈 합니다.


visual_studio_2017


C++ 파일이 선택된 상태에서 이름을 입력하고 확장자는 .c로 입력하면 C 언어로 작업이 가능 합니다이제 추가 버튼을 클릭해서 파일을 생성 합니다.

파일이 생성 되었으니 간단한 코딩을 해보겠습니다.


visual_studio_2017


코딩이 완료되면 Ctrl + S로 저장을 합니다

이제 실행해 볼까요키보드 Ctrl + F5를 누릅니다.


visual_studio_2017


하단 출력 창에 빌드 상태가 나타나고 성공이 되면 콘솔 창이 나타나면서 결과를 보여줍니다여기까지 성공 했다면 이제 본격적으로 C언어를 학습 하시면 됩니다.

 

 

4. 개발 툴 추가

 

C 언어 이외에 Python이나 Node.js 등도 Visual Studio로 개발이 가능 합니다맨 처음 installer를 이용하여 설치 할때 C++만 선택 하였는데 그때 필요한 항목을 같이 선택 하면 되고 지금처럼 C++만 설치를 한 경우에도 추가를 하면 됩니다.

Visual Studio에서 상단 메뉴 도구 > 도구 및 기능 가져오기를 선택하여 


visual_studio_2017


워크로드에서 필요한 항목을 체크 하거나


visual_studio_2017


시작 메뉴에서 Visual Studio Installer를 선택 하고


visual_studio_2017


Visual Studio Installer 창이 나타나면 설치됨 항목의 수정 버튼을 클릭 합니다.


visual_studio_2017


그러면 위와 같은 워크로드 화면이 나오고 필요한 툴을 클릭 해서 설치 하시면 됩니다.



1···82838485868788···118

+ Recent posts