본문 바로가기
반응형

[ Program ]205

17.조건문(분기문) , bool형식 , 논리연산자1 - if 프로그램은 조건문과 반복문만 알면 모든프로그램을 만들수 있다. 그외 다른것들은 좀더 코드를 짧게 쓰고 읽기 쉽고 사용하기 편하게 하기위한 추가옵션이다. 실제로 이제까지 배운것에 조건과 반복문만 할줄알면 프로그램 코드를 길게 쓰긴하겠지만 모든 원하는것들을 다만들수 있다. 조건문 형식은 다음과 같다. if(조건) { 조건이 참일때 실행할내용 } else { 조건인 거짓일때 실행할내용 } { 내용 } 과 같은 형식도 처음볼텐데 이미 앞에 쓰고 있던 내용이다. 버튼클릭하면 { } 사이에 우리는 내용을 쓰고 있었다. 의미는 한단락으로 묶어주는 형태인데 첫번째 쓰여져있는내용에 종속되는 세부내용이라고 생각해도 된다. 아래와 같은 느낌이라고 생각하면 가장 좋을것같다. 단락에대한 개요 { 상세한내용 } 이내용은 거의 대.. 2021. 9. 20.
16.연산자 프로그램을 하면서 연산을 할경우는 수없이 많이 생긴다. 연산은 실제 샐황에서 사용하는 연산과 거의 비슷한 의미이다. 앞에서 문자열 더하는 공부를 했으니 + 는 이해했으리라 생각한다. 문자끼리는 문자연결을 수행하고 숫자끼리 더할경우는 실제 우리가 사용하는 + 기능을 수행한다. - 와 / 는 실생활에서 사용하는 연산과 같고 곱셈 의 경우 * 를 사용하는데 이내용도 이미 알고 있으리라 생각한다. 기본적인 연산자외에 프로그램에서는 특별한 연산자들을 추가로 사용한다. 첫째로 나머지 연산자 % 이다. 예를 들면 10을 3으로 나누면 몫이 3이고 나머지가 1 인데 이 1값을 대입해준다. int a = 10%3; 위와같은 코드는 a를 출력하면 1 이 나온다. 나머지연산자는 생각외로 여기저기 쓰이는 곳이 많아서 꼭 기억.. 2021. 9. 20.
15.주석 프로그램을 하다보면 소스코드가 계속 길어진다. 소스코드가 길어지면 나중에 내가 만든 코드를 봐도 뭘 할려고 만든기능인지 알수 없게 되버린다. 그래서 내가 뭔가를 만들면 메모해놓는 기능이 있다. 그걸 프로그램에서는 주석이라고 부른다. 실제 컴파일될때는 주석은 무시하고 컴파일하기 때문에 실제 런타임에는(프로그램이 실행될때) 주석은 아무영향도 끼치지않는다. 그래서 프로그램을 만들면 본인 뿐만 아니라 누군가 나중에 수정할때는 대비해서 주석은 필수적으로 필요하다. 그런데 실제로 노트에 글을쓸때도 노트에 너무많은 메모를 추가해놓으면 오히려 보기가 힘들어진다. 프로그램도 주석을 너무 과하게 달면 오히려 소스를 분석하거나 나중에 볼때 더 불편해진다.(물론없는거보다는 낫다) 그래서 주석도 적당히 보기좋을만큼 추가하는게 .. 2021. 9. 20.
14.이름입력후 그대로 출력 프로그램 만들기 이전장에서 전반적인 내용설명이 있었다. 충분한 연습이 필요한내용이라서 반복적으로 연습해야한다. ***숙제 : textbox에 내이름을 입력하면 "이름(쥐띠)" 같은형식으로 출력하는 프로그램을 만들어보자.(힌트:변수사용) 2021. 9. 20.
13.윈폼컨트롤 설명 그림1에서 왼쪽편에 보면 도구 상자라는 것이 있다. 이도구상자는 상단의 디자인용 탭을 눌렀을때 활성화 되는데 탭을 이동하는 방법은 앞에서 설명했다. (4장참조) 소스탭으로 도구상자를 사용할수 없는데 직접 변경하면서 확인해보기 바란다. 도구상자에 있는 컨트롤들은 모두 사용할수 있다. 그중 대표적으로 가장 많이 사용하는것이 label , textbox , button 이다. 다른 컨트롤들은 좀더 익숙해지면 그때 다시 살펴보기로 하고 3개정도만 잘다룰수 있도록해보자. Label 은 글씨를 내가 입력한대로 그대로 보여주기만 하는 컨트롤이다. 도구상자에서 label 을 드래그 해서 폼으로 옴겨보자.(폼 : 화면중앙에 컨트롤들을 올릴수있는 곳.하나의 창이라고 생각하면됨.) 드래그한 후 label 을 클릭하면 그림2.. 2021. 9. 20.
12.윈폼/콘솔프로그램 실행법 이제까지 공부한 내용을 간단히 정리해보면 빌드,변수,형변환 까지 진행했는데 상당히 중요한 개념이었다. 사실 프로그램의 거의 대부분이 이내용만 다룰수 있으면 되고 나머지는 추가적인 스킬들이다. 결국 변수들에 값넣고 다른처리들하고 출력하거나 사용자가 원하는 행동을 하는것이 프로그램이다. 프로그램은 여러 방식으로 만들수 있는데 크게보면 웹프로그램과 로컬PC 기반 , 모바일기반 프로그램으로 나뉜다. 웹은 브라우저(크롬,IE,오페라,사파리등) 에서 작동하는 프로그램을 통칭적으로 말하며 로컬PC기반 프로그램은 내PC에서 자체적으로 돌아가는 프로그램(윈도우,포토샵,메모장,그림판등) 을 대부분 가리킨다. 지금 연습하고 있는것은 로컬PC에서 돌아가는 프로그램을 만드는 연습을 하고 있는데 이또한 몇가지로 분류될수 있다. .. 2021. 9. 20.
11.형변환 앞서 많은 형태의 변수를 배웠다. 인간의 머리는 수많은 개념과 정보들을 말도안되는 속도로 처리한다. 예를 들면 "1" 이라는 숫자를 어떤형태로 써도 알수 있다. 그림1을 보면 모두 숫자 1을 가리키는것을 알수 있다. 글씨체나 문자형태나 수식이거나 모두 상관없이 동일한 것을 가리킨다는것을 사람은 순식간에 알수 있다. 하지만 컴퓨터는 프로그래밍 되어있지 않으면 해당내용을 알수 없다. 하나의 변수를 연산을 하거나 문자로 연결을 하거나 할때는 정확한 형태로 변경한 후에 해당 작업을 해줘야 한다. 그작업을 형변환(type casting) 이라고 한다. 형변환은 여러가지 형태가 있다. 첫째로 모든 형태를 문자로 변경해줄때는 .ToString() 을 붙여주면된다. 예를 들면 다음과 같다. int a = 10; str.. 2021. 9. 20.
10.변수연산 문자형 / 문자열 보간 문자형 변수를 연산을 하면 이전에 설명한것과 같이 1+1 = 창문 같은 느낌이다. 말그대로 문자를 연결하는것이다. int a = 2; int b = 3; a+b 를 출력하면 5 가나오고 string a = "2"; string b = "3"; a+b 를 출력하면 "23" 이 나온다는 의미이다. 이내용은 프로그램언어뿐만 아니라 DB를 다룰때도 동일한 개념이다. 실제 c# 에서는 그림1과 같이 문자연산을 하면 새로운 주소를 할당받아 거기에 값을 쓰기때문에 문자열 연산은 상당히 느린편이다. 그림에 대한 내용은 이미 앞에서 충분히 학습해서 이해하리라 생각한다. a의 위치에 b의 문자열을 바로 연결하면 공간을 많이 차지하지도 않고 새롭게 a+b의 공간을 할당할 일도 없고 다좋을텐데 왜 새로운 공간을 할당할까? 메.. 2021. 9. 20.
9.변수,자료형 3(char , string) 이전에 배운 숫자형외 문자형태의 자료형도 한가지가 아니다. 문자형은 크게 두가지 인데 1개문자 와 문장으로 나뉜다. 두가지를 쓸때는 각각의 형식을 지켜줘야 하는데 1개의 문자를 표현할때는 ' (홑따옴표) 로 감싸고 문장을 표현할때는 " (쌍따옴표) 로 감싼다. '가' - 1개문자 char 형식 "가나다" - 문장 string 형식 위 예제가 각각의 형식을 나타낸다. 소스로 보면 아래와 같다. char a = '가'; string b = "가나다"; char 는 하나의 문자이고 string 은 char 가 여러개 모여있는것이라고 생각하면 된다. 1개의 값만을 표현할때 char 를 사용하는데 그중 참거짓만 표현하고 싶을때는 bool 을 사용한다. bool 은 두가지 값만 넣을수 있는데 true , false.. 2021. 9. 20.
8.변수연산 숫자형 변수는 연산이 가능하다. 예를 들면 a 라는 변수에 5를 담고 b라는 변수에 10 을 담아서 a 라는 변수와 b 라는 변수를 더하면 15의 값을 얻을 수 있다. 소스코드로 보면 다음과 같다. int a = 5; int b = 10; a+b 변수 형식에 대해 이전에 빠져먹은 내용이 있어 여기서 추가설명하면 위와 같이 변수를 먼저 선언하고 값을 대입한다. 즉 (형식) (변수명) = (대입할값); 형태가 되는것이다. 만약 위 형식대로 하지않으면 에러가 발생하므로 해당에러를 분석해보는것도 좋다. 어째뜬 위와 같이 연산을 할수 있는데 변수의 타입에는 크게 두가지가 있다. 숫자형과 문자형이다. 소스코드내에서 " 없이 숫자만 1 이라고 적으면 프로그램은 숫자 1로 인식한다. 그런데 "1" 이라고 적으면 숫자가 아닌 .. 2021. 9. 20.
7.변수,자료형 2(int와 float, double) 앞장에서 변수에 대해 설명했다. 변수는 프로그램 하는 동안 계속 쓰기 때문에 꼭 내용을 이해하고 있어야 한다. 그림1은 여러 자료 형을 나타내고 있는데 내가 100이란 숫자를 변수로 사용할때 보통은 byte 형을 사용하진 않는다. 앞장에서는 크기에 맞춰서 사용하라고 해놓고 여기서는 다른말하니 당황스러울수 있다. 여기는 몇가지 이유가 있다. 첫째로 PC의 자원이 넉넉해져서 여유롭게 사용할수 있기 때문이다. ( 자원은 PC의 램,CPU처리속도,하드용량등 사용가능한 모든것을 말한다. ) PC 는 계속 가파르게 발전하고 있는데 과거에 비해 하드용량이나 메모리용량등이 비교할수 없을만큼 올라갔다. 내가 최초로 사용하던 PC는 하드가 무려 21메가 였는데 그때는 그용량도 넉넉하다고 느꼈었다. 램은 정확히 기억나지 않.. 2021. 9. 20.
6.변수,자료형 1(변수란, 자료형종류) 변수란 값을 담을수 있는 메모리상의 공간 가리킨다. 1번 그림에서 우측에 있는게 실제 pc의 RAM 인데 프로그램이 실행되는동안 해당공간에 임시로 데이터들을 넣고 프로그램에서 사용한다. 윈도우에서 RAM 의 임의공간에 데이터를 막쓰진 않는다. 기본적으로 순서대로 데이터를 쌓아서 사용하게 되는데 그 개념이 1번그림의 왼쪽과 같은 형태가 된다. 즉 , 낮은주소부터 객체의 정보를 넣어두게 되고 높은주소부터 상수등 고정된 정보를 넣어두게 된다. 지금 이내용을 정확히 이해할 필요는 없는데 궁금하면 개인적으로 윈도우가 메모리를 어떤형태로 사용하는지 찾아보자. 내부적으로 순서대로 데이터를 쌓아서 관리한다 정도만 알고 있으면 된다. 그림2를 보면 실제 메모리 공간에 데이터를 어떻게 넣는지 설명하고 있다. 20이라는 데.. 2021. 9. 20.
5.버튼 응용 개별공부 화면 중앙의 버튼을 누르면 우측 속성창에서 버튼에대해 바꿔줄 수 있는 속성들이 표시된다. 이번에는 개별적으로 연구해서 숙제만 진행한다. ***숙제 : 1개의 창에 5개의 버튼을 만들고 각버튼들에 스터디 인원의 이름이 표시되게 하고 그 버튼을 누르면 각 인원의 이름으로 팝업창 뜨게 해서 공유. 이미지참조. (힌트 : text 속성) 2021. 9. 20.
4.창레이아웃 , 버튼, 메세지박스 프로그램에서 기본적인 내용을 배우기 위해서는 상당히 지루하고 답답한 내용들이 있다. 하지만 꼭 알고 있어야 하는 내용들이므로 해당내용들을 더 시각적으로 확인하기 편하게 하기 위해 다른내용 보다 이내용을 앞으로 당겨서 배운다. vs 환경은 자유롭게 구성이 가능한데 기본 창 구성은 1번이미지와 같다. (디버그 상태가 아닌 일반상태) 창레이아웃은 상단에 있는 "창" > "창 레이아웃 다시설정" 을 눌러 초기화 할 수 있다. 각창은 상단에 제목부분을 드래그 해서 2번째이미지 처럼 위치를 옮길수 있다. 편한위치로 이동해서 사용하면된다. 3번 이미지와 같이 왼쪽의 도구상자를 열고 버튼을 드래그해서 화면 중앙으로 옴기면 버튼이 생성된다. 드래그 해서 생성할수도 있고 버튼을 클릭한뒤 마우스가 +모양으로 변경된뒤 우측에.. 2021. 9. 19.
3.솔루션 / 프로젝트 , 다른곳에서 파일 실행해보기 , 빌드이벤트 프로젝트는 내가 최종적으로 실행할 파일(exe 파일) 을 만드는데 필요한 소스,참조하는 DLL 등 모든 필요한 것들을 모아놓은 것을 말한다. 프로젝트를 만들때 1번그림과 같이 프로젝트명과 실제 프로젝트를 물리적으로 저장할 위치를 지정할 수 있다. 일반적으로 프로젝트명은 내가 실제로 만들 exe 파일 명칭과 동일하다. 물론 다른곳에서 변경해줄수도 있는데 그건 나중에 다시 설명한다. 그림2번에 보면 솔루션과 프로젝트를 표시해 놨는데 프로젝트는 위에서 말한거처럼 exe 파일을 만드는데 필요한 것들을 모아둔 것이고 솔루션은 그 프로젝트들을 관리하기 편하게 하나로 모아둔 것이라고 생각하면 된다. 프로젝트는 솔루션에서 마우스 우클릭한 후 "추가" > "새프로젝트" 로 현재 솔루션에 프로젝트를 추가할 수 있다. 물론.. 2021. 9. 19.
2.디버그/릴리즈 차이 , .net프레임워크버전 , exe파일 만들기 프로그램을 만드는 궁극적인 목적은 내가 실행되는 파일을 만들고 사용자가 그 파일을 실행하게 함으로써 사용자가 원하는 작업을 할 수 있게 하는 것이다. 1장에서 만든프로그램을 사용자가 사용할수 있게 하기 위해서는 프로그램을 빌드 해야한다. 빌드하면 실제로 사용자가 실행할 수 있는 exe 파일이 생성되는데 이 exe 파일을 만드는데 크게 두 가지 방법으로 빌드할 수 있다. DEBUG / RELEASE 모드 두 가지인데 차이점은 아래 경로에서 읽어보자. https://j2hworld.tistory.com/77 프로그램을 만들면 한방에 완벽하게 만들어지지 않는다. 어떤형태로든 버그(프로그램이 이상행동하는것) 가 발생하고 vs에서 해당 버그를 수정하기 위해 내가 만든 코드를 한줄씩 따라가며 값을 확인할수도 있다... 2021. 9. 19.
1.Visual Studio 설치/프로젝트 만들기 / 기본 윈폼 실행 c#으로 만든 프로그램은 .netframework 라는 프레임워크가 깔려 있는 상태에서 동작한다. 프레임워크는 프로그램에 필요한 함수나 변수등이 모여있는 파일들을 하나의 폴더에 모아 놓은 덩어리라고 생각하면 되는데 .net 프레임워크 말고도 여러종류 프레임워크가 있다. 위에서 말한것처럼 c#으로 만든 프로그램은 .net 프레임워크가 있어야 작동하는데 이전 윈도우 xp 시절에는 .net 프레임워크를 직접 설치해줘야 했지만 최근 윈도우는 윈도우 업데이트만 하면 최신프레임워크도 같이 업데이트 할 수 있다. 프로그램을 제작할 때 내가 직접 .net 프레임워크 버전을 지정해줄 수 있는데 만약 내가 4.7.1 버전으로 만들었는데 실제exe 파일을 만들어서 다른pc에서 실행할때 그 PC에 .net 프레임워크 버전이 .. 2021. 9. 19.
안드로이드 spinner( combobox ) ---res/values 1명 2명 3명 ---java Spinner spinner1; spinner1 = (Spinner)findViewById(R.id.spinner); final SpinnerAdapter spinnerAdapter = ArrayAdapter.createFromResource(getApplicationContext(),R.array.spnnerdata1,R.layout.support_simple_spinner_dropdown_item); spinner.setAdapter(spinnerAdapter); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onIt.. 2017. 9. 7.
안드로이드 canvas 리셋하기 Canvas drawCanvas = (Canvas)findViewById(R.id.canvas); drawCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); 2017. 9. 6.
안드로이드 view 배경색 가져오기 ColorDrawable cd = (ColorDrawable) textView.getBackground(); int colorCode = cd.getColor(); 2017. 9. 6.
버튼 클릭 이벤트를 처리하는 몇 가지 방법. (Android Button Click Event) 출처 - http://recipes4dev.tistory.com/55출처 - http://nanstrong.tistory.com/274 1. Button의 클릭 이벤트 처리안드로이드에서 Button 클릭 이벤트를 처리하기 위해서는 리스너(listener)의 개념과 구현 방식을 이해하고 있어야 합니다. 만약 리스너에 대한 내용을 처음 접하신다면, 이전 글 [안드로이드 버튼 기본 사용법 - Button 클릭에 대한 이벤트 처리]에서 리스너의 의미와 View 클래스의 리스너 구현 내용, 리스너 객체 생성과 이벤트 처리 함수 작성 내용을 설명하였으니 살펴보시기 바랍니다. 그런데 버튼 클릭 이벤트를 처리하기 위해 반드시 [안드로이드 버튼 기본 사용법 - Button 클릭에 대한 이벤트 처리]에서 설명한 방법만 사.. 2017. 9. 6.
반복문도는동안 컨트롤텍스트 바꾸기(현재까지 실행된내용 라벨에 업데이트) 출처 - http://stackoverflow.com/questions/3431369/label-does-not-change-value-inside-a-while-loop private void button1_Click(object sender, RoutedEventArgs e) { int i = 0; while (i 2015. 7. 22.
c# 크로스쓰레딩 - 다른쓰레드의 컨트롤 값변경 출처 - http://www.soulfree.net/734 휴우... 제목이 엄청길다. 내 블로그 이외에도 이 내용으로 많은 자료가 이미 많이 올라와있지만 프로그램 할때마다 필요한데 내 머리는 외워주지를 않아서 결국 포스팅 해버리게 되었다.... 매번 소스찾기가 귀찮아서.ㅠㅠ 이 코드가 필요한 경우를 예를 들면, 데이터를 송수신 하는 다중 스레드 프로그램이 있는데 데이터를 수신하는 스레드에서 프로그램 화면을 갱신하려고 하면 바로 이 글 제목같은 문제가 발생한다. 그래서 대리자를 통하여 스레드간의 자원을 공유할 수 있도록 해주어야 한다. 간단한 코드이지만 이상하게도 외어지지가 않는다ㅠㅠ 코드 설명을 하고자 쓰는 글이 아닌지라... 혹시 설명이 필요하신 분은 댓글 달아주시길... * WPF의 경우의 예 us.. 2015. 7. 22.
C#에서 주소창 url 가져오기 system32 폴더에서 shDocVw.dll 을 어셈블리 참조하고... using SHDocVw; foreach (InternetExplorer ie in new ShellWindowsClass()) { textBox1.Items.Add(ie.LocationURL); } 2015. 3. 13.
[IIS 7.0] 업로드/다운로드 용량제한 풀기 출처 - http://www.devholic.net/1001029 Window 2008 IIS7에서 업로드/다운로드 용량제한 풀기 특정 확장자의 파일이 다운로드 되지 않는 현상이 있어 삽질을 엄청했다.. 증상) .xls .gif 이런 놈들은 잘 다운되는데 .zip .exe는 다운이 되질 않았다. MIME 타입 문제인가 싶었는데.. 별짓을 다해봐도 안되는거다.. 혹시나 싶어 용량을 팍 줄여서 zip파일을 만들어보니 그놈은 잘되는거지.. MIME 타입 문제가 아니라 용량의 문제였다. 네이버도 구글도 자료가 참으로 없더라.. 자료가 많아야 대충 키워드 입력해도 걸려들터인데.. IIS 6.0에서 metabase.xml 파일에 AspBufferingLimit과 AspMaxRequestEntityAllowed 용량.. 2015. 3. 13.
Windows Forms에서 웹서버로 파일 업로드 하기 출처 - http://walnuttree.tistory.com/99 윈폼에서 웹서버로 파일을 업로드 하는 방법이다 (물론 FTP로 바로 올리는 방법도 있다) 지금 설명하는 방법으로 파일을 올리기 위해선 두가지 작업(윈폼, 웹)을 해줘야 한다. 먼저, 윈폼에선 다음과 같이 코드를 작성한다. OpenFileDialog dlg = new OpenFileDialog(); dlg.Multiselect = false; dlg.Filter = "Microsoft Excel|*.jpg"; dlg.ShowDialog(); System.Net.WebClient wcClient = new System.Net.WebClient(); wcClient.UploadFile(웹상에서 파일 업로드를 구현한 페이지 주소, "POST",.. 2015. 2. 25.
서브도메인 및 가상 호스트 설정하기 출처 - http://dezang.net/61 서브도메인 및 가상 호스트 설정하기 현재 서브도메인이 아닌 루트도메인을 사용하여 블로그를 운영하고 있습니다. 정보 전달을 위래 글을 마무리 짓고 서브도메인을 사용하지 않게 된 이유도 적어보려합니다. 궁금한 점이 있으면 댓글 달아주세요~ 서브도메인 개요 현재 글을 쓰는 시점에서 블로그에 접속하는 주소는 dezang.net/blog이다. 이것을 blog.dezang.net이라는 주소로 접속하게 하려면 서브도메인 설정을 해야한다. 원하는 서브도메인을 레코드 타입 A로 설정하고 서브도메인에 연결할 IP나 레코드값을 입력하면 된다. 문제는 IP를 입력하기 때문에 서버 루트와 연결되는 것이지 루트 아래 폴더에 서브도메인을 연결할 수는 없다는 것. 즉 다른 아이피를 가진.. 2015. 1. 29.
문자열마지막구분자 없애기 출처 - http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=9&MAEULNO=5&no=891&page=10 - 질문 - string chvalue=""; chvalue="110-111-112-"; 2014. 12. 1.
Rollback for bulk copy (트랜젝션걸린 대량인서트) 출처 - http://stackoverflow.com/questions/2216254/rollback-for-bulk-copy using (SqlTransaction transaction = destinationConnection.BeginTransaction()) { using (SqlBulkCopy bulkCopy = new SqlBulkCopy( destinationConnection, SqlBulkCopyOptions.KeepIdentity, transaction)) { bulkCopy.BatchSize = 10; bulkCopy.DestinationTableName = "dbo.BulkCopyDemoMatchingColumns"; try { bulkCopy.WriteToServer(reader).. 2014. 11. 14.
루프를 돌면서 DataTable의 DataRow를 삭제할때 출처 - http://devswaf.blogspot.kr/2009/11/%EB%A3%A8%ED%94%84%EB%A5%BC-%EB%8F%8C%EB%A9%B4%EC%84%9C-datatable%EC%9D%98-datarow%EB%A5%BC-%EC%82%AD%EC%A0%9C%ED%95%A0%EB%95%8C.html 루프를 돌면서 DataTable의 DataRow를 삭제할때 for 와 같은 루프문으로 DataTable.Rows 컬렉션에서 DataTable.Rows.Remove()를 실행하면 루프과정에서 컬렉션이 변경되므로 원하지 않는 이상한 결과를 초래한다. 이때는 DataRow.Delete()를 실행하고 루프문이 끝난 후 DataTable.AcceptChanges()를 호출하면 된다. 아래는 MSDN에서 발췌.. 2014. 11. 10.
반응형