반응형

안녕하세요 무꼬입니다~


프로그래밍에서 제일 중요한 구문 대표적인걸 꼽으라고 한다면


바로 딱 떠오르는게 조건문반복문입니다. (사실 전부다 중요하죠 ㄲㄲ)


어떤 언어(C,JAVA등)에서든 쓰이고,


조건문의 경우는 이전 강의에서 예제를 보면서 진행을 했고,


이번 강의에서는 반복문의 기본에 대해서 알려드리고자합니다.


조건문은 대표적인게 IF문이 있죠. (그 외 응용을 해서 사용가능한 조건문도 있습니다.)

짚고 넘어가자면 조건문은 '만약에' 라는 조건에 충족되면 IF~end IF 사이에 있는 명령을 수행합니다.

Else문이 추가가 된다면 '만약에'라는 조건이 충족되지 않았을때 Else~end IF 사이에 있는 명령을 수행하죠.


그럼 반복문이라 하면,

말 그대로 반복을 하는 것입니다.


반복문은 대표적이라 할 것 없이 

Do...Loop

For

While 문 등이 있습니다.


반복문은 좀 많네요?


그 이유는 적재적소에 따라 다른 반복문을 사용해야 할 필요가 있단 뜻이지요.

하지만 모든 반복문은 메커니즘은 같다는 것.!


For 문은 조건식이 도달할때까지 반복을 하는 반복문입니다.


기본 식을 한번 보실까요


For i=1 to 10

(반복될 내용)

Next i


자, 기본 For문입니다.

하나씩 스토리텔링 형식으로 얘기해볼게요


'i'라는 아주 성실한 정수형 변수가 있었습니다.

그런데 이 i 라는 녀석이 야망이 커서

자기가 가지고 있는 1원이 10원이 되길 원해요. (초기값 i=1 to 10)

그 i라는 녀석이 1원을 가지고 일을하기 시작했어요. (반복될 내용)

그는 일을 한번 하고 1원을 벌었어요.

그리고 또 다시 반복해서 (반복될 내용 두번째)

2원을 벌었고,

또 일을해서 3원을 벌었어요 (반복될 내용 세번째)

그렇게 10원까지 10번의 반복을 거쳐

10원을 벌었습니다!


변수 'i'의 입장에서 본 For 반복문 스토리텔링입니다^^


하지만 사실상 프로그래머 입장에서는 i 입장보다는 반복될 내용이 중요하죠.

이해하기 쉬우시라고 이렇게 써봤습니다.


자, 아무튼 그렇게 10번 반복을 했습니다!

이해하기 쉽게써서 간단 하죠?


자, 그러면 반복문을 배울때 항상 하는 구구단 만들기를 해볼게요!


기본 폼입니다.


그리고 sub Form_Load. 폼이 로드되었을때 실행될 명령어를 입력해볼게요.



레이블1의 캡션에  "2 곱하기 " & i & "는" & (2 * i)

이걸 감으로 이해 하셨을 수도 있고,

모르실 분도 계셔서 잠깐 설명드릴게요.


"2 곱하기" 이부분은 그냥 문자열 그대로 표현을 해준거죠! 다들 아시리라 믿고,

뒷 부분

& i & "는" & (2 * i)

이건 뭐라고 해석을 해야 되냐하면


'&' 연산자의 경우 변수와 변수사이(문자열과 문자열사이 혹은 변수와 문자열사이)를

이어주는 역할을 합니다.


그리고 괄호 부분의 (2 * i) 내용은

2 × i값을 하라는 뜻입니다.

수식 내용 그대로를 계산을 하는 것이죠.


그럼 i값이 1일 경우 (2 * i)의 값은? 2가 되겠죠?

그럼 i값이 9일 경우 (2 * i)의 값은? 18이 되겠죠?

괄호안의 변수의 내용에 따라 출력되는 값이 달라진다는 말씀!

그럼 만약 i 값이 3일 경우 전체적으로 출력될 문자열은?

2 곱하기 3는 6

이라는 문자열이 출력되겠죠.

결국 Label1.Caption = "2 곱하기 3는 6"

이렇게 나온다는 것입니다~!


그럼 실행을 해볼까요?

아마 실행 되자마자 Form_Load서브가 실행되어서 값이 출력 될거에요.


어라? 근데 뭔가 이상하죠?


왜 2곱하기 9만 나왔을까요?



그 이유는 For문이 10번 돌면서

Label1.Caption 값을 계속 10번 바꿨을 테죠.

그리고 마지막 9번째에는

Label1.Caption = "2 곱하기 9는18"

이라는 것을 출력했을테고...


그럼 Label1.caption에

2 곱하기 1는 2

2 곱하기 2는 4

2 곱하기 3는 6

2 곱하기 4는 8

.....

...

2 곱하기 9는 18


이렇게 나오게 할 수는 없을까요?



물론 있습니다!

아래 와 같이 코딩을 하면 되지요~!


Label1.caption = Label1.caption & "2 곱하기 " & i & "는" & (2 * i)

뭐가 좀더 추가 되었죠?

Label1.caption 값 안에 Label1.caption 자기자신이 가지는 값 그리고 "2 곱하기 " & i & "는" & (2 * i) 를 출력하라

라고 코딩을 했습니다.


그럼 이대로 실행해볼까요?

아마

2 곱하기 1는 22 곱하기 2는 42 곱하기 3는 6....

이렇게 한줄로 죽~~~~ 나올거에요...ㄷㄷㄷ

이게 뭐야..알아보기 힘들잖아..




그럼 뭔가 엔터를 칠 수 있는 인자가 있다면 좋겠죠.


이걸 개행문자라고 합니다.

키보드의 엔터키가 있죠

이 엔터키가 줄바꿈을 하는게 아니라

사실 어떤 문자를 입력합니다.

그게 바로 개행문자 이지요!


나중에 배울텐데 Ascii(아스키코드)로는 13번에 해당합니다.

그걸 컴퓨터가 알아먹게 바꿔주면

chr(13)

chr 이라는 함수(기능)인데요.

이건 컴퓨터 내에 등록되어서 숫자로 순번이 매겨져 있는 문자를 표시하게 하는 함수입니다.

13번째에 등록된 문자는 바로 엔터키를 쳤을때 입력되는 개행문자입니다!

그럼 chr(13) 이 코드를 Label1.Caption이 출력될 값이 끼워 넣어주면 되겠지요?



이렇게요.


Chr() 함수는 타 언어도 모두 통용되니까 이렇게 알려드렸구요

사실 비주얼 베이직에서는 개행문자를 출력하는 함수가 많아요.





 Chr(13) 과 같은 기능을 하는 함수

 vbNewLine

 vbCrlf

그럼 이렇게도 바꿀수 있다는 얘기겠죠



vbcrlf 를 사용해서 개행하기


vbNewLine 을 사용해서 개행하기



자 그럼 실행 해볼게요~


짜잔~ 제대로 나온게 보입니다~


이제 For문에 대해서 아셨으니까

나머지 반복문들도 쉽게 하실 수 있으세요.


마지막으로 Do..Loop문을 한번 볼까요?

For문은 해당 조건식에 맞으면 밖으로 빠져나오게 되어 있는 구조이죠.

하지만 Do Loop 문은 빠져 나갈 수가 없어요.


예를 들어


Do

msgbox "안녕?"

Loop

이라는 코딩을 했다면

메세지 박스로



이 메세지가 무한으로 루프되겠죠...



그래서 보통 Do Loop 문은 IF문을 함께 씁니다.

Do

   i=i+1


      If i >= 10 then 'i 값이 10 이상일때

         exit do 'Do 구문을 빠져나와라

      end if

Loop

이렇게 사용할 수가 있습니다.

해당 조건이 되면 DO 구문을 빠져나와라.



이해하셨죠?

그럼 오늘도 어김없이 퀴즈 나갑니다~

해답이 궁금하신분들은 댓글 달아주세요


오늘은 Do Loop문을 이용해서

구구단을 만들어 봅시다.

단 폼형식은



텍스트박스 하나, 커맨드버튼 하나, 레이블하나

이렇게 해서 텍스트박스에 숫자를 입력하고 커맨드버튼을 클릭하면,




이렇게 결과물이 나오게 해봅시다!

단 Do..Loop문으로 해결해야 합니다.






그리고 참고적으로

연산자라고 하는게 있는데 알아두세요


연산자

 설명

예제 

 +, -

더하기, 빼기 

 3+ 5

 *, /

곱하기, 나누기 

 3* 6

 mod

나머지

 3mod2  → 1

 &

변수와 변수 사이 연결

 3 & 32

 And

조건 A 와 B가 둘다 참일 경우 

 a=1 And b=2    a가 1이고 b가 2가 맞다면 True 아니면 False

 OR

조건 A 와 B가 둘 중 하나만 참일 경우 

 a=1 OR b=2   → a가 1이거나 b가 2 둘중 하나가 맞다면 True 아니면 False

 >, <

비교구문 

 비교 할때 보다 값이 미만일때 초과일때  A < 13  'A가 13미만일때

 >=, <=

비교구문 

이상일때 이하일때  A <= 13 'A가 13보다 이하일때

 <>

비교구문 

C 언어에서는 != 라고 표현하죠.

양쪽의 값이 일치하지 않을때   A <> 13 'A가 13이 아닐때


반응형
반응형

오늘은 변수의 심층 이해를 돕는 강좌를 시작하겠습니다.


변수에는 전역변수(Global)와 지역변수(Local)가 있습니다.


사전적의미로 단어로만 보시면


Global 글로벌~ 세계적인; 지구의, 전반적인

Local 로컬~ 지역의


자, 그럼 지역안에서만 쓰는 변수가 지역변수고,

지역과 지역간에도 모두 소통되는 변수가 전역변수라는걸 대강 감이 오시죠?


그렇다면, 지역 변수와

전역변수는 어떻게 규정 되느냐.


비주얼 베이직내에서는

각각의 서브가 있죠?


이 서브들을 하나의 마을이라고 생각해보세요.

그럼 각각

Command1_Click 이란 마을

Command2_Click 이라는 마을

form_Load 라는 마을

Label1_Click 이라는 마을


하지만 이 비주얼베이직 세상에서는 사람이 아니라 '변수'라는 동물이 살고 있어요.

그 마을들 중에

Command1_Click 이라는 마을에

각각 이름 아래와 같은 이름을 가진 변수가 태어났어요 (변수 선언)

Dim Temp_Str As String

Dim Temp_Int As Integer



각각 변수 이름과 각각 개개인이 해야될 역할을 전부 입력해주었죠?


그럼 이 변수라는 동물들이 활동을 하기 시작합니다~!

그런데 변수라는 녀석들은 멍청해서 마을 밖으로 절대 나가려고 하질 않아요.

그러다보니

다른 마을에서는 Temp_Str이라는 녀석과 Temp_Int라는 녀석의 존재를 절대 모르죠.

오로지 Command1_Click 이라는 마을에서만 이 두녀석의 존재를 안다는 것이죠.


이게 바로 지역 변수입니다.


다른 마을에서 관여를 할 수도 없고, 다른 마을로 이전 할 수도 없는 녀석이 지역변수!

오로지 그 마을(Sub)에서만 쓰이고,

그 마을(Sub)가 종료 되면 같이 산화 되어버리죠(값 초기화).


그러면 코딩으로 설명 하면 어떻게 될지 볼까요?



그럼 해당 폼을 실행을 해보면?


우선 Command1 (A확인)을 누르면



Dim Temp_Str As String

Dim Temp_Int As Integer

Temp_Str = "안녕하세요 저는 지역변수입니다."

Temp_Int = "1234"

이녀석들이 실행 되겠죠?

그럼 변수도 선언되었고, 각 변수에 값도 들어가있는 상황입니다.


그다음에 Command2 (B확인)을 누르면


 Label1.Caption = Temp_Str

이 명령이 실행 되겠죠?


그러면, 예상되는 값은

label1의 Caption 값이 "안녕하세요 저는 지역변수입니다." 가 나와야 겠죠?


하지만 결과는 아무것도 없는 ""가 뜹니다. 비어있는게 뜨죠.



이유는 아까 말씀드렸다 시피,


서브안에서 선언이 된 변수는 서브가 종료되면('End Sub') 산화되어 없어집니다.

다른 서브에서 관여 할 수가 없는거죠.




한번더 보강해서 설명을 하자면

상위 계층에서 선언된 변수는 그 하위 계층에서도 사용이 가능합니다.(물론 서브가 종료되기 전까지.)

Form1에서 선언된 지역변수는 Form2에서는 사용이 불가능합니다.

즉, 같은 계층을 포함한 하위 계층에서 선언된 변수는 다른데에서 사용을 할 수 없습니다.


어렵나요?


그럼 마을을 예로 설명드리면


나라에서 만든 법은 각각 도, 시, 마을들에게 전파되어 법으로 인정받고 사용이 가능하지요?

그럼 '도'안에서 만들어진 법은 '시', '동', 마을에 전파되어 사용을 할 수 있습니다.

그럼 마을에서 만들어진 법은 나라 전체에 통용이 될까요?

안되죠.

우물 안에서만 쓰는 법(변수)라는 말입니다.


전체적으로 통용이 되려면 전역변수로 선언을 하든지,

아니면 최상위 계층에서 선언을 하게되면 모든 서브에서 사용이 가능하게 됩니다!


이해 하셨나요?


자, 그럼 한번에 전역 변수와 지역변수에 대해 설명을 드렸죠?


그럼 위 코딩에서 제대로된 코딩을 하려면 폼자체가 Command1과 Command2보다 높은 상위계층이니까

아래 처럼 코딩을 하면 제대로 되겠죠



한번 테스트 해보세요~!


그리고 이번 강의에서는 문제를 하나 내겠습니다.


아, 그전에

'Msgbox' 라는 함수가 있는데,

간단하게 이번강의에서 사용방법만 설명하자면


Msgbox ("메세지내용입력")

이렇게 입력하시고 실행해보시면


폼이 로드될때 메세지창이 이렇게 뜹니다.


물론 Command1_Click 서브에 넣게 되면

커맨드버튼1을 클릭했을때 위 메세지가 뜨겠지요?


그럼 문제입니다.



텍스트 박스를 하나와

커맨드 버튼 하나를 만드세요


그 다음에 텍스트 박스에 숫자를 입력하고 커맨드 버튼을 누르면

메세지박스에 해당 텍스트 박스에 입력되었던 문자열이 출력되게 해보세요!

반응형
반응형

참고용입니다~


문제 내기 프로그램입니다!


IF문과 변수를 어떻게 쉽게 이해하고, 응용 할지에 대해 생각하다가 글을 싸지르네요 ㅋㅋ


우선 폼 형태 입니다.

이렇게 바꿔 주시고...

코딩창!




솔직히 어느정도 숙련이 되셨거나 프로그래밍으로 밥벌이하시는 분들입장에서는

정말 비효율적인 코딩이죠 ㅎㅎ

하지만 초심자들을 위해 무식한 방법으로 코딩 해봤어요



최소한으로 줄인다면 커맨드버튼을 배열로 설정하고, 코딩을 하면 아래와 같겠죠.


하지만 저렇게 하면 아직 모르시는 분들이 더많으니..차차 알려드릴게요.

두개를 비교하면서 깨우치면 당신은 천재.





반응형
반응형

안녕하세요 무꼬입니다.


기초부터 탄탄하게 이해하기 쉽게 강좌를 한번 써보려고 합니당!


오늘 처음 배우실 것은


1. 폼창 그리기 (기본 개체들을 폼에 그리는 방법)

2. 개체들에게 기본 코딩 명령 넣기

3. 변수형에 대한 짤막한 설명



1. 폼창 그리기


기본 개체들을 폼에 그리는 방법입니다.


비주얼 베이직의 기본 화면입니다.



왼쪽편에 자리를 차지하고 있는 녀석이 도구상자입니다.

순서대로

포인터, 픽쳐박스

라벨, 텍스트박스

프레임, 커맨드 버튼

체크박스, 옵션버튼

콤보박스, 리스트박스

수평 스크롤바, 수직 스크롤바

타이머, 드라이브 리스트

디렉터리 리스트, 파일리스트

모양상자, 선

이미지, 데이터

OLE 개체


이렇게 있습니다.

볼릭체로 굵게 해둔게 기초강좌에서 제일 많이 쓰이는 것이니 참고해두세요.


그리고 이녀석은 폼창.

이곳에다가 도구상자에 있는 녀석들을 가져와서 그리기(개체 배치)를 할겁니다.



그리고 오른쪽에 자리하고 있는 속성창, 레이아웃창입니다.

속성은 각 개체가 가지고 있는 속성을 대부분 알려주고 있습니다.


비주얼베이직이 편한것은,

다른 언어에비해 기본 속성이 개체별로 지정이 되어 있어서,

편리하다는 겁니다.(반대로 말하면 무겁죠. 프로그램 자체가)


무슨말이냐면,

조물주(당신)가 사람(개체)을 만드는데,

이름, 성별, 체격, 특징, 특기들을 조물주인 당신이 하나하나 만들어야 하겠죠?

하지만 사람이라면 기본적으로 사지가 있고, 눈,코,입,귀가 있습니다.

이런 기본적인 속성을 비주얼 베이직에서는 기본으로 입력이 되어 있다는 거죠.

그럼 조물주 입장에서는 그 사람의 특기와 해야할 일만 지정해주면 아주 편하겠죠?


물론 특별한 경우 기본 속성도 바꿀 수 있습니다.



무튼,

기본적으로 위 세가지를 가장 많이 보게 되고 사용하시게 될 겁니다.


그럼 폼창에 간단하게 원하는 것을 그리기를 해볼게요.


우선 C언어에서 가장 많이 하는

"Hello World!" 문구를 나타내는 코딩을 목표로 그리기를 해나갈게요.




도구상자에서 라벨을 클릭해서,

폼창에 보기 좋게 그려줍니다.(드래그 앤 드롭)



[결과물]




자 그럼 기본적인 개체 그리기를 배웠으니, 아래와 같이 만들어 봅시다!




자, 성공하셨나요?

그럼 이제 Label1을 클릭하고, 속성 창으로 한번 눈을 돌려볼게요.



속성창에 보시면


 속성

값 

 (이름)

 Label1

 Alignment 

 0 - 왼쪽 맞춤

 Appearance

 1 - 3D

 AutoSize

False

이런 식으로

각 속성에 따라서 값이 지정되어 있는게 보이시죠?


이름은 해당 선택된 라벨의 이름을 뜻합니다.

그리고 Label개체에서 중요하게 보셔야 할 부분이

Caption 속성입니다.


Caption사용자에게 보여지는 부분입니다.

라벨(Label) 개체의 경우 보통 프로그래밍에서 사용자에게 설명하거나

문자열을 보여주고 싶을때 자주 사용합니다.


그럼 Label1의 Caption 값을 Hello World! 라고 입력하신뒤 엔터를 눌러보세요


위 그림과 같이 되었나요?



그럼 아래 처럼 해보세요!


아 참고로

textbox개체combo개체는 'Caption' 아니라

'text'속성에서 수정이 가능합니다.


자, 그럼 기초 1-1강은 여기서 끝입니다~!



2. 개체들에게 기본 코딩 명령 넣기

자, 그럼 이제 기본적인 배치는 끝났으니 기본 코딩을 잠깐 배워 볼까요?


인사하기 커맨드버튼을 눌렀을때

'Hellow World!' 라고 쓰여있는 라벨이 다른 문자열로 바뀌게 해볼게요.


그럼 인사하기 버튼을 더블클릭 해봅시다.


그럼 아래와 같이 코딩창이 뜨는데요.


간단하게 보면

Private sub Command1_Click() 

Command1 이라는 이름을 갖는 개체가 클릭 당했을 경우(Command1_Click)의 지역서브(Private sub)를 만든다.

라고 해석할 수 있습니다.

Private , Public 과 같은 전역, 지역 함수에 대한 개념은 나중에 설명드릴게요.



End Sub

여기까지 읽어 들이고 Command1_Click() 에 대한 서브를 마쳐라. 라는 뜻입니다.




그럼 저 두 문장 사이에 어떤 명령을 입력하면 되겠다 라는 감이 오시나요?



그럼 Command1 버튼을 클릭했을때 라벨에 쓰여있는 문자열을 바꾸도록 해볼게요.

아래와 같이 입력해주세요!

해석을 해보면

label1 속성중 Caption 속성을 "무꼬 블로그에 오신것을 환영합니다." 라는 문자열로 바꾸라는 뜻이에요.


그리고 기본적으로 문자와 문자열은 쌍따옴표 "" 안에 입력해야 합니다!

그렇지 않으면 그 문자 자체를 '변수' 라는 녀석으로 인식을 합니다.


그래서 문자나 문자열은 "" 안에 입력해주어야

아하, 쌍따옴표 안에 있는건 문자열(문장)이구나! 라고 생각하고 문자열로 인식합니다!


자 그럼 테스트 한번 해볼까요?


간단하게 테스트 하는 방법은


위에 보이는 시작버튼을 누르시면 됩니다.



그럼 지금까지 만들었던 프로그램이 실행 되었죠?




그럼 코딩했던대로 인사하기 버튼을 눌러 봅시다.


짜잔, 무꼬 블로그에 오신것을 환영합니다!


결과가 나왔습니다~

아, 저랑 폼이 왜 다르게 나왔냐고 물으신다면..(저는 윈7 테마를 이걸로 사용하고 있어서 그런거니 다를수 있어요.)


자 그럼, 창을 닫아주시고..

다음 강좌로 넘어갈게요.




3. 변수형에 대한 짤막한 설명


변수는 기본적으로

숫자형태로는 Integer, Long

문자 형태로는 String

참/거짓(부울)으로는 Boolean

이 있습니다.


그외에 Double, Byte, Object 등 변수 자료형이 많은데


지금은 기초를 다듬는 중이니, 굳이 설명안드리고,


Integer, Long, String, Boolean 만 설명 드릴게요.


갑자기 잘나가다가 이게 뭐냐? 라고 물으실텐데,


방금 1-2강에서 보여드린 

Label1.Caption = "무꼬 블로그에 오신것을 환영합니다."

이 코딩 내용 기억하시나요?


"" 쌍따옴표 안에 들어간 내용은 문자열이라고 말씀드렸죠?

그럼 변수형은 String이 되겠죠?


지금 그냥 이게 뭔 멍멍이 짖는 소리인가 하시면서 보시면 됩니다. ㅋㅋ


그럼 Integer는 영어 단어 그대로 '정수형'을 뜻하고,

Long은 '실수형'을 뜻합니다.


어렵게 말하면 변수라는 선언시 자료형을 미리 선언해주고,

필요한 자료형만 들어가게끔 최적화 시켜주는 작업. = 통칭 변수 선언

이라고 하는데요.


쉽게 말해서,

본인이 그릇을 만든다고 가정을 해요. (=변수 선언 준비)

그릇에 'MessageText'라고 이름을 붙입니다. (=변수 이름 설정)

그다음에 그 그릇에 무얼 담을지 분류하기 쉽게 포스트잇으로 붙여 놓는다고 가정할게요.

과일만 담을지, 고기만 담을지, 아니면 다른 그릇을 담을지...(=변수 자료형 설정)


그걸 컴퓨터가 알아먹게 언어로 바꾸면


Dim MessageText as String

라고 선언해줄 수 있어요.


'MessageText' 라는 변수명을 가지면서 '문자열(String)'만 받아들이는 변수를 선언한다!

라고 말해주는거죠.


예제가 어렵나요? 허헣...


저렇게 분류해주는 이유는 나중에 코딩을 할 때,

프로그램 자체가 꼬이는 것을 방지하기도 하고,

각 변수 자료형에 따라서, 그 그릇의 크기를 설정한다고 봐야해요.

예를 들어 사과하나만 담을 건데, 큰양동이같은 그릇은 필요가 없죠?(메모리 낭비)

반대로 서류작업할 문서 A4용지로 만들었는데, 밥그릇에 그걸 보관하기는 애매하죠?

(컴퓨터는 저런식으로 변수형과 맞지않는 값이 들어오게 되면 에러를 띄웁니다.)


그래서 미리 변수에게 그 그릇의 크기를 설정해주는 작업이 변수선언이라고 보시면 됩니다!

문자열만 받을 변수는 String

정수형만 받을 변수는 Integer

실수형만 받을 변수는 Long

참/거짓을 받을 변수형은 Boolean 




대충 이해 하셨죠?

아마 다른 블로그 강좌에서는


비베 자료형

자료형

크기

값의 범위

접미 문자

Byte

1바이트

  0 ∼ 255까지

 없음

Boolean

2바이트

  True, False

 없음

Integer

2바이트

  -32,768 ∼ 32,767까지

 %

Long

4바이트

  -2,147,483,648 ∼ 2,147,483,647까지

 &

Single

4바이트

  음수 : 약 -3.40*1038 ∼ -1.40*10-45

  양수 : 약 1.40*10-45 ∼ 3.40*1038까지

 !

Double

8바이트

  음수 : 약 -1.79*10308 ∼ -4.94*10-324까지

  양수 : 약 4.94*10-324 ∼ 1.79*10308까지

 #

Data

8바이트

  100년 1월 1일 ∼ 9999년 10월 31일까지

 없음

Currency

8바이트

  -922,337,203,685,477.5808 ∼ +922,337,203,685,477.5805

 없음

Object

4바이트

  모든 객체 참조 가능

 없음

String

10바이트+문자열 길이

  약 65,400바이트까지

 $

Variant

가변적

  숫자 : 16바이트(Double형 범위내 모든 숫자)

  문자 : 22+문자열 길이(변수길이 스트링과 같은 길이)

 없음

이런식으로 처음 접하시는 분들은 뭔소린가 싶을 표들이 보일거에요.


뭐 나중가면 이게 그냥 대강 머릿속으로 들어와요.



자, 그럼 이걸 어떻게 사용하느냐~


2강에서 뵙겠습니다 ㅎㅎ



반응형
반응형



 빌게이츠,마크주커버그,드류휴스턴"놀라운 힘"

이 나라 모든 사람들이 컴퓨터 프로그래밍을 배워야 하는 이유는?
사고하는 법을 배워야 하기 때문이다.

 

 

 

프로그래머가 아니더라도 프로그래밍은 배워야 합니다~라는 주제로 시작하는 동영상이에요!

 

전 프로그래밍을 하는 입장에서 되게 흥미가 생거 보게 되었다가 포스팅하게 됩니다 ㅎㅎ

 

우리 생활의 전반적인 모든 곳에는 프로그래밍이 깔려있습니다. ㅎ

 

하지만 프로그래밍 언어를 일반인중에 읽고 쓸 수 있는 사람은 몇이나 될까요? 

 

외국 기업에는 이런 인재들의 창의력 발굴을 위해 최고의 환경을 제공해줍니다~

 

우...나도 외국에서 태어날걸...ㅋㅋ

 

프로그래밍은 미래의 마법사입니다.


반응형
반응형

안녕하세요 무꼬입니다~


제가 블로그를 운영하면서,

스파이더(spider)와 크롤러(crawler)에 대한 정보가 필요해져 이리저리 찾아보다가 2010년에 이지넷에 올라와있는 정보를 공부하기위해서 잠시 인용해둡니다 ㅎㅎ

여러분도 공부하기위해 필요하시다면 참고하도록 하세요~


출처는 이지넷 http://www.eznetsol.com/07/06.php






1.스파이더(spider),크롤러(crawler)란 무엇인가?

스파이더(spider) 혹은 크롤러(crawler)라고도 불리는 로봇은 인터넷에 있는 웹페이지(웹문서)를 방문해서 수집하는 일을 합니다. 이 때 한 페이지만 방문하고 마는 것이 아니라 그 페이지에 링크되어 있는 또 다른 페이지를 차례로 방문합니다. 이처럼 링크를 따라 웹(web:거미줄)을 돌아다니는 모습이 마치 거미와 비슷하다고 해서 스파이더라고 부르는 것입니다.

참고로 각 검색엔진의 로봇에는 고유한 이름이 존재하며, 네이버 로봇의 이름은 cowbot이라고 합니다.

2.스파이더(spider),크롤러(crawler)가 하는 일은?

엄 청난 분량의 웹문서를 사람이 일일이 색인을 작성한다는 것은 불가능에 가깝습니다. 때문에 웹문서 검색에서는 사람이 일일이 색인을 다는 대신 프로그램이 이를 자동으로 수행해 줍니다. 색인작업을 하기 위해서는 우선 색인의 대상이 될 웹문서를 수집해야 합니다.
웹문서를 자동으로 수집해 주는 역할을 하는 것이 바로 로봇이라는 프로그램입니다.

3.스파이더(spider),크롤러(crawler)와 웹사이트(디렉토리)검색,웹문서검색의 관계는?

대 부분의 검색엔진은 "웹사이트(디렉토리)검색"과 "웹문서검색" 서비스를 병행하고 있는데 디렉토리(웹사이트)검색결과에 나오기 위해 홈페이지등록을 하는 것이고 자의든 타의든 홈페이지등록이 되어 있지 않은 경우에는 웹사이트( 디렉토리)검색결과에 나오지 않습니다.

홈페이지가 검색엔진에 등록된 경우 얼마 후에 그 검색엔진의 로봇은 홈페이지를 방문하여 문서를 수집해 갑니다.

홈페이지가 등록되어 있지 않은 경우에도 스파이더가 홈페이지를 방문하여 문서들을 수집해 갈 수 있습니다.

이렇게 수집된 문서들은 색인과정을 거친 후 검색창에 검색을 한 경우 관련 문서들을 "웹문서"검색결과에 나타나게 됩니다.

4.스파이더가 내 홈페이지의 문서들을 수집하게 하자

인 내심을 가지고서 기다리면 언젠가는 홈페이지를 방문하여 문서를 수집,색인하게 된다. 그러나 색인신청을 하는 방법도 있으므로 참조하도록 하자. 대부분의 메이저급 검색엔진들에서는 구글과 코리아와이즈넛의 웹문서검색서비스를 이용하고 있다. 과거에는 구글의 웹문서검색서비스를 많이 이용했으나 요즘에는 크게 구글,코리아와이즈넛,자체 웹문서검색서비스를 이용하고 있다. 특히 코리아와이즈넛의 웹문서검색서비스를 이용하는 검색엔진들이 늘어가고 있는 추세다.

구글에 URL을 등록하자 : http://www.google.co.kr/intl/ko/add_url.html
코리아와이즈넛에 사이트를 등록하자 : http://www.wisenut.co.kr/submit/

구글과 코리아와이즈넛의 웹문서검색서비스를 이용한 경우를 보자. 구글의 웹문서검색서비스를 이용한 경우 웹문서검색결과 우측에

코리아와이즈넛의 웹문서검색서비스를 이용한 경우 웹문서검색결과 우측에

란 로고가 있다.

각 검색엔진에 웹사이트(디렉토리)등록 못지 않게 메이저급검색엔진에 웹문서검색서비스를 제공하고 있는 구글과 코리아와이즈넛에 URL을 등록하여 이들로부터 서비스를 받고 있는 검색엔진의 웹문서검색결과에 자신의 홈페이지가 검색되도록 하자.

5.로봇 배제방법

검색로봇의 문제점


로 봇이라는 프로그램이 네트워크를 돌아다니게 되면 자칫 네트워크에 엄청난 트래픽(Traffic)이 발생할 수 있습니다. 즉, 네트워크에 과부하가 걸려 특정 사이트에 접속이 잘 되지 않거나 속도가 느려지는 문제가 생길 수 있습니다. 또한 동호회 명단, 직장 전화번호등 원치 않은 정보가 검색엔진에 노출되는 결과가 생길 수도 있습니다.

해결방안

1) 첫 번째로 어떤 사이트를 보려면 ID와 비밀번호가 필요하도록 만드는 방법입니다.

이 경우 로봇은 해당 사이트의 ID와 비밀번호를 가지고 있지 않기 때문에 접근할 수가 없게 됩니다. 이 방법은 로봇의 접근을 직접적으로 배제하는 강력한 수단이지만 사이트를 사용하는 사람들도 ID와 비밀번호를 입력해야 하는 불편함이 있습니다. 간혹 ID와 비밀번호로 막아놓은 페이지가 네이버의 웹문서 검색에 노출된다는 문의가 들어오기도 합니다.

하지만 링크로 연결되지 않는 한 네이버의 로봇은 비밀번호로 보안을 걸어놓은 문서에 접근하지 못합니다. 비밀번호로 보안을 걸어놓았는데도 웹검색에 노출이 되는 경우는 어떤 사람(주로 내부자)이 해당 문서의 URL을 다른 웹페이지에 적어놓았기 때문일 가능성이 큽니다.

2) 두 번째로 로봇 배제(Robot exclusion) 표준을 따르는 방법이 있습니다.

로봇 배제 표준이란 말 그대로 웹문서를 수집해 가는 로봇을 배제한다는 뜻입니다. 로봇의 배제와 관련된 내용을 적어 놓은 robots.txt 파일을 사이트의 최상위 주소(서버 루트 디렉토리 예:www.gaseo.com/robots.txt)에 저장하면 됩니다. robots.txt를 서브디렉토리에 놓는 경우 효력이 없다는 사실에 주의하세요.예를 들어, www.yourhost/~mypage 밑에 robots.txt가 있어도 이는 아무런 효력을 갖지 못합니다. 로봇은 오직 루트 디렉토리의 robots.txt만을 참조할 뿐입니다. 로봇의 접근을 어디까지 허용할 것이냐에 따라 robots.txt에 들어가는 내용은 달라집니다.로봇 배제에 대한 보다 자세한 내용은 http://www.robotstxt.org에서 확인할 수 있습니다.

(1) 모든 로봇을 배제하고 싶을 때

User-agent: *
Disallow: /

(2) 모든 로봇을 허용하고 싶을 때
이 경우에는 “robots.txt”를 작성할 필요가 없으나, 굳이 작성을 하자면 다음과 같습니다.
( (1)과 비교했을 때 “/”가 빠져 있습니다.)

User-agent: *
Disallow:

(3) 모든 로봇에게 서버의 일부분만을 제한하고 싶을 때

User-agent: *
Disallow: /my_photo/
Disallow: /my_diary/

이렇게 작성하면 로봇은 my_photo, my_diary라는 폴더에 속한 웹문서에 접근할 수 없습니다.

(4) 특정 로봇만을 배제하고 싶을 때
아래의 예에서는 “EvilRobot”이라는 이름을 가진 로봇만을 배제하게 됩니다.

User-agent: EvilRobot
Disallow: /

(5) 특정 로봇에게만 접근을 허용하고 싶을 때
아래의 경우 Cowbot만이 웹문서를 수집해갈 수 있습니다.

User-agent: Cowbot
Disallow:
User-agent: *
Disallow: /

3)세 번째로 메타태그를 이용하는 방법

“robots.txt” 를 작성하는 것과 유사한 방법으로 HTML문서의 와 태그 사이에 라는 메타태그를 추가하면 로봇은 웹문서를 가져갈 수 없습니다. 이 방법은 다소 번거롭기는 하지만 문서 하나하나에 대해 정확하게 명시를 해주기 때문에 가장 확실하게 로봇의 접근을 막을 수 있는 방법입니다.



그럼 저도 크롤러에 대한 공부를 하러가보겠습니다

다들 블로그 열공하세요!! ㅎㅎ 이상 무꼬였습니다!

반응형

'개발 & 강의 > 스크랩' 카테고리의 다른 글

[영상] 프로그래밍을 배워야 하는 이유는?  (2) 2014.10.12

+ Recent posts