본문 바로가기
반응형

전체 글361

안드로이드 옵션 메뉴 만들기 ●옵션메뉴는 메뉴버튼을 눌렀을 때 나타나는 메뉴이다. 안드로이드는 보통 버튼을 '홈버튼,이전버튼,메뉴버튼' 3가지 버튼을 가지고 있다. 화면 하단에 표시할수 잇는 옵션 메뉴 항목은 최대 6개가지이고 6개 초과한 항목은 목록형태로 나타난다. ●이클립스 상단의 Source항목에서 Override/Implement Methods를 선택하고 창이 나타나명 onCreateOptionsMenu와 onOptionsItemSelected()를 선택한다. 이렇게 안하고 그냥 직접 코딩해도 상관없다. ●onCreateOptionsMenu() - 메뉴 항목 추가 menu.add(그룹번호, 메뉴식별번호, 배치순서, 메뉴에 표시할 타이틀); - 아이콘 추가와 단축키 추가 - 선택사항이므로 해도되고 안해도 된다. menu.add.. 2012. 6. 23.
안드로이드 ArrayList ●ArrayList - ArrayList는 링크드 리스트(linked list)라는 자료구조를 이용한 리스트로서 고정된 크기를 갖은 배열과 달리 임의로 데이터의 추가,삭제,변경등이 자유로운 배열 Class이다. - 다음과 같은 형식을 가진다 ArrayList 변수명 = new ArrayList(); -ex) ArrayList a = new ArrayList(); a.add(new Aaa()); //Class를 새로 생성해서 추가 a.add(new Aaa(1,2)); //Class가 파라미터를 받은 경우 int n = a.size(); //ArrayList에 저장된 요소의 개수 a.get(index); //해당 인덱스 위치의 요소 찾기 a.remove(index); //해당 인덱스 위치의 요소 삭제 a.c.. 2012. 6. 23.
안드로이드 비트맵 그림 자르기(slice) ●그림 자르기 - Bitmap.createBitmap()는 사진에서 필요한 부분만 새로운 비트맵으로 만든다. - Bitmap.createBitmap( Bitmap source, int x, int y, int width, int height ) ●이미지 확대, 축소 - Btimap.createScaledBitmap(그림파일, 너비, 높이, true) - imgBack = BitmapFactory.decodeResource(context.getResources(), R.drawable.back); //이미지 불러오기 imgBack = Bitmap.createScaledBitmap(imgBack, width, height, true); //해당 이미지를 width,height만큼 늘려서 imgBack에 저장.. 2012. 6. 22.
안드로이드 뷰(View) 2 ●캐릭터 이미지 불러오기 - 캐릭터로 사용할 이미지는 배경을 투명하게 처리두어야 한다. 먼저 캐릭터 이미지를 res폴더 안에 임의의 폴더 drawable에 저장한다. 이때 리소스로 사용할 파일 이름은 영어 소문자로 써야하고 숫자, 언더바등을 사용하여 작성한다. - 이미지를 저장한 후 소스 코드에서 " Bitmap bitmap = BitmapFactory.decodeResource(리소스, 리소스 id); " 를 이용해서 비트맵을 읽어온다. - 리소스는 " Resources res; res=context.getResources(); "를 사용하여 구한다. - context가 매개변수로 넘오온 경우에는 다음과 같이 간단히 작성할 수 있다. Bitmap bitmap = BitmapFactory.decodeRe.. 2012. 6. 22.
안드로이드 뷰(View) 1 ●사용자 뷰(View) 만들기 - 먼저 멕티비티의 setContentView(R.layout.main)부분을 setContentView(new 뷰클래스이름(this)) 으로 바꿔주면 뷰클래스이름에 해당하는 사용자 뷰가 화면에 표시된다. 사용자뷰는 안드로이드의 layout을 거치지 않고 직접 View에 출력하도록 만든 Class이다. ● 1, MyView안의 전역변수 선언 2. 변수 초기화 영역 3. 실제로 View의 Canvas로 그림을 그리는 영역 - Canvas를 조작하거나 Timer, Handler 등을 이용해서 반복적으로 호출하는 것 등을 다루는 곳이다. ●단말기의 해상도 구하기 - 안드로이드os가 탑재되어 있는 단말기의 해상도가 기기마다 다르기 때문에 ui를 구성할때 단말기 해상도에 맞도록 조절.. 2012. 6. 21.
안드로이드 버튼의 리스너 작성 ●엑티비티(Activity) 영역 1. 전역변수 선언 영역 2. 프로그램 초기화 영역 - onCreate() 메서드는 프로그램이 켜질때 한 번 실행된다. 이 부분은 변수에 초기값을 지정해주고 버튼 등의 컨트롤에 리스너를 연결하는 용도로 쓰인다. 3. 프로그램에서 반복적으로 사용할 영역 - 실제로 작성할 프로그램의 본체이다. 각종 연산과정과 처리결과를 화면에 표시하는 소스코드 등을 여기에 작성한다. ●버튼 리스너 작성 기본 1. 리스너 할당 2. 리스너 본체 ●예제 - EditText에 어떤 값을 입력한후 '확인' Button을 누르면 그 값이 TextView에 표시되는 예제 2012. 6. 20.
자바 난수 발생하기 ●random()함수나 Random 클래스를 이용해서 만든다. Random 클래스를 사용하는 경우, import java.util.*을 선언해줘야한다. ●double ran=Math.random(); //0< ran 2012. 6. 20.
변수명과 메서드명 작성 규칙 ●자기가 만든 프로그램이라도 몇 주만 지나면 다 까먹는다. 딱 정해진 규칙은 없지만 가독성과 프로그램 흐름을 기억 위해 될수 있으면 다음의 규칙을 따르는게 좋다. ●변수명 작성 규칙 - 변수명은 될 수 있으면 의미를 가진 단어를 사용한다. - 첫글자는 소문자로 시작한다. - 상수는 대문자를 사용한다. - 동사와 명사가 섞인 변수명을 작성할 때는 동사를 먼저 적는다. - boolean형의 변수는 접두어로 is나 can을 붙인다. - 반복문 등의 내부에서 사용하는 변수는 i,j,k를 사용한다. - class전체에 사용되는 class형의 변수는 접두어로 m이나 g를 붙인다. - 변수명 오른쪽에 그 변수가 무슨 의미인지 주석처리한다. ●메서드명 작성 규칙 - 하나의 메서드가 길어져 전체를 한 화면에 보기 곤란한.. 2012. 6. 17.
html 웹표준 로고 넣기 ●로고는 h1태그를 써서 그 안에 넣어준다. h1은 페이지 내에서 가장 중요한 것을 나타내는 태그이다. ex) 2012. 5. 31.
html <div>로 메뉴(내비게이션) 만들기2 ●마우스 롤 오버 태그, 속성 ●웹표준 준수 위해서 이미지의 alt속성을 꼭 넣어주고, 처럼 태그 마지막 부분을 꼭 막아줘야한다. 별 의미 없는 그냥 화면을 꾸미기 위한 이미지의 경우는 alt속성에 값을 넣지 않고 alt=""처럼 빈 속성값을 설정한다. ●이미지 링크 테두리 없애기 - 이미지에 링크를 걸면 테두리가 생긴다. 개별적으로 border값을 설정하는 것 보다 css를 이용하여 테두리를 제거한다. img {border:"0"} ●가로 메뉴 예 2012. 5. 30.
html <div>로 메뉴(내비게이션) 만들기1 ●세로 메뉴 1111 2222 3333 4444 결과 1111 2222 3333 4444 ●li안에 이미지를 세로로 나열할 때 이미지 사이에 여백이 생길경우, img속성에 'vertical-align:top;'로 설정한다. ●가로 메뉴 1111 2222 3333 4444 결과 1111 2222 3333 4444 ●li안에 'display:inline;'를 적용하면 가로로 배열이 된다. ●li안에 이미지를 가로로 나열할 때 이미지 사이에 여백이 생기는 경우, li안에 'float:left;'로 설정한다. 2012. 5. 30.
html <div>로 웹사이트 레이아웃 구성하기2 ●웹표준 레이아웃 a b c d ●#wrap{margin:0 auto; width:900px;} - table에서는 align="center"로 중앙 정렬을 했지만, 웹표준에서는 따로 중앙정렬은 없다. 그래서 중앙정렬을 하려면 가장 바깥 div에 'margin:0 auto'를 선언해 준다. 'margin:0'은 상하 0px라는 뜻이고 'auto'는 좌우를 중앙에 위치하게 한다. ●큰 div(wrap,header,sidebar,content,footer 등)를 만들고 그 안에 세부적인 div를 만든다. 큰 div는 height값을 주지 않고 세부적인 div에 height를 준다. ●width, margin, padding, height 수치를 정확히 계산해서 레이아웃을 만든다. 만들 레이아웃 디자인을 프린.. 2012. 5. 28.
DTD((Document Type Definition) 개념 ●DTD(Document Type Definition) - 웹브라우저가 웹페이지를 동일한 기준에 의해 해석 되도록 문서의 타입을 선언하는 것이다. 이클립스 사용시 파일을 생성하면 이클립스가 자동으로 dtd를 선언해준다. ●DTD는 여러가지 종류가 있다. html페이지 제일 위에 선언해야한다. 엄격모드를 사용하는 것이 정확한 웹표준을 따르는 것이지만 우리나라의 브라우저 사용실태를 고려하면 하위 버전의 브라우저에서도 호환되어야 하기 때문에 호환모드를 사용해야 한다. ex) html 4.01 Transitional(호환모드) html 4.01strict(엄격모드) 2012. 5. 25.
html <div>로 웹사이트 레이아웃 구성하기1 ●형태 #wrap{width:1000px;} #header{width:1000px; float:left;} #sidebar{width:300px; float:left;} #content{width:700px; float:left;} #footer{width:1000px; float:left;} header sidebar content footer ●html의 와 css로 레이아웃 구성하기 예 header sidebar content footer ● wrap - 레이아웃 전체를 묶어서 wrap안에 있는 div들이 깨지지 않고 자리를 잘 잡게 하기 위한 테두리이다. header - 넓이값과 float으로 위치를 잡아주면 된다. sidebar, content - sidebar와 content의 합은 레이아웃 .. 2012. 5. 22.
css 기초 정리 ● html, xml 등은 문서의 구조를 정의한다. css 는 문서의 표현을 정의한다. ●html에서 구조를 나타내기 위해 사용하는 요소들 div, span, ul, ol, dl, h1~h6, p, table 등이 있다. ●css는 html의 각 구조를 시각적 표현으로 꾸며준다. ●css의 기본 규칙 - 선택자 {속성: 값; } ex) body {background-color: gray; } ●css의 선택자 - 스타일을 적용할 대상으로, body, p, h1 등 html의 요소명이나 id명,class명을 사용할 수 있다. ●css의 속성 - 해당 선택자의 어떤 스타일을 부여할지 결정한다. ●class 선택자와 id 선택자 - 특정 요소를 대상으로 스타일을 적용하기 위해 사용한다. - id선택자는 사용할.. 2012. 5. 20.
모바일 웹 프로그래밍 - 주소창 보이지 않게 하기 ●화면을 밑으로 스크롤하면 주소창이 보이지 않게 하는 스크립트를 2012. 5. 15.
모바일 웹 개념 ●모바일 어플리케이션의 종류 네이티브 앱(Native App) - 모바일 기기에 직접 설치되고 사용되어지는 어플리케이션이다. 모바일 웹(Mobile Web) - 모바일 웹브라우저에 의해 실행되는 웹 사이트로 일반적인 웹사이트를 모바일로 옮긴 형태를 말한다. 하이브리드 앱(Hybrid App) - 웹과 네이티브 앱의 중간 형태이다 모바일 웹앱(Mobile Web App) - 모바일 웹의 한 형태이지만 일반적인 웹보다 모바일에 더 최적화되고 네이티브 어플리케이션화된 형태를 표현한다. ●모바일 웹은 기존의 웹사이트를 바탕으로 레이아웃만 모바일 환경에 맞게 바꾸는 것이기 때문에 기존 일반 웹기술을 바탕으로 구현된다. 그래서 모바일 웹을 공부하기전 일단 기존 웹기술(jsp, sql, 웹서버 등)을 먼저 배워야 한.. 2012. 5. 6.
갤럭시탭 7.0인치 갤럭시탭7인치 삼성에서 제일 처음 출시한 태블릿pc인데 몇달전 구입했습니다. 출시된지 좀 된거라 가격 엄청 많이 떨어졌습니다.ㅋㅋ 전 안드로이드 공부할 때 사용하려고 구입한거라 굳이 최신 기기는 필요가 없어서 샀는데, 옛날 거라도 되게 좋네요ㅋㅋ 터치감도 나쁘지 않고, 화면도 스마트폰에 비해 크고.....아이패드는 안 써봐도 모르겠지만 갤럭시탭도 괜찮은거 같습니다... 2012. 5. 1.
알고리즘 동적계획법(dynamic programming) ●동적계획법(dynamic programming) - 작은 문제들의 해를 먼저 구하여 저장하고 더 큰 문제의 해를 구할 때 작은 문제의 해를 반복계산하지 않고 저장도니 ㄱ려과를 사용하는 방법이다. 동적계획법을 하기 위해선 주어진 문제의 해를 구하기 위한 순환적인 성질을 구성하여야 한다. 상향식으로 작은 부분부터 해를 구한다. ●장점 - 프로그램을 구현할 때에는 필요한 모든 가능성을 고려해서 구현하게 된다. 따라서 동적 계획법을 이용하여 항상 최적의 결과를 얻을 수 있다. ●단점 - 모든 가능성에 대한 고려가 불충분할 경우 최적의 결과를 보장할 수 없다. 동적 계획법을 구현하기 위해서는 충분히 많은 가능성에 대한 고려를 해야 한다. 다른 기법에 비해 메모리를 많이 요구한다. ●점화식 세우는 법 ①해를 구하.. 2012. 4. 14.
알고리즘 큐(queue) ●큐 - 저 들어간 데이터가 먼저 나오는 구조이다(FIFO). 큐는 데이터를 담는 큐배열, 데이터를 집어넣는 곳을 알려주는 포인터 변수(Tail)와 데이터를 꺼내는 곳을 알려주는 포인터 변수(Head), 입력(Enqueue)과 출력(Dequeue)을 당담하는 함수 이루어 진다. 큐를 자동으로 구현해 주는 프로그램 기법은 없다. ●Enqueue함수 void Enqueue(int data) { queue[++tail]=data; } ●Dequeue함수 int Dequeue(){ int daga; data=queue[++head]; return data; } 2012. 4. 14.
알고리즘 스택(Stack) ●스택(Stack) - 나중에 들어간 데이터가 먼저 나오는 구조이다(LIFO). - 스택은 데이터를 담는 스택 배열과 데이터를 담을 위치를 알려주는 스택포인터 변수와 입력(push)과 출력(pop)함수로 구현된다. ●push함수 void push(int data) { stack[sp]=data; sp++; } ●pop함수 int pop() { int data; sp--; data=stack[sp]; return data; } ●재귀호출은 스택을 자동으로 구현해줌으로써, 백트래킹 프로그램을 구현하는데 매우 편리하다. 2012. 4. 14.
알고리즘 분기한정(Branch and Bound) ●분기한정(Branch and Bound) - 백트래킹과는 달리, 분기와 한정을 정해서 해를 구하는 기법이다. 백트래킹을 구현할 때 경우의 수가 너무 많아 모든 경우를 다 해보기 어려울 때, 사용하면 좋다. 가지치기하는 기준이 되는 값이 바운드 값이다. 너비우선탐색을 사용한다. ●너비우선탐색(BFS, Breadth First Search) - 반복문과 큐를 이용하여 구현한다. 경로가 길 경우에는 탐색 가지가 급격히 증가함에 따라 보다 많은 기억 공간을 필요로 하게 된다. DFS 보다 많은 자료를 처리할 경우에 적합한다. ●큐(queue) - 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out)구조이다. ●BFS기법 - 시작점과 연결된 모든 정점을 방문한다. - 시작점과 연결된.. 2012. 4. 9.
알고리즘 백트래킹(Backtracking) ●백트래킹 - DFS(깊이우선탐색)방식으로 해를 찾는 방법이다. DFS는 해를 찾기 위해 전진, 후진을 반복한다. 백트래킹 재귀 호출을 해서 구현하면 편리하다. ●깊이우선탐색(DFS, Depth First Search) - 답을 찾을 때 가장 위에서 가장 아래쪽으로 들어 갔다가, 제일 밑에 까지 왔을 때 더 들어갈 곳이 없으면 위로 나왔다가 다시 가장 끝까지 들어가는 동작을 되풀이 한다. 여기서 위로 나오는 동작을 백트래킹이라고 한다 ●스택(stack) - 나중에 입력된 데이터가 먼저 빠져 나오는 구조이다. 후입선출(LIFO) ●사용하는 재귀함수의 수는 수학의 "경우의 수"와 같다. 예를들어 동전,주사위 등의 문제를 코딩할 때 각각의 무제의 경우의 수만큼의 재귀호출을 사용한다. ●백트래킹 알고리즘으로 해.. 2012. 4. 8.
알고리즘 정렬(sort) - 퀵정렬(Quick sort) ●퀵정렬(Quick sort) - 어느 한 값을 기준으로 이 값보다 작은값을 갖는 데이터와 큰 값을 갖은 데이터를 분리하여 2개의 그룹으로 나눈다. 그리고나서 각 그룹에 대해 위 작업을 재귀적으로 반복해서 정렬한다. 다른 정렬보다 평균적인 실행시간이 빠르다. ●퀵정렬 코드( 제대로 정렬이 안됨, 나중에 수정) #include #include int i, n = 10, data[10] = {3, 7, 8, 2, 9, 1, 4, 7, 6, 5}; void quick(int array[], int left, int right) { int choice; int i, j, temp; if(left=j) //교환할 데이터가 없으면 break break; temp=array[i]; array[i]=array[j]; .. 2012. 4. 1.
알고리즘 정렬(sort) - 선택정렬(Selection sort) ●선택정렬(Selection sort) - 데이터에서 가장 큰 값을 찾아서 마지막 위치에 있는 데이터와 교환하고, 그 다음 두번째로 큰 값을 갖은 데이터를 찾아서 마지막 전 위치에 있는 데이터와 교환한다. 이런식으로 모든 데이터를 정렬한다. ●선택정렬 코드 #include int i, n=10, data[10] = {32, 1, 15, 2, 7, 3, 9, 7, 92, 12}; void select(int array[], int n) { int i, j, temp; for(i=0; i 2012. 4. 1.
알고리즘 정렬(sort) - 삽입정렬(Insert sort) ●삽입정렬(Insert sort) - 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다. 배열이 길수록 효율은 떨어진다. 출처 - 위키백과 ●삽입정렬 코드 #include int i, n=10, data[10] = {30,5, 32,11, 98, 34, 12, 54, 32, 543}; void insert(int array[], int n) { int temp, k; temp = k = 0; for(i=1; i=0 && array[k]>temp) { array[k+1] = array[k]; k--; array[k+1] = temp; } } } void output() { for(i=0; i 2012. 4. 1.
알고리즘 정렬(sort) - 버블정렬(Bubble sort) ●버블정렬(Bubble sort) - 인접한 두개의 데이터의 값을 비교해서 정렬되어 있지 않으면 교환하는 정렬이다. 이런방법으로 마지막까지 비교하고 교환하면 한 단계가 끝난다. 그리고나서 2번째 데이터부터 다시 두개의 데이터의 값을 비교해 나가면서 비교한다. 다른 정렬에 비해 정렬 속도는 느리지만 코드는 단순하다. ●버블정렬 코드 #include int i; int n=10; //n은 데이터 개수 int data[10]={30,40,20,10,43,12,54,87,34,1}; void bubble(int array[], int n) { int i, j, temp; for(i=0;i 2012. 4. 1.
알고리즘 정렬(sort) ●정렬(sort) - 임의의 순서대로 배치되어 있는 집합을 어떤 기준에 맞춰 순서대로 재배치하는 것이다. 정렬의 방법에는 크게 내부정렬와 외부정렬로 나눌수 있다. ●내부정렬(internal sort) - 내부정렬(internal sort)은 정렬을 할 데이터가 메모리 안에서 정렬이 이루어 질때 사용한다. 내부정렬에는 버블정렬,선택정렬,퀵정렬,2-way합볍정렬,힙정렬,리스트정렬 등이 있다. ●외부정렬(external sort) - 외부정렬(external sort)은 데이터의 크기가 매우 클때 외부의 디스크같은 보조 기억 장치를 사용하여 정렬하는 방법이다. 외부정렬에는 자연합병,균형2-way합볍,다단계합병 등이 있다. 2012. 3. 30.
알고리즘 그리디(greedy) 알고리즘 ●그리디(greedy) 알고리즘 - 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행하여 최종적인 해답에 도달한다. 순간마다 하는 선택은 그 순간에 대해 지역적으로는 최적이지만, 그 선택들을 계속 수집하여 최종적(전역적)인 해답을 만들었다고 해서, 그것이 최적이라는 보장은 없다. 출처 - 위키백과 ●쉽게 설명하면 모든 경우의 수를 구하는게 아니라 하나를 선택하고, 그 선택한 순간에 최적이라고 생각하는 것을 하나 선택하면서 최적해를 구하는 알고리즘이다. 그렇기 때문에 전체적으로 최적이 아닌 경우가 나올수도 있다. 그래서 그리디 알고리즘을 구현할 때는 전체적인 최적이 될것인지를 염두해 두고 알고리즘을 구현해야 한다. ●Dijkstra(다익스트라)의 최단.. 2012. 3. 29.
c언어 파일 입출력 ●파일 열기 ex) FILE * fp; fp = fopen("파일이름", "형식"); ●파일 닫기 ex) fclose(fp); ●입력할 파일은 실행하는 코드와 같은 폴더에 위치해야 한다. 보통 비주얼스튜디오에서 New 파일추가에서 텍스트 문서를 추가하면 된다. ●출력된 파일을 확인하려면 비주얼스튜디오 좌측 파일목록에서 우클릭->Add File to Project선택후 파일이름에 *를 입력하고 ok버튼을 누른다. 그 다음 출력된 파일을 선택하면 된다. ●문제 - 파일에서 숫자 2개를 입력받아서 첫번째 숫자에서 두번째 숫자까지의 구구단을 구해서 파일로 출력하는 프로그램을 만들어라. #include void main(){ FILE *in = fopen("input.txt", "r"); FILE *out = f.. 2012. 3. 28.
반응형