const 키워드의 의미

Program_Language/C++ 2011. 7. 29. 22:03 Posted by Request
const 변수를 상수화 시킬때 사용된다.
(상수화란 절대값?으로 한번 설정된 값을 수정하지 않는 다는 선언)

1.const int n=10;
-상수화가 된 변수 선언.

2.const int* n;
-데이터형 상수화 선언
int a = 0;
(const int* n = &a; (가능)
*n = 20 (대입연산은 안된다.)

3.int * const n;
-포인터 가 상수화 된 것.
n=&b;
n=&a; (포인터 연산 허용이 안된다.)

4.const int * const n;
-n이라는 가리키는 곳의 데이터도 상수화, 포인터도 상수화 선언.

import 와 include 차이점

Program_Language/C++ 2011. 7. 26. 20:46 Posted by Request

#import
-같은 헤더 파일이 여러 번 임포트 되더라도 임포트는 한번만 읽어 들인다.

#include
-같은 헤더 파일이 여러번 인쿠르드 되면 그 수 만큼 읽어 들인다.
<오류가 나면 찾기가 어렵다>


아나..읽어 드린다.. 들인다 도 헷갈리네 ㅡㅡ;;ㅋ

Microsoft Visual Studio 2008 Service Pack 1 (Installer)


http://www.microsoft.com/download/en/confirmation.aspx?id=10986

C++ (연습문제 1-2)

Program_Language/C++ 2011. 7. 25. 02:21 Posted by Request

문제 1]
다음 main 함수에서 필요로 하는 swap함수를 구현하라.
int main()
{
     int num1=20, num2=30;
     swap(&num1, &num2);

     std::cout<<num1<<'   '<<num2<<std::endl;

     char ch1='a' , ch2='z';
     swap(&ch1, &ch2);
     std::cout<<num1<<'    '<< num2<<std::endl;

    return 0;
}

=============================================
요구되는 출력 결과
  30 20
   z  a
=============================================

void swap(int *a, int *b);
void swap(char *a, char *b);


void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b= temp;
}

void swap(char *a, char *b)
{
            char temp = *a;
               *a = *b;
               *b=temp;
}


C++ (1-1 연습문제)

Program_Language/C++ 2011. 7. 25. 00:10 Posted by Request

문제 1]
사용자로부터 총 10개의 정수를 입력받아서 그 합을 출력하는 프로그램을 작성해 보자.


 #include <iostream>

int main(void)
{
 int add = 0;
 int sum = 0;
 
 for(int i =0;i < 10 ;i++)
{
  std::cout<<i+1<<"번째 입력함, " << "현재 합계 : "<<sum<<std::endl;
  std::cin >> add;
  sum = sum + add;
}
 std::cout<<"총 합계 : "<<sum<<std::endl;
 return 0;
}


문제 2]
사용자로부터 이름과 전화번호를 입력받아서 배열에 저장한 다음, 그대로 출력해 주는 프로그램을 작성해 보자.

 #include <iostream>

int main(void)
{
 char name[20];
 char tel[20] ;
 
 std::cout<<"이름 :"<<std::endl;

 std::cin>>name;

 std::cout<<" 전화번호 입력 :";
 std::cin>>tel;

 std::cout<<"name : "<<name<<std::endl;
 std::cout<<"tel  : "<<tel<<std::endl;

 return 0;
}


-CPP 파일을 한 프로젝트에 추가하여 실행을 해보니 exe 파일을 못 찾는 에러 메세지가 생성 되고 실행 실패가 된다. 어떻게 하면 에러가 안 날까?


옛날 동영상 강의를 보면서 하나씩 해볼려는 찰나, "Hello World" 간단한 문구 출력의 소스의
디버깅 실패 ... 대략 난감 하였다..

검색하다 유연히 검색하여 알게 된 내용을 이시간에 정리한다.

[인스톨]
1.비쥬얼 스튜디오 설치(사용 용도 C++/cocos2d-x)
2.비쥬얼 어시스트 설치(http://www.wholetomato.com/)


[프로젝트 생성]
3.1)비쥬얼 스튜디오 (Microsoft Visual C++ 2008 .... 선택)



3.2)File > new > project
3.3)Visual C++ > win32 Console Application
-Name 작성 (OK)



-Next


 -Empty Project (체크) > Finish
요놈 덕에 제대로 디버깅이 되지 않았던거다 ㅡㅡ



 (끝)

 

 


싱글톤은 무엇인가?

Program_Language/Java 2011. 2. 1. 17:34 Posted by Request

package foms.common;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Vector;

/*
 2011.02.01 작성
 각종 코드 리스트들을 추출하여 쓰기 위해 ( DB트랜잭션 최소화) 만듦
 작성자 : 나도몰라
 Singleton pattern 으로 제작.
*/
public class codeList {
 private static codeList instance = new codeList();
 private static HashMap codeListData =new HashMap();
 
 final static String fileUrl ="C:/program1/KDN/Forms/WebContent/test/inspection_list.txt";
 
 /*Creator*/
 private codeList(){
  System.out.println("Creat Object ~");
 }
 
 /*싱글톤 패턴 : 메모리에 단 한번 올라가고 올라간후에는 계속 재사용을 한다. 상단 해쉬맵 포함.*/
 public static codeList getInstance(){
  if(null==instance){
   instance = new codeList();
  }
  return instance;
 }
 
 /* 순시종류 출력을 위한 메쏘드*/
 public static String getCodeName(String codeValue){
  String codeName ="";
  try{
     commonFileAccess(fileUrl);
        codeName = (String) codeListData.get(codeValue);
  }catch(Exception ex){
   ex.printStackTrace();
  }
  return codeName;
 }

 /*공통파일처리 메쏘드*/
 protected static HashMap commonFileAccess(String fileLink){
  
  try{
   if(codeListData.isEmpty()){
    System.out.println("FILE READING Start~~~~");
    FileInputStream fis = new FileInputStream(fileLink);
          BufferedReader br = new BufferedReader(new InputStreamReader(fis));
          String buff = null;
          int index = 0;
          while((buff = br.readLine()) != null){
              String[] items = buff.split(",");
              for (String item : items) {
               codeListData.put(items[0],items[1]);
              }
          }
   }
  }catch(Exception e){
   e.printStackTrace();
  }
    
  return codeListData;
 }
}

synchronized(this) 에 대해..

Program_Language/Java 2011. 2. 1. 12:28 Posted by Request

synchronized()... 일종의 하나의 쓰레드만 사용하기위해 다른 쓰레드에 대해서는
lock를 걸어 주기 위해 사용 한다고 하는데..

그만큼 느려질수도 있는 단점이 있다는군...

보통 어느 때 주로 사용 될까?

두 문자열을 비교 할때 잘못 알고 사용 하는 것 주의 하나가 문자열 동등비교를 ==로 한다는 것이다.
이것은 너무나 위험한 일이다.
언뜻 보기에는 버그로 보이지 않고 컴파일 시에도 에러가 발생하지 않는다.

하지만 이것은 찾아 내기 어려운 버그가 될수도 있고 치명적인 결과가 나타날수도 있다.
왜냐하면, 문자열의 비교에 있어서 == 은 두 문자열이 단지 같은 저장공간에 있는가 만을 비교하기 때문이다.


String A="aaa";
String B="aaa";

if(A==B)    <--- (X)
if(A.equals(B))  <---(O)

같은 문자열 일지라도 저장시킬때 다른 저장공간에 저장이 되어 있다면 이 둘의 동등비교시 ==을
사용하게 되면 이것은 false를 반환하게 된다.

그러므로 문자열 비교는 반드시 equals를 사용 해야 한다.

equalslgnoreCase : 두 문자열 비교 시 대소문자를 비교하지 않는다는 기능과
두 문자열의 비교시 우선 두 문자열의 길이가 같은지 먼저 확인함.

스크랩 : http://www.usingtech.co.kr/zboard/zboard.php?id=Java_Tip&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=4


JAVA Review Second Day~

Program_Language/Java 2010. 11. 4. 22:55 Posted by Request

1. 타입의 이해
- 타입을 쓰는 이유는?
☞타입별 메모리 크기 확보


2.식별자 역할: 데이터가 저장된 공간의 주소를 담는다.

3.연산자 역할 : 데이터를 확보된 공간에 할당한다.
할당된 주소값을 얻는다. 얻은 주소값을 누구에게 줄까?
바로~~~~ 식별자


4.데이터의 역할 : 연사자와 함께 비연산자로 사용된다.

5.return 이란?
연산을 수행하면 반드시 결과값을 되돌려 줘야 한다. 또한 타입도 되돌려줄때 사용한다.

6.연산은 메소드내에서만 이루어진다.

7.메소드의 구역은 어디인가?
{} 중괄호이다.