-
2017.05.31
원형 큐 (Circular Queue) 예
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106// 원형 큐 예 #include #include typedef int element;typedef struct { element *queue; int front, rear; int size;} QueueType; void init(QueueType *q) { q->front = q->rear = 0; q->size = 2; // 원형..
-
2017.05.31
중위 표기 수식을 전위 표기 수식으로 변환하는 프로그램
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 12..
-
2017.05.31
samesetp
(defun samesetp (lis1 lis2) (if (and (not (null lis1)) (not (null lis2))) (let ((x (first lis1)) (y (first lis2))) (cond ((and (listp x) (listp y)) (and (samesetp x y) (samesetp (rest lis1) (rest lis2)))) (t (and (eq x y) (samesetp (rest lis1) (rest lis2)))))) (= (length lis1) (length lis2)))) (defun samesetp (lis1 lis2) "Another Version of samesetp." (if (null lis1) (null lis2) (let ((x (remove..
-
2017.05.30
Tic Tac Toe Game
;; Defining global varaibles and constants (defconstant One 1) ;; human(defconstant TheOther 10) ;; computer (defvar *Opponent* One)(defvar *Computer* TheOther) (defvar *Triplets* '((1 2 3) (4 5 6) (7 8 9) ;; Horizontal Line (1 4 7) (2 5 8) (3 6 9) ;; Vertical Line (1 5 9) (3 5 7))) ;; Diagonal Line ;; Main ;; Initialization: Creating a board (defun makeBoard () (list 'Board 0 0 0 0 0 0 0 0 0)) ..
-
2017.05.30
배열 요소 정리
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include using namespace std; int main() { const int num =5; int test[num]; cout
-
2017.05.30
인수와 레퍼런스
* 인수와 레퍼런스 - 포인터를 함수의 인수로 사용하면 호출자의 변수를 변경할 수 있음. - 하지만 포인터는 메모리 주소를 직접 다루기 때문에 어려움. - 레퍼런스(reference) : 변수등으로 초기화한 식별자. 형명 앞에 &를 붙여서 선언함. 형명& 레퍼런스명 = 변수; // 레퍼런스명에는 식별자를 사용함. int a; int& rA = a; // 레퍼런스 rA를 변수 a로 초기화함. -> 이 코드에서 'rA'가 레퍼런스. rA를 변수 a로 초기화한 것. - 예) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include using namespace std; int main() { int a = 5; int& rA = a; // 레퍼런스 rA를 변수 ..
-
2017.05.29
함수 템플릿 (Function Template)
* 함수 템플릿 (Function Template) - 함수 템플릿(Fundtion Template) : 다루는 형만 다른 함수를 틀을 통해 찍어내듯 만들어낼 때 필요한 틀. - 순서 1. 함수 템플릿을선언 및 정의 2. 함수 호출 (함수가 자동으로 만들어짐.) (1) 함수 템플릿 정의 template // 상황에 맞추어 변경시킬 형(type)의 이름을 지정함. 함수의 선언 혹은 정의 - 부분에는 템플릿 인수라는 것을 집어 넣음. - 템플릿 인수에는 T와 같은 임시 형(type) 이름을 넣음. - 함수 템플릿의 가인수형명은 템플릿 인수임. - 가인수의 구체적인 형(type) 이름 대신 T와 같은 임시 형(type) 이름을 사용함. - 함수 템플릿은 함수의 '틀'이 됨. 1 2 3 4 5 6 7 8 // ..
-
2017.05.25
함수 오버로드 (Function Overloading)
* 함수 오버로드 (Function Overloading) - 인수의 형과 개수가 다르면 같은 이름을 가진 함수를 여러 개 정의할 수 있음. - 예) int max(int x, int y) double max(double x, double y) - 이처럼 인수의 개수 및 형이 다르면서 이름만 같은 함수를 여러 개 정의하는 행위를 일컬어 함수의 오버로드(중복정의 : function overloading)이라고 부름. - 비슷한 함수 여러 개를 같은 이름으로 중복 정의(오버로드)해 두면, 그 이름과 일치하는 함수 중 인수의 형(type)과 개수가 일치하는 함수가 자동적으로 호출됨. - 오버르드 기능을 활용하면 가독성이 높은 코드를 작성할 수 있음. - 오버르드 사용시 주의점 -> 오버로드할 함수는 그 인수의..
-
2017.05.25
기본 인수 (Default Argument)
* 기본 인수 (Default Argument) - 함수 프로토타입 선언 시 기본 인수(default argumet)를 지정하는 것이 일반적임. - 기본 인수를 지정해 두면, 함수 호출시 실인수를 생략할 수 있다는 장점이 있음. - 실인수를 생략하면 미리 지정해둔 기본값이 함수에 넘겨짐. - 기본 인수를 지정한 함수 프로토타입 선언 리턴 값의 형(type) 함수명(형(type) 가인수명 = 기본값, ...); - 기본 인수는 함수 선언 혹은 함수 프로토타입 선언시 한 번만 지정함. - 즉, 함수 프로토타입 선언에서 기본 인수를 지정했다면, 함수 본체를 정의할 때에는 기본 인수를 선언할 수 없음. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2..
-
2017.05.25
인라인 함수 (Inline Function)
* 인라인 함수 (inline function) - 정의 inline 리턴 값의 형 함수 이름(인수리스트) { ... } - 함수 선언부 앞에 inline이 붙여진 함수. - 인라인 함수의 몸체는 컴파일러에 의해 호출 부분에 직접 기록되므로 전체적인 속도 향상을 꾀할 수 있음. - 그러나 너무 긴 코드는 컴파일러가 인라인 함수로 인정하지 않기도 함. - 컴파일러는 간단한 처리만 인라인 함수로 인정하고, 호출 부분에 함수 전체를 기록해 줌.
-
2017.05.25
const
* const - const 키워드 const 형명 식별자 = 식(expression); - const를 사용하여 변수를 초기화하면, 이보다 뒤에 등장한 코드에서는 const가 지정된 해당 변수에 값을 대입할 수 없게 됨. - const로 지정한 변수는 그 값을 변경할 수 없기 때문에, 상수(constant)라고 부르기도 함. - 상수를 사용할 경우, 프로그램 변경이 매우 간편해진다는 장점이 있음. - const 키워드 사용시 주의해야 할 점 1) const 키워드를 지정한 상수는 나중에 그 값을 바꿀 수 없음. (바꾸려고 할 경우 컴파일 오류 발생) 2) const가 지정된 변수는 반드시 초기화 작업이 필요함. (초기화하지 않은 상수에 값을 대입하려 할 경우 컴파일 오류 발생) 1 2 3 4 5 6 7..
-
2017.05.25
키보드 입력
* 키보드 입력 - 키보드에서 입력을 받을 때에는 cin >> 라는 단어를 사용함. - 공백과 같은 입력은 무시됨. - >> 기호에는 키보드 입력을 지정한 변수로 보내는 기능이 있음. 1 2 3 4 5 6 7 8 9 10 11 12 #include using namespace std; int main() { int num = 0; cout num; cout > num2; cout
-
2017.05.25
숫자 리터럴 (Number Literal)
* 숫자 리터럴 - 숫자 리터럴은 다음과 같은 종류가 있음. 1) 정수 리터럴 (Integerl Literal) ex) 3, 4, 100 2) 부동 소수점 리터럴 (Floating-point Literal) ex) 1.4, 3.53 - 숫자 리터럴은 ' '나 " "로 감싸지 않음. - 8진수 및 16진수 표기법 1) 8진수 : 숫자 앞에 0를 붙임. 2) 16진수 : 숫자 앞에 0x를 붙임. 1 2 3 4 5 6 7 8 9 10 11 #include using namespace std; int main() { cout
-
2017.05.25
이스케이프 시퀀스 (Escape Sequence)
이스케이프 시퀀스 의미하는 문자 \a 경고음 \b 백스페이스 \f 페이지 나누기 \n 줄바꿈 \r 복귀 \t 수평 탭 \v 수직 탭 \\ \ \' ' \" " \? ? \ooo 8진수 ooo 문자 코드로 표기할 수 있는 문자 (0는 0~7까지의 숫자) \xhh 16진수 hh 문자 코드로 표기할 수 있는 문자(h는 0~9까지의 숫자와 A~F까지의 영문자)
-
2017.05.25
swipejs 플러그인 활용하기
* swipejs 플러그인 - 스마트폰 액정에서 손으로 터치하여 좌우로 밀어 이전 또는 다음 배너로 넘어가는 터치 슬라이드 배너를 쉽고 간단하게 만들 수 있음. - 기본 메서드 적용 방법(기본형) window.mySwipe = $(요소 선택).Swipe({ 옵션 설정 }).data('Swipe'); - swipejs 플러그인의 옵션 종류 종류 설명 startSlide: 숫자 (default:0) 인덱스 값으로 초기에 열릴 슬라이드를 지정함. auto: 밀리초 자동 슬라이드 이동 시간을 설정함. continuous: 논릿값 (default:true) 슬라이드 이동 시 연속적으로 반복, 롤링되어 나오게 할 것인지 설정함. disableScroll: 논릿값 (default:false) 브라우저에 스크롤바를 사..
-
2017.05.25
Accordion Image 플러그인 활용하기
* Accordion Image 플러그인 - 문단 태그의 내용을 마치 아코디언 악기처럼 펼쳐졌다 줄여지는 기능을 쉽게 구현시킬 수 있는 플러그인 라이브러리 파일. - 기본 메서드 적용 방법 (기본형) $("요소 선택").AccordionImageMenut({ 옵션 설정 }); - Accordion Image 옵션 종류 종류 설명 position 아코디언 방향을 가로("horizontal")로 할지 세로("vertical")로 할지 설정함. openItem 값을 0으로 설정하면 초기 화면부터 첫 번째 배너가 펼쳐져 있게 됨. 1로 설정하면 두번째 배너가 펼쳐져 있게 됨. openDim 펼쳐져 있는 배너의 너비를 설정함. closeDim 닫혀 있는 배너의 너비를 설정함. width 전체 배너의 너비를 설정함..
-
2017.05.25
bxSlider 플러그인 활용하기
* bxSlider 플러그인 - bxSlider 플러그인을 사용하면, 슬라이드 배너나 자동으로 재생되는 슬라이드 배너를 쉽고 간단히 만들 수 있음. - 기본 메서드 적용 방법 (기본형) var 참조 변수 = $('요소 선택').bxSlider({ 옵션 설정 }); - bxSlider 옵션 종류 종류 기본값 데이터 형식 설명 mode "horizontal" "horizontal" "vertical" "fade" 슬라이드 이동 방향을 설정 speed 500 숫자형 값 슬라이드 전환 시 속도를 설정 pager true 논리형 값 현재 위치를 알리는 불릿(동그라미 버튼) 노출 여부를 설정 moveSlides 0 숫자형 값 슬라이드 이동 시 개수를 설정 sliderWidth 0 숫자형 값 슬라이드마다 너비를 설정..
-
2017.05.25
제이쿼리 UI 플러그인
* 제이쿼리 플러그인이란? - 제이쿼리 플러그인(plug-in)은 여러 개발자가 드레그 & 드롭, 슬라이드 배너, 툴 팁 기능 등을 구현해 놓은 프로그래밍을 자바스크립트 파이로 제공하는 제이쿼리 라이브러리를 의미함. - 제이쿼리 플러그인을 내 웹 문서에 가져다 연동시키기만 하면 바로 사용할 수 있음. - 제이쿼리 플러그인은 사용하고자 하는 기능의 플러그인을 검색하여 다운로드받고 웹 문서에 연동해 선택한 요소에 기능(Method)만 적용하면, 간단한 코드 삽입만으로도 복잡하고 어려운 기능을 쉽게 구현할 수 있음. - 거의 모든 플러그인에는 예제(Demo) 파일이 포함되어 있어, 이것을 참고하면 누구나 웹 문서에 어렵지 않게 플러그인 기능을 적용할 수 있음. * UI를 개발할 때 유용한 플러그인 - 검색 사..
-
2017.05.25
Ajax로 RSS 연동하기
- RSS(Really Simple Syndication)란, 사전저긍로 '초간편 배급(배포)'이라는 의미를 가지고 있음. - 자주 업데이트되는 뉴스나 신문 기사 내용을 사용자에게 쉽게 배포하기 위해 만들어진 XML 기반의 배급 포맷. - 크로스 도메인이란 도메인이 서로 다를 경우에 정보 교환을 하지 못하도록 한 보안 정책을 의미하며, 이를 해결할 수 있는 방법으로는 구글에서 제공하는 Google Feed API link(데이터 전환 전송 기능)을 이용하는 것이 있음. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 4..
-
2017.05.25
Ajax 관련 메서드
* Ajax 관련 메서드들 - Ajax(Asynchronous JavaScript and XML)는 클라이언트(방문자 컴퓨터)가 비동기 방식으로 자바스크립트를 이용하여 환면 전환 없이 서버(서비스 제공 컴퓨터) 층에 자료(XML, (X)HTML, JSON, 텍스트 유형 등)를 요청할 때 사용함. - Ajax 관련 메서드의 종류 종류 풀이 load() 외부 콘텐츠를 가져올 때 사용함. $.ajax() 데이터를 서버에 HTTP, POST, GET 방식으로 전송이 가능하며, (X)HTML, XML, JSON, 텍스트 유형에 데이터를 요청할 수 있는 통합적인 메서드. 이 표에서 $.post(), $.get(), $.getJSON() 메서드의 기능을 하나로 합쳐 놓은 것이라고 보면 됨. $.post() 데이터를 ..
-
2017.05.25
Ajax란?
* Ajax란? - Ajax(Asynchronous JavaScript and XML)란, 비동기 방식의 JavaScript와 XML을 의미함. - 동기 방식과 비동식 방식의 차이점 -> 동기 방식의 경우는 서버에 신호를 보냈을 때 응답이 돌아와야 다음 동작을 수행할 수 있지만, 비동기 방식은 그와 반대로 신호를 보냈을 때 응답 상태와 상관 없이 다음 동작을 수행할 수 있음. - Ajax를 이용한는 주목적 -> 화면 전환 없이 클라이언트(방문자 컴퓨터) 측과 서버(서비스를 제공하는 컴퓨터) 측 간의 XML, JSON(JavaScript Object Notation), 텍스트, (X)HTML 등의 정보를 교환하기 위해서. - Ajax를 이용하면 방문객이 보는 컴퓨터에서 서버(Server)에 자료를 요청할 ..
-
2017.05.24
효과 제어 메서드
* 효과 제어 메서드란? - 효과 또는 애니메이션이 적용된 요소에 동작을 정지시키거나 동작 초기 실행을 지연시키는 등의 제어를 할 수 있는 메서드 - 효과 제어 메서드의 종류 종류 풀이 stop() 현재 실행 중인 효과를 모두 정지시킴. delay() 스택에 대기 중인 애니메이션 효과를 지연시킴. 다시 말하면, 대기 중인 효과가 지정한 시간만큼 지연된 후 발생됨. queue() 선택된 요소의 스택에 대기 중인 큐를 반환하거나 함수에 실행문을 큐로 추가시킬 수 있음. clearQueue() 첫 번째 큐에 해당하는 효과 또는 애니메이션만 실행하고 대기 중인 큐를 모두 삭제함. dequeue() 스택에 쌓인 큐를 모두 제거함. finish() 선택한 요소의 진행 중인 애니메이션이 강제로 완료 시점으로 간 후 ..
-
2017.05.24
효과 및 애니메이션 메서드
* 효과 및 애니메이션 메서드 - 문서 객체를 보이게 했다가 숨기려면 스타일(CSS)에 display 속성을 사용해야 함. - 스타일을 이용하면 객체는 단순히 보였다가 숨겨짐. - 하지만 효과(Effect) 메서드를 사용하면 스타일(CSS)을 사용하는 것보다 좀 더 역동적인 동작을 적용하여 객체를 화려하게 숨기거나 보이게 만들 수 있음. - 효과에 애니메이션 메서드까지 사용하면 선택한 요소에 다양한 동작(Motion)을 적용시킬 수 있음 * 효과 메서드 - 효과(Effect) 메서드에는 선택한 요소를 역동적으로 숨겼다가 보이게 만드는 기능을 가진 메서드, 선택한 요소에 동작을 적용시킬 수 있는 애니메이션 메서드가 있음. - 효과 메서드의 종류 종류 풀이 hide() 노출되어 있는 요소를 숨김. show(..
-
2017.05.24
그룹 이벤트 등록 및 삭제하기
* 그룹 이벤트 등록 메서드 - 그룹 이벤트 등록 메서드를 상요하면 한 번에 2개 이상의 이벤트를 등록할 수 있음. - 예를 들어, 선택한 요소에 메서드를 한 번만 적용하여 '마우스를 올렸을 때'와 '포커스가 생생되었을 때'와 같이 두 이벤트가 발생되도록 만들 수 있음. - 그룹 이벤트 등록 메서드의 종류 종류 설명 on() 선택한 요소에 한 개 이상의 이벤트를 등록할 수 있음. 그리고 사용 방식에 따라 이벤트를 등록한 이후에도 동적으로 생성된 이벤트를 등록한 요소와 동일한 새 요소에도 이벤트가 등록됨. 이 메서드는 제이쿼리 1.7 버전 이상부터 지원하고 있음. bind() 선택한 요소에 한 개 이상의 이벤트를 등록할 수 있음. delegate() 선택한 요소의 지정한 하위 요소에 이벤트를 등록함. 이벤..
-
2017.05.23
자주 사용되는 기타 이벤트 메서드
(1) change() 이벤트 메서드 - 선택한 입력 요소의 값(value)이 새 값으로 바뀌고 포커스가 다른 요소로 이동되었을 때 발생함. - 주로 폼 요소에 입력된 새 값을 스크립트에 이용할 때 사용됨. - 또는 change 이벤트를 강제로 발생시킬 수 있음. - 기본형 1. $(요소 선택).change(function() {...}); // 선택한 입력 요소의 값(value)이 새 값으로 바뀌고 포커스가 다른 요소로 이동되었을 때 이벤트 핸들러에 있는 실행문을 실행함. 2. $(요소 선택).change(); // 선택한 요소에 강제로 change 이벤트 메서드를 발생시킴. - 예) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 사이트 선택 네이버 네이트 ..
-
2017.05.23
이벤트 등록 메서드 - 키보드 이벤트
* 키보드 이벤트 - 키보드로만 이벤트를 발생시킬 수 있는 이벤트. - 예를 들어, 키보등 있는 키를 눌렀을 때나 키에서 손을 떼었을 때 이벤트가 발생하는 것. * keydown() / keyup() / keypress() 이벤트 메서드 - keydown()와 keypress() 이벤트 메서드는 선택한 요소에서 키보드 자판을 눌렀을 때 이벤트를 발생시킴. - 또한 강제로도 이벤트를 발생시킬 수 있음. - keydown() 이벤트 메서드는 이벤트가 발생했을 때 이벤트의 객체를 이용하면 눌려진 모든 자판에 대한 고유 키 코드값을 받아올 수 있지만, keypress() 이벤트 메서드는 문자(a~z, !, @, #... 등) 자판에 대한 고유 키 코드값은 받아오지 못함. - 키보드에 눌려진 자판 고유 키 코드값..
-
2017.05.23
키보드 접근성을 위한 이벤트 등록법
* 키보드 접근성을 위한 이벤트 등록법 - 키보드 접근성이란, 마우스 이벤트를 등록했을 때 만약 현재 마우스가 없더라도 제이쿼리로 만든 최소한의 기능을 키보드만으로 사용할 수 있도록 보장하는 것을 말함. - 키보드 접근성을 고려하여 마우스 이벤트를 등록할 때는 포커스를 이동할 수 있는 요소들인 와 태그, 또는 입력 요소인 , , 태그에 이벤트를 등록해야 함. [마우스에 대응하는 키보드 이벤트] - 마우스 이벤트를 등록할 때는 마우스에 대응하는 키보드 이벤트도 함께 등록해야 함. - 그래야 마우스가 없는 방문객이 사이트를 방문했을 때 키보드만으로도 접근할 수 있어 방문자가 불편함을 느끼지 않을 수 있음. - 마우스 이벤트에 대응하는 키보드 이벤트 마우스 이벤트 마우스 이벤트에 대응하는 키보드 이벤트 mou..
-
2017.05.23
이벤트 등록 메서드 - 마우스 이벤트
* 마우스 이벤트 - 방문자가 사이트에서 마우스를 이용해 취하는 모든 행위를 말함. - 예) 방문자가 지정한 요소에 마우스를 올리거나 클릭하는 등의 행위. (1) click() / dblclick() 이벤트 메서드 - click() 이벤트 메서드는 선택한 요소를 클릭했을 때 이벤트를 발생시킴. - 또는 선택한 요소에 강제로 클릭 이벤트를 발생시킬 때 사용. - 기본형 1. $(요소 선택).click(function() {...}); // 선택한 요소를 클릭할 때마다 이벤트 핸들러에 일련의 실행문을 실행시킴. 2. $(요소 선택).click(); // 마치 사이트 방문자가 선택한 요소를 클릭한 것처럼 선택한 요소에 강제로 click 이벤트가 발생함. - dblclick() 이벤트 메서드는 선택한 요소를 연..
-
2017.05.23
이벤트 등록 메서드 - 로딩 이벤트 메서드
* 로딩 이벤트 메서드 - 로딩 이벤트 메서드는 브라우저에서 HTML 문서를 불러올 때 HTML 문서 객체를 로딩(Loading)해 옴. - 이때 지정한 객체의 로딩이 완료되면 이벤트 핸들러가 실행됨. * ready() / load() 이벤트 메서드 - ready()와 load() 이벤트 메서드는 HTML에 지정된 문서 객체의 로딩이 완료된 후 이벤트 핸들러가 실행됨. - 어떤 선택자(Selector)를 사용하려면 먼저 문서 객체를 불러와야 함. - 문서 객체를 먼저 불러와야할 때 ready() 이벤트 메서드를 사용함. - 이때 문서 객체가 완전히 로딩되더라도 이미지나 프레임에 연동된 소스는 그 이후 로딩됨. - load() 이벤트 메서드는 이런 이미지나 프레임에 연동된 소스가 로딩이 완료되면 이벤트 핸..
-
2017.05.23
이벤트 등록 메서드란?
* 이벤트 등록 메서드란? - 이벤트 : 사이트에서 방문자가 취하는 모든 행동 - 이벤트 핸들러 : 이벤트가 발생했을 때 실행되는 일련의 실행 코드 - 이벤트 등록 메서드를 사용하면 방문자가 지정한 요소에서 어떠한 특정 동작이 일어났을 때 저장된 실행문을 실행시킬 수 있음. - 이벤트 등록 메서드에는 단독 이벤트 등록 메서드와 그룹 이벤트 등록 메서드가 있음. - 단독 이벤트 등록 메서드 : 한 동작에 대한 이벤트를 등록할 때 사용하는 메서드 - 그룹 이벤트 등록 메서드 : 하나 이상의 이벤트를 등록할 때 사용하는 메서드 - 이벤트 사용의 기본형 버튼 : 이벤트 대상 : 이벤트 등록 메서드 : 이벤트 핸들러 - 이벤트 등록 메서드의 종류 구분 종류 설명 로딩 이벤트 load() 선택한 이미지 또는 프레임..