피씨컴의 기울어진 공관

'프로그래밍/공부'에 해당되는 글 55건

  1. 2013.02.18 3장 예제
  2. 2013.02.18 2장 예제
  3. 2013.02.17 4장 정리
  4. 2013.02.14 제 3장 조건문, 반복문 네임스페이스
  5. 2013.02.14 정식수업 2일차
  6. 2013.02.14 정식 공부 1일차 (2/13).
  7. 2013.02.13 2장 정리 (2/2)
  8. 2013.02.13 2장 정리 (1/2)
  9. 2013.02.04 17일
  10. 2013.02.03 16일차

3장 예제

프로그래밍/공부 2013. 2. 18. 23:22

★  3장_1번예제

#include <iostream>
using namespace std;

int main ( )
{
 int a=123;          
 cout << "a> 100 의 결과" << (a>100) << endl; 
 return 0;
}

● 주석 & 과정

  1. a에 123으로 초기화
  2. a==123 이고 a가 100보다 크기 때문에 조건 성립 결과는 true 즉 1


 

● 결과 & 스크린샷

 

 

★  3장_2번예제

#include <iostream>
using namespace std;
int main()
{
 int a=100;          
 cout << "정수 입력:";
 cin>> a;          
 if (a>100)          
 cout << a << "는 100 보다 크다" << endl;
 return 0;
}

● 주석 & 과정

  1. a를 100으로 초기화
  2. a에 입력
  3. a가 100보다 크다면의 조건이 성립 하면 밑에 문장이 실행됨

 

● 결과 & 스크린샷

 

 

 

★  3장_3번예제

#include <iostream>
using namespace std;
int main()
{
 int a;
 cout << "정수 입력";
 cin >> a;            
 if (a>100)            
 {              
  cout << "a의 값" << a << endl;
  cout << a << "는 100 보다 크다" << endl;
 }              
 cout << "즐거운 C++ 프로그램을 증료합니다 !!"<<endl; 
 return 0;
}

 

● 주석 & 과정

  1. a에다가 입력받음
  2. a가 100보다 크다면의 조건이 맞는다면 아래 문장이 실행됨.
  3. 괄호를 넣음으로서 지역이 생겼다.
  4. if의 지역의 끝인셈
  5.  마지막 문구를 넣음으로 좀더 친절한 프로그램이 됨

● 결과 & 스크린샷

 

 

 

★  3장_4번예제

#include <iostream>
using namespace std;
int main ( )
{
 int a; 
 cout << "정수 입력:";
 cin>> a;      
 if (a>100)      
 cout << " 100 보다 크다" << endl;
 else       
 cout << "100 보다작다" << endl;
return 0;
}

● 주석 & 과정

  1. a에 입력 받는다.
  2. a가 100보다 크다면의 조건이 성립하면 아래문장이 실행
  3. 위의 if 조건에 해당되지 않는다면 이 아래의 문장이 실행

● 결과 & 스크린샷

 

 

★  3장_5번예제

#include <iostream>
using namespace std;
int main ()
{
 int a;
 cout << "정수 입력:";
 cin >> a;        
 if (a>100)        
  cout << "100 보다크다" << endl;
 else         
 {
  if (a<100)       
   cout << "100 보다 작다" << endl;
  else        
   cout << "100 이다" << endl;  
 }
 return 0;
}

● 주석 & 과정

  1. 입력받는다 a에
  2. a가 100보다 크다면 아래 문장 실행
  3. 위 조건이 해당사항 없음 아래 문장 실행
  4. a가 100보다 작다면 아래문장 실행
  5. 위조건이 해당사항 없으면 아래 문장 실행 하지만 위에 100보다 크지도 않고 100보다 작지도 않기 때문에 이 소스가 의도한것처럼 결국 나머지 경우에수는 100 밖에 없기 때문에 100이라 당당히 출력한다.

 

 

● 결과 & 스크린샷

 

 

★  3장_6번예제

#include <iostream>
using namespace std;
int main()
{
 int jumsu;
 cout << "점수 입력:";
 cin >> jumsu;            
 if (jumsu<=100 && jumsu>=90)        
 cout << "당신의 성적은 A입니다" << endl;
 else              
 {
  if (jumsu<=89 && jumsu>=80)        
   cout << "당신의 성적은 B입니다" << endl;
  else             
  {
   if (jumsu<=79 && jumsu>=70)       
    cout << " 당신의 성적은 C입니다" << endl;
   else            
   {
    if (jumsu<=69 && jumsu>=60)      
     cout << " 당신의 성적은 D입니다"<< endl; 
    else           
     cout << "당신의성적은 F입니다" << endl;
   }
  }
 }

                
 return 0;
}

● 주석 & 과정

  1. jumsu에 입력받음
  2. jumsu가 100보다 작거나 같지만 90보단 크거나 같다 즉 90~100 이라면 아래 문장 실행
  3. 그게 아니라면 아래 문장 실행 즉 90아래라는 소리
  4. jumsu가 89보다 작거나 같고 80보단 크거나 같을때 즉 80~89 이라면 아래 문장 실행
  5.  그게 아니라면 아래문장 실행 즉 80아래라는 소리
  6. jumsu가 79보다 작거나 같고 70보단 크거나 같다면 즉 70~79이라면 아래문장 실행
  7. 그게 아니라면 아래문장 실행 즉 70아래라는 소리
  8. jumsu가 69보다 작거나 같고 60보단 크거나 같을때 즉 60~69 이면 아래문장 실행
  9. 그게아님 아래 실행 즉 F 학점이란 소리
  10. 이것의 형태는 if 안에 if 를 쓴 형태임. 좀 복잡해질 수 있음


 

● 결과 & 스크린샷

 

 

 

★  3장_7번예제

#include <iostream>
using namespace std;
int main ()
{
 int jumsu;
 cout << " 접수 입력:";
 cin>> jumsu;
 if ( jumsu<=100 && jumsu>= 90)    
 cout <<" 당신의 성적은 A입니다 " << endl;
 else if (jumsu<=89 && jumsu>=80)   
 cout << " 당신의 성적은 B입니다 " << endl;
 else if (jumsu<=79 && jumsu>=70)   
 cout << " 당신의 성적은 C입니다 " << endl;
 else if (jumsu<=69 && jumsu>=60)   
 cout << " 당신의 성적은 D입니다 " << endl;
 else          
 cout << " 당신의 성적은 F입니다 " << endl;

            
return 0;
}

● 주석 & 과정

  1.  jumsu가 100보다 작거나 같지만 90보단 크거나 같다 즉 90~100 이라면 아래 문장 실행
  2. 위 조건이 아니고 jumsu가 89보다 작거나 같고 80보단 크거나 같을때 즉 80~89 이라면 아래 문장 실행
  3. 위 조건이 아니고 jumsu가 79보다 작거나 같고 70보단 크거나 같다면 즉 70~79이라면 아래문장 실행
  4. 위 조건이 아니고 jumsu가 69보다 작거나 같고 60보단 크거나 같을때 즉 60~69 이면 아래문장 실행
  5. 위에 모든 조건에 해당사항 없음 아래 문장 실행
  6. else if 를 사용한 형태 가독성이 한층더 좋아졌다.


 

● 결과 & 스크린샷

 

 

 

 

★  3장_8번예제

#include <iostream>
using namespace std;
int main ( )
{
 int jumsu;
 cout << "접수 입력:";

 cin>>jumsu;

 if(jumsu>100 || jumsu<0)     
 cout << "잘못된 점수 입력입니다" << endl;
 else if (jumsu>=90)       
 cout << "당신의 성적은 A입니다" << endl;
 else if (jumsu>=80)       
 cout << "당신의 성적은 B입니다" << endl;
 else if (jumsu>=70)       
 cout << " 당신의 성적은 C입니다" << endl;
 else if (jumsu>=60)       
 cout << " 당신의 성적은 D입니다" << endl;
 else          
 cout << " 당신의 성적은 F입니다" << endl;
 return 0;
}

● 주석 & 과정

  1. 점수가 100 이상이거나 0이하이면 아래문장을 실행
  2. 위에 조건이 아니고 점수가 90보다 크거나 같다면 아래 문장을 실행
  3. 위에 조건이 아니고 점수가 80보다 크거나 같다면 아래 문장을 실행
  4. 위에 조건이 아니고 점수가 70보다 크거나 같다면 아래 문장을 실행
  5. 위에 조건이 아니고 점수가 60보다 크거나 같다면 아래 문장을 실행
  6. 위에 모든 조건이 해당사항 없음 아래 문장 실행

● 결과 & 스크린샷

 

 

 

 

★  3장_9번예제

#include <iostream>
using namespace std;
int main ( )
{
 int num;
 cout << " 숫자 입력 : ";
 cin>> num;             
 switch(num)             
 {
 case 1:
  cout << " 1 의 값이 입력되었습니다" << endl;
  cout << "************************" << endl;    
 case 2:
  cout << "2 의 값이 입력되었습니다" << endl;
  cout << "************************ " << endl;
 default:
  cout <<"1 또는 2 가 아닌 값이 입력되었습니다" << endl;
  cout <<"************************ " << endl;
 }
 return 0;
}

● 주석 & 과정

  1. 입력받고
  2. 입력받은 값에 따라 맞는 case에 문장을 실행
  3. break; 가 없기때문에 case1부터 시작하면 case1부터 defaule 까지 쫘라락 실행된다

● 결과 & 스크린샷

 

 

 

 

★  3장_10번예제

#include <iostream>
using namespace std;
int main()
{
 int num;
 cout << "숫자입력: ";
 cin>> num;             
 switch(num)             
 {
 case 1:
  cout << "1 의 값이 입력되었습니다" << endl;
  cout <<"************************" << endl;
  break;             
 case 2:
  cout << "2 의 값이 입력되었습니다" << endl;
  cout <<"************************" << endl;
  break;
 default:
  cout <<"1 또는 2 가 아닌 값이 입력되었습니다" << endl;
  cout << "************************" << endl;
                
 }
 return 0;
}

● 주석 & 과정

  1. 입력받음
  2. 입력받은 값에 따라 맞는 case에 문장을 실행
  3. break가 있기 때문에 case1이 실행되어도 break문을 만나면 끝나버림.
  4. 어짜피 마지막이기 때문에 break문은 필요 없음

 

● 결과 & 스크린샷

 

 

 

 

★  3장_11번예제

#include <iostream>
using namespace std;
int main()
{
 int score;
 cout << "점수 입력: " ;
 cin >>score;           
 switch(score/10)          
 {              
 case 10:
 case 9:
 cout << " 당신의 성적은 A입니다 "<< endl;
 break;
 case 8:
 cout << " 당신의 성적은 B입니다 " << endl;
 break;
 case 7:
 cout << "당신의 성적은 C입니다" << endl ;
 break;
 case 6:
 cout << "당신의 성적은 D입니다" << endl;
 break;
 case 5:
 case 4:
 case 3:
 case 2:
 case 1:
 case 0:
 cout << " 당신의 성적은 F입니다 " << endl;
 break;
 default:
 cout << "접수를 잘못 입력했습니다" << endl;
 }
 return 0;
}

● 주석 & 과정

  1. 입력받고
  2. 입력받은 값을 10으로 나누면 2자리중 마지막 일의 자리가 뒤로 날라가고 십의자리만 남음
  3. 그걸 가지고 스위치로 성적을 매김.

● 결과 & 스크린샷

 

 

★  3장_12번예제

#include <iostream>
using namespace std;
int main()
{
 int i;
 for (i=1; i<=5; i++)        
 cout << "i=" << i << endl;
 cout << "반복문 for 이후 i 의 값" << i<< endl;
 return 0;
}

● 주석 & 과정

i를 1로 초기화하고 i가 5보다 작다면 밑애 문장을 실행하고 그뒤 i++하며 앞의 조건이 false가 될때까지 반복한다.

 

● 결과 & 스크린샷

 

 

 

 

★  3장_13번예제

#include <iostream>
using namespace std;
int main()
{
 int i;
 i=1;       
 for ( ;i <=5;)     
 {
 cout << "i=" << i << endl;
  i++;      
 }

 cout << "**** ****** " << endl;
 i=1;       
 for (;;)      
 {
  cout << "i=" << i << endl;
  i++;      
  if (i>5)     
   break;     
 }
 return 0;
}

● 주석 & 과정

  1. i를 1로 수정
  2. 조건이 true면 false일때 까지 반복 i가 5보다 작거나 같다면? 참 true이기에 반복에 들어감
  3. i를 1씩 증가시킴
  4. i를 1로 수정
  5. 무한반복
  6. i를 1씩 증가시킴
  7. i가 5보다 크다면 아래문장을 실행
  8. 반복문에서 나감

 

● 결과 & 스크린샷

 

 

 

 

★  3장_14번예제

#include <iostream>
using namespace std;
int main ( )
{
 int i;

 i=1;           
 while (i<=5)         
 {
  cout << "i=" << i << endl;
  i++;          
 }
 cout << " 반복문 while 이후 i의 값" << i<< endl;
 return 0;
}

● 주석 & 과정

  1. i를 1로 수정
  2. 조건이 참이면 반복 i가 5보다 작기 때문에 참임 반복
  3. i를 1씩 증가 후치이기 때문에 이 이후에 증가됨
  4. i가 6이 되어야 반복문의 조건이 참이 아니게 되므로 결과는 6 수의 차이는 증감연산자 후치형이기 때문

● 결과 & 스크린샷

 

 

 

 

 

★  3장_15번예제

#include <iostream>
using namespace std;
int main ()
{
 int score; 
 do{                
  cout << "접수 입력:";
  cin >> score;            
 }while(score>100 || score<0);         
 cout << "당신이 입력한 접수는 " << score << " 입니다" << endl;
 return 0;
}

● 주석 & 과정

  1. do while은 일단 한번은 실행하고 시작한다.
  2. 입력받고
  3. 만약 조건이 참이면 계속 반복이다 이경우0보다 작거나 100보다 큰수를 입력하면 다시 입력하게 한다.


 

● 결과 & 스크린샷

 

 

 

 

★  3장_16번예제

#include <iostream>
using namespace std;
int main ( )
{
 int score;
 char flag= 'Y';                 
 do {
  if (flag== 'n' )               
   cout << "접수의 범위가 잘못되었습니다. 다시 입력하세요! !!" << endl;
  cout << "점수 입력:";
  cin >> score;                
  flag='n' ;                 
 } while (score>100 || score<0);             
 cout << " 당신이 입력한 접수는 " << score << " 입니다 . " << endl;
}

● 주석 & 과정

  1. flag를 문자 y로 추기화
  2. flag가 문자n이면 아래 문장 실행 
  3. 입력
  4. flag를 문자 n으로 수정 만약 밑에 조건이 참이여서 반복하면 위에 if를 만나게됨
  5. 만약 조건이 참이면 계속 반복이다 이경우0보다 작거나 100보다 큰수를 입력하면 다시 입력하게 한다.


 

● 결과 & 스크린샷

 

 

 

 

★  3장_17번예제

#include <iostream>
using namespace std;
int main ( )
{
 int i;
 for (i=1; i<10; i++)    
 { 
  if (i%2 == 0)     
  continue;      
  cout << "i= " << i << endl;
 }
 return 0;
}

● 주석 & 과정

  1. i를 1로 수정하고 i가 10보다 작은 조건이 참일때 동안 밑에문장 실행 반복하며 i++한다.
  2. i의 값을 2로 나머지를 구해서 0이면 (짝수이면)
  3. 이걸 실행시켜라 그럼 밑에꺼  패스!

 


 

 

● 결과 & 스크린샷

 

 

 

★  3장_18번예제

#include <iostream>
using namespace std;
int main ()
{
 int i , j;   
 for (i=1; i <=2; i++)      
 {
  for (j=1; j<=3; j++)     
  {
   cout << "i=" << i <<" ";   
   cout << "j=" << j <<endl;
  }
  cout << "*******************" << endl;
 }
 return 0;
}

● 주석 & 과정

  1. i를 1로 수정 만약 i가 2보다 작거나 같다면 계속 반복하고 그담에 i++
  2. 반복문안에 반복문의 형태 j=1로 수정 만약 j 가 3보다 작거나 같다면 계속반복 그담에 j++

 

● 결과 & 스크린샷

 

 

 

 

★  3장_19번예제

#include <iostream>
using namespace std;

int main()
{
 int a , i;           
 int r=1;           
 char flag= 'y';          
 do {            

  if (flag== 'n' )        
   cout << "앙수를 입력하세요" << endl;

 cout <<"정수 입력: " ;    
 cin >>a;           
 flag= 'n';           

 } while (a<0);          
              

 for (i=1; i<=a; i++)        
  r=r*i;           
 cout << a << "!="<< r << endl;      
 return 0;
}

● 주석 & 과정

//정수형 변수 a와 i를 선언
//정수형변수 r선언하고 1로 초기화
//문자형 flag선언하고 'y'로 초기화
//반복전 1번은 실행함.

//floag가 'n'이면 아래 내용 실행

 

//입력
//flag를 'n'으로 수정

//a가 0보다 작으면 내용을 반복함 이는 정수형 이외의 값을 넣었을때
//경고를 출력하고 다시입력을 받기 위해 들어간 루틴

//i를 1로 수정  i가 a보다 작거나 같다면 계속 반복 그 후 i++
//1부터 입력한 수까지 차례대로 곱하여 누적
// 그리고 출력


 

● 결과 & 스크린샷

 

 

 

★  3장_20번예제

#include <iostream>
using namespace std;

void TEST();         

int main()
{
 cout << "main() 함수 시작입니다 " << endl;
 TEST();          
 cout << "main ( ) 함수 종료합니다 " << endl;
 return 0;
}
void TEST ()         
{
 cout << "TEST 함수입니다.!!!!" << endl;
}

● 주석 & 과정

  1. 함수를 선언
  2. 함수를 동작하는 부분
  3. 동작하는 부분 해당 함수의 몸통


 

● 결과 & 스크린샷

 

 

 

★  3장_21번예제

#include <iostream>
using namespace std;
int main ( )
{             
 int a=100;          
 cout << "main () 범위입니다. " << endl;   

 for (int i=1; i<3; i++)       
 {            
  cout << " 반복문 for 의 범위입니다" << endl;
  cout << "i= " << i << endl;
 }            
 cout << "프로그램을 종료합니다" << endl;
 return 0;          
}             

● 주석 & 과정

  1. main함수 내부의 영역의 시작
  2. a 선언하고 100으로 초기화
  3. int i를 선언 하고 1로 초기화 i가 3보다 작다면 반복후 i++
  4. 여기서부턴 for문의 영역
  5. 여기까지가 for문의 영역의 끝
  6. main함수 내부의 영역의 끝

 

● 결과 & 스크린샷

 

 

 

 

★  3장_22번예제

#include <iostream>
using namespace std;
int main ( )
{
 int a=100;           
 cout << "main() 범위입니다" << endl;

 for (int i=1; i<3; i++)        
 {             
  int a=200;          
  cout << " 반복문 for의 범위입니다" << endl;
  cout << "i= " << i << endl;      
  cout << "a=" << a << endl;      
 }             
  cout << "a=" << a << endl;      
  cout << "프로그램을 종료합니다"<< endl;
 return 0;
}

● 주석 & 과정

  1. main함수 영역의 int a를 선언하고 100을 초기화
  2. int i를 선언하고 1로초기화 i가 3보다 작으면 반복하고 i++
  3. for의 영역 시작
  4. for의 영역에서 int a를 선언하고 200을 초기화 main의 a와는 별개
  5. i를 출력
  6. 200을 출력 그 이유는 서로다른 영역에 같은 이름의 변수가 있다면 현제 영역의 변수에 우선순위가 있기 때문 그렇기 때문에 이 for 영역의 int a 가 우선순위로 표시됨
  7. 100을 출력 for안의 a 는 그 유통기간이 그 영역 안까지이며 이렇게 밖으로 나오면 현제 main영역의 a변수에 그 우선순위가 주어짐

 

 

● 결과 & 스크린샷

 

 

 

 

★  3장_23번예제

#include <iostream>
using namespace std;
namespace NS_1 {          
 int a=200;           
}
int main()
{
 int a=100;           
 cout << "main ( ) 범위입니다" << endl;
 for (int i=1; i<3; i++)        
 {    
 cout << "반복문 for 의 범위입니다" << endl;  
 cout << "i= " << i << endl;       
 cout << "namespace NS_1 의 a=" << NS_1::a << endl; 
 cout << "a=" << a << endl;       
 }
 cout << "namespace NS_1 의 a=" << NS_1::a << endl; 
 cout << "a=" << a << endl;       
 cout << "프로그램을 종료합니다" << endl;
 return 0;
}

● 주석 & 과정

  1. namespace NS_1는 영역 만들고 그곳엔 int a가 있고 200으로 초기화
  2. main영역에 int a를 선언하고 100으로 초기화
  3. int i를 선언하고 1을 초기화, i가 3보다 작으면 반복하고 i++ 함.
  4. i를 출력
  5. NS_1의 네임스페이스 영역의 a를 출력하기 때문에 200
  6. main영역의 a를 출력하기 때문에 100
  7. NS_1의 네임스페이스 영역의 a를 출력하기 때문에 200
  8. main영역의 a를 출력하기 때문에 100

 

 

● 결과 & 스크린샷

 

 

 

 

★  3장_24번예제

#include <iostream>
//using namespace std;          

namespace NS_1
{
 int a=200;
}
int main()
{
 int a=100;
 cout << "main ( ) 범위입니다" << endl;     
 for (int i=1; i<3; i++)
 {
  cout << "반복문 for의 범위입니다" << endl;   
  cout << "i= " << i << endl;
  cout << "namespace NS_1 의 a=" << NS_1::a << endl;
  cout << "a=" << a << endl;       
 }
 cout << "namespace NS_1 의 a=" << NS_1 ::a << endl;  
 cout << "a=" << a << endl;        
 cout << "프로그램을 종료합니다" << endl;    
 return 0;
}

● 주석 & 과정

  1. 이것을 지움
  2. 위에 using에서 std를 지웠기 때문에 cout이나endl을 찾을 수 없다. 사용하려면 네임스페이스를 지정해줘야한다.
  3. 위에 using에서 std를 지웠기 때문에 cout이나endl을 찾을 수 없다. 사용하려면 네임스페이스를 지정해줘야한다.
  4. 위에 using에서 std를 지웠기 때문에 cout이나endl을 찾을 수 없다. 사용하려면 네임스페이스를 지정해줘야한다.
  5. 위에 using에서 std를 지웠기 때문에 cout이나endl을 찾을 수 없다. 사용하려면 네임스페이스를 지정해줘야한다.
  6. NS_1 네임스페이스 명시하였고 그안의 맴버를 사용하였으므로 이건 NS_1안에 a를 정상 출력가능하지만 이것의 cout endl 역시 네임스페이스 지정이 안되어있어서 에러.


 

● 결과 & 스크린샷

결과이건 스샷이건 에러만 나옴

 

 

 

★  3장25_번예제

#include <iostream>
//using namespace std;
namespace NS_1
{
 int a=200;               
}                    
int main ()
{
 int a=100;
 std::cout << "main() 범위입니다. " << std::endl;     
 for (int i=1; i <3; i++)
 {
  std::cout << "반복문 for 의 범위입니다" << std::endl;   
  std::cout << "i= " << i << std::endl;       
  std::cout << "namespace NS_1 의 a= " << NS_1 ::a << std::endl; 
  std::cout << "a=" << a << std::endl;       
 } 
 std:: cout << "namespace NS_1 의 a=" << NS_1::a<< std::endl;  
 std::cout << "a=" << a << std::endl;        
 std:: cout << "프로그램을 종료합니다" << std::endl;     
 return 0;
}

● 주석 & 과정

  1. namespace NS_1는 영역 만들고 그곳엔 int a가 있고 200으로 초기화
  2. namespace를 직접 명시하기 때문에 cout 과 endl을 쓸수있다.
  3. namespace를 직접 명시하기 때문에 cout 과 endl을 쓸수있다.
  4. 이곳에 endl은 책의 소스상 직접 명시하지 않았으나 의도가 아닌듯하여 직접 지정함.
  5. namespace를 직접 명시하기 때문에 cout 과 endl을 쓸수있다.
  6. namespace를 직접 명시하기 때문에 cout 과 endl을 쓸수있다.
  7. namespace를 직접 명시하기 때문에 cout 과 endl을 쓸수있다.
  8. namespace를 직접 명시하기 때문에 cout 과 endl을 쓸수있다.
  9. namespace를 직접 명시하기 때문에 cout 과 endl을 쓸수있다.


 

● 결과 & 스크린샷

 

 

★  3장_26번예제

#include <iostream>
using namespace std;
namespace SAM_1
{
 int a=100;         
}            

namespace SAM_2
{   
 int b=200;         
}            
int main ( )
{
 cout << "SAM_1 의 a: " << SAM_1::a << endl; 
 cout << "SAM_2 의 b: " << SAM_2::b << endl; 

● 주석 & 과정

 

  1. namespace SAM_1는 영역 만들고 곳엔 int a가 있고 100으로 초기화
  2. namespace SAM_2는 영역 만들고 그곳엔 int a가 있고 200으로 초기화
  3. namespace sam_1을 직접 지정하여 그안에 a를 사용 100출력
  4. namespace sam_2을 직접 지정하여 그안에 a를 사용 200출력

● 결과 & 스크린샷

 

 

 

 

 

 

★  3장_27번예제

#include <iostream>
using namespace std;

namespace SAM_1
{
 int a=100;       
}          
namespace SAM_2
{
 int b=200;       
}          

int main ( )
{
 using namespace SAM_1;    
 using namespace SAM_2;    
 cout << "SAM_1 의 a: " << a << endl;
 cout << "SAM_2 의 b: " << b << endl;

● 주석 & 과정

  1.  namespace SAM_1는 영역 만들고 그곳엔 int a가 있고 100으로 초기화
  2. namespace SAM_2는 영역 만들고 그곳엔 int b가 있고 200으로 초기화
  3. main함수 내에서 사용된 변수나 함수중에 SAM_1의 맴버가 있다면 소속을 명시하지 아니하겠다는 의미
  4. main함수 내에서 사용된 변수나 함수중에 SAM_2의 맴버가 있다면 소속을 명시하지 아니하겠다는 의미
  5. 위에 명시했으므로 직접 네임스페이스를 지정할 필요가 없다. Sam_1의 맴버 a의 100 출력
  6. 위에 명시했으므로 직접 네임스페이스를 지정할 필요가 없다. Sam_2의 맴버 b의 200 출력

 

● 결과 & 스크린샷

 

 

 

★  3장_28번예제

#include <iostream>
using namespace std;

namespace SAM_1
{
 int a=100;       
}          
namespace SAM_2       
{          
 int a=200;       
}          
int main()
{
 using namespace SAM_1;    
 using namespace SAM_2;    
 cout << "SAM_1 의 a: " << a << endl;
 cout << "SAM_2 의 a: " << a << endl;
}

 

● 주석 & 과정

  1. namespace SAM_1는 영역 만들고 그곳엔 int a가 있고 100으로 초기화
  2. namespace SAM_2는 영역 만들고 그곳엔 int a가 있고 200으로 초기화
  3. main함수 내에서 사용된 변수나 함수중에 SAM_1의 맴버가 있다면 소속을 명시하지 아니하겠다는 의미
  4. main함수 내에서 사용된 변수나 함수중에 SAM_2의 맴버가 있다면 소속을 명시하지 아니하겠다는 의미
  5. SAM_1에도 SAM_2에도 같은 이름의 변수가 있다 그래서 어느건지 찾기 애매하여 애매하다는 에러가 난다. 해결하려면 직접 명시해줘야한다.
  6. SAM_1에도 SAM_2에도 같은 이름의 변수가 있다 그래서 어느건지 찾기 애매하여 애매하다는 에러가 난다. 해결하려면 직접 명시해줘야한다.
  7. 모범답안↓ 아래처럼 바꾸면 된다.

    std::cout << "SAM_1 의 a: " << SAM_l::a << std::endl;
    std::cout << "SAM_2 의 a: " << SAM_2::a << std::endl;


 

● 결과 & 스크린샷

'프로그래밍 > 공부' 카테고리의 다른 글

2장 _연습문제  (0) 2013.02.19
4장 예제  (0) 2013.02.19
2장 예제  (0) 2013.02.18
4장 정리  (0) 2013.02.17
제 3장 조건문, 반복문 네임스페이스  (0) 2013.02.14
Posted by 피씨컴

2장 예제

프로그래밍/공부 2013. 2. 18. 22:44

★  2장_1번예제

 

#include <iostream>
using namespace std;

int main (void)
{

 int kor, math, eng, sum;   
 float average;      

 kor=100;       
 math=98;       
 eng=79;        

 sum=kor+math+eng;     
 average=sum/(float)3;    
          
          
          

 cout <<" 총접 " << sum <<endl;  
 cout <<" 평균 " << average <<endl; 

 return 0;
}

 

● 주석 & 과정

  1. 국어, 수학, 영어, 합계 저장용 정수형 변수 선언
  2. 평균 구할 실수형 변수를 선언 (평균은 실수도 나오니까)
  3. 국어 점수 입력
  4. 수학 점수 입력
  5. 영어 점수 입력
  6. sum변수에 국어, 수학, 영어 점수를 함한 값을 넣어줌
  7. average 변수에 앞서 총합계를 내고 저장한 변수 sum에 나누기 3을 해주고 3앞에 형변환 연산자
  8. (float)는 sum도 int 형이고 3도 int 형이여선 실수값이 나오질 않기 때문에 둘중 하나에 실수로 형변환
  9. 하여 두수의 결과가 실수로 나올 수 있도록 하여 저장함.
  10. 총점 출력
    평균 출력

     

    ● 결과 & 스크린샷

     


     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    ★  2장_2번예제

    #include <iostream>
    using namespace std;
    int main()
    {
     int num1 , num2 ;    

    cout << "정수l 입력" ;   
     cin >>num1;      

      cout << " 정수2 입력 : ";
      cin>> num2;     

      cout << num1 << " + "<< num2<<" = "<< num1+num2 << endl;  

      cout << num1 << " - "<< num2<<" = "<< num1-num2 << endl;  

      cout << num1 << " * "<< num2<<" = " << num1*num2 << endl; 

      cout << num1 << " / "<< num2<<" = "<< num1/num2 << endl;  

     return 0;
    }

     

     

    ● 주석 & 과정

    1. 정수를 입력받을 num1과 num2를 선언한다.
    2. num1에 입력을 받는다.
    3. num2에 입력을 받는다.
    4. num1 + num2를 실제 연산하여 결과를 출력
    5. num1 - num2를 실제 연산하여 결과를 출력
    6. num1 * num2를 실제 연산하여 결과를 출력
    7. num1 / num2를 실제 연산하여 결과를 출력

     

    ● 결과 & 스크린샷

     


     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    ★  2장_3번예제

    #include <iostream>
     using namespace std;

    int main ()
    {
     int r;    

     float CArea, Cference;  

     cout << "반지름 입력:";
     cin >> r;     

     CArea=2* (float)3.14 *r ; 
     Cference=r*r*(float)3.14;

     cout << " 원의 넓이 " << CArea << endl;   

     cout << " 원의 면적 " << Cference << endl;  

     return 0;
    }

     

     

    ● 주석 & 과정

    1. 반지름을 입력받기 위한 int 변수 선언
    2. 넓이와 면적을 저장하기 위한 변수 선언
    3. r 변수에 반지름을 입력 받는다.
    4. CArea변수에 원의 넓이를 연산하여 넣는다.
    5. Cference 변수에 면적을 연산하여 넣는다.
    6. 결과 출력
    7. 결과 출력

     

    ● 결과 & 스크린샷



     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    ★  2장_4번예제

     

    #include <iostream>
    using namespace std;

     int main()
     {

      float su;
      int n , i , imsi;

      cout << "실수 입력: ";
      cin>> su;        
      cout << "반올림 자릿수 입력:";
      cin>> n;         
      for (i=0; i <n; i++)    

       su=su*10;

      su=su+5;        

     imsi=( int)su/10;    

     su=(float)imsi;    


     for (i=0; i <n-1; i++)    

      su=su/ 10;      

      cout << " 반올림 결과값" << su << endl; 

      return 0;
     }

     

    ● 주석 & 과정

    1. 실수를 입력함.
    2. 반올림 자릿수 입력
    3. 반올림 자리수 까지 실수에 10을 곱함. 그럼 그 대상 자릿수의 숫자가 . 위로 올라옴
    4. 위로 올라간 값에 +5를 더하면 그 윗자리에 자연스레 +1 즉 반올림 효과가 남.
      그 상태로 su변수의 10을 나눠주면 맨처음 반올림할때 사용한 대상 값이 .밑으로 내려감
      그리고 이것을 int형 형변환으로 해준후 정수형 변수 imsi에 넣어줌으로서 
      뒤로 밀려난 처음 반올림할때 사용한 대상값이 날람. 결과적으론 처음.위에 있던 수와
      반올림 되어진 수만 남게 됨.
    5. 하지만 반올림 되어질 놈을 밑으로 내리기 위해선 실수변수에 넣어질 필요가 있으므로 실수로 형변환
    6. 그리고 반올림 했던 놈의 제자리를 찾기위해 .뒤로 보내기 위해 나누기 10을 함 그럼 . 뒤로 내려가는데 여기서 처음 반올림 자릿수의 -1 을 해준것은 위에서 한번 /10을 해줘서 이미 한칸은 내려와 있기 때문.
    7. 결과값 출력

     

    ● 결과 & 스크린샷

     

     

     

    ★  2장_5번예제

    #include <iostream>
    using namespace std;

    int main ( )
    {
     int height , weight;
     float std_weight;
     cout << " 키 입력:";
     cin>> height;      

     cout << "몸무게 입력:";
     cin>> weight;       

     std_weight=(height-100)*0.9f;   

     cout << " 표준 몸무게 " << std_weight << endl;
     if (weight < (std_weight*0.9f))  
      cout << "저체중입니다 " << endl;
     else if (weight > (std_weight*1.2f)) 

      cout << "과체중입니다" << endl;
     else       

      cout << "정상체중입니다" << endl;
     return 0;
    }

     

    ● 주석 & 과정

    1. 키입력
    2. 몸무게 입력
    3. 사용자가 입력한 키 데이터를가지고 표준 몸무게 공식에 의거해 표준 몸무게를 계산한다.
    4. 나온표준 몸무게에 0.9를 곱하여 저체증 표준을 정하여 입력한 몸무게와 비교하여 작으면 저체중 아니면 다음으로 넘어갑니다.
    5. 표준 몸무게에 1.2를 곱하여 과체증 표준을 정하고 그것을 입력된 몸무게와 비교하여 입력된 몸무게가 더크면 과체중 아니면 다음으로 넘어갑니다.
    6. 위에 조건들이 모두 해당이 안되면 실행이 되며 결과론 표준보다 낮지도 높지도 않다는 뜻이기에 정상체중입니다.

    ● 결과 & 스크린샷

     

     

     

     

     

     

    ★  2장_6번예제

    #include <iostream>
    using namespace std;
    int main ()
    {
        cout << "int 헝 변수의 크기" << sizeof(int) << "바이트" << endl;    

       cout << "char형 변수의 크기" << sizeof(char) << "바이트" << endl;    

      cout << "double 헝 변수의 크기" << sizeof(double) << "바이트" << endl;   

     return 0;
    }

    ● 주석 & 과정

    1. sizeof는할당된 기억장소의 크기를 구하는 동작을 수행합니다.
    2. sizeof로 int자료형의 크기를 확인합니다.
    3. sizeof로 char자료형의 크기를 확인합니다.
    4. sizeof로 double자료형의 크기를 확인합니다.

    ● 결과 & 스크린샷

     

     

     

    ★  2장_7번예제

    #include <iostream>
    using namespace std;
    int main ()
     {
     int num1 , num2;           
     int sum, sub, mul , div1;
     double div2;
     cout.setf(ios_base::fixed, ios_base::floatfield);  

     cout << "정수 입력:";
     cin>> num1;           

     cout << " 정수 입력 : " ;
     cin>> num2;            

     sum=num1+num2;           

     sub=num1-num2 ;            

     mul=num1 *num2 ;         

     div1=num1/num2;            
     div2=num1 / num2;          

     cout << " 덧셈 결과" << sum << endl;
     cout << "밸셈 결과" << sub << endl;
     cout << "곱셈 결과" << mul << endl;
     cout << "나눗셈 (int) 결과" << div1 << endl;
     cout << "나눗셈 (double) 결과" << div2 << endl;
     div2=num1/(double)num2;         

     cout << "나눗셈 (double) 결과" << div2 << endl;
     return 0;
    }

    ● 주석 & 과정

    1. 고정소수점표기 사용
    2. 정수 num1에 입력
    3. 정수num2에 입력
    4. num1 과 num2를 더한 값을 sum에 저장 
    5. num1 과 num2를 뺀 값을 sub에 저장
    6. num1 과 num2를 곱한 값을 mul에 저장
    7. num1 과 num2를 나눈 값을 div1에 저장 (int형)
    8. num1 과 num2를 나눈 값을 div2에 저장 (float)변수에 저장하나 int와int의 나눗셈이므로 소숫점 뒷자리는 짤린다.
    9. num1과 num2 모두 int 지만 num2를 실수로 형변환 함으로서 결과값은 소수점 뒷자리까지 짤리지 않고 나오며같은 실수변수인 div2에 저장되므로 2.5000가 될수 있다.

     

     

    ● 결과 & 스크린샷

     

     

     

    ★  2장_8번예제

    #include <iostream>
    using namespace std;
    int main ( )
    {
     int a=23 , r=0;
     r=a+1;   
     cout << a << " + 1 =" << r << endl; 

     a=2147483647;  

     r=a+1;    

     cout << a << " + 1 =" << r << endl;
           

    return 0;
    }

    ● 주석 & 과정

    1.  a에다가 +1을 하고 r변수에 저장
    2.  그리고 r을 출력
    3. a 에다가 2147... 로 재 초기화
    4. a에다가 +1한 값을 r에 저장
    5. 이때 r 변수는 2147483648 이 나와야 하는데 -2147483648가 출력이 된다.  그이유는 자료형이 표현할수 있는 최대 값을 넘었기 때문.
      이렇게 최대값을 넘는 경우 다시 최소값부터 진행되어 -2147483648 나오는것
      만약 2147483647에 3을 더하면 같은 이유로 -2147483646이 된다.

    ● 결과 & 스크린샷

     

     

     

    ★  2장_9번예제

    #include <iostream>
    using namespace std;
    int main ( )
    {
     int a=20 , b=3;
     float c , d;
     c=a/ 3.5f;   
     d=a/b;    
          
     cout << " 연산 결과: 정수헝" << c << endl;
     cout << " 언산 결과: 실수형" << d << endl;
     return 0;
    }

    ● 주석 & 과정

    1. 정수와 실수의 연산이므로 결과는 실수값이 출력된다.
    2. 정수와 정수의 연산이므로 결과는 정수값이 출력된다.
    3. 이를 해결하려면 다음과 같이 실수로 형변환을 해야한다.
      d= (float) a /b;

    ● 결과 & 스크린샷

     

     

     

    ★  2장_10번예제

    #include <iostream>
    using namespace std;
    int main()
    {
     int num1=10 , num2=4;  

     int result;
     result=num1 / num2;   

     cout << "10 / 4 = 2"<< endl; 
     cout << num1 << " / " << num2 <<" = "<< result << endl;  

     return 0;
    }

    ● 주석 & 과정

    1. num1과num2에 각각 10과 4로초기화
    2. result 에 num1과 num2의 연산 값 할당
    3. 출력

    ● 결과 & 스크린샷

     

     

     

    ★  2장_11번예제

    #include <iostream>
    using namespace std;
    int main()
    {
     int a=100 , b=32;  
     int q , r;
     q=a/b;     
     r=a%b;     
     cout << a << " / " << b << "의 몫"<< q << endl;  
     cout << a << " / " << b << "의 나머지"<< r << endl; 

    return 0;
    }

    ● 주석 & 과정

    1. 각각 a,b에 100과 32로 초기화 한다.
    2.  나누어 몫을 구하고
    3.  나머지를 구한다.
    4. 그리고 출력
    5. 그리고 출력

    ● 결과 & 스크린샷

     

     

    ★  2장_12번예제

    #include <iostream>
    using namespace std;
    int main ()
    {
     int a;   

     a=a+1;   
     a=a+1;   a=a+1;    

     cout << "a의 값" << a << endl; 
     return 0;
    }

    ● 주석 & 과정

    1.  선언은 했지만 초기화는 안했다.
    2. 그상태에서 +1 을 하고
    3. +1 을 하고 
    4. +1 을 하면
    5. 에러가 난다. 초기화도 안하고 쓰레기 값에 +1을 한 결과이다.

    ● 결과 & 스크린샷

     

     

     

    ★  2장_13번예제

    #include <iostream>

    using namespace std;
    int main()
    {
     int i_add, i_mul;
     i_add=0;  

     i_mul=1;  

     i_add+=5;  

     i_add+=5;  

     i_add+=5;  

     i_mul*=5;  

     i_mul*=5;  

     i_mul*=5;  

     cout << "덧셈 누적 결과:"<< i_add << endl;
     cout << "곱셈 누적 결과:"<< i_mul << endl;
     int a=10;   

     a++;    

     cout << "a=" << a << endl; 

     cout << "a=" << a++ << endl; 

     cout << "a=" << ++a << endl; 

     cout << "a=" << a << endl;  


     return 0;
    }

     

    ● 주석 & 과정

    1. 0으로 초기화
    2. 1로 초기화
    3. i_add변수에 i_add = i_add+5; 연산을함
    4. i_add변수에 i_add = i_add+5; 연산을함
    5. i_add변수에 i_add = i_add+5; 연산을함
    6. i_mul변수에 i_mul = i_mul*5; 연산을함 5 *1
    7. i_mul변수에 i_mul = i_mul*5; 연산을함 5 *2 = 25
    8. i_mul변수에 i_mul = i_mul*5; 연산을함 25 * 5 = 125
    9.  정수형 변수 a을 10로 초기화
    10.  a를 +1 후치형으로 업
    11.  출력 결과11
    12. 후치형으로 1+ 하지만 여기에선 증가한 값은 안나오고 현제값만 나옴 결과 11 
    13. a의 앞에서 증가한 값에 전치형 증감연산 +1을 더함 결과13
    14.  그리고 출력 결과13

     

    ● 결과 & 스크린샷

     

     

     

    ★  2장_14번예제

    #include <iostream>
    using namespace std;
    int main()
    {
     bool a=true;     

     cout << "a= " << a << endl; 

     a=false;      

     cout << "a= " << a << endl;  

     a=-98;       

     cout << "a= " << a << endl;  

     a=0;       

     cout << "a= " << a << endl; 

    return 0;
    }

     

    ● 주석 & 과정

    1. a를 true로 초기화
    2. a를 출력 a가 true 즉 참이기 때문에 1출력
    3. a를 false로 수정
    4. a를 출력 a가 false 즉 거짓이기 때문에 0출력
    5. a를 -98로 수정
    6. a가 0이 아니기 때문에 true 출력(0이 아니면 모두 참임)
    7. a를 0으로 수정
    8. a를 출력 a가 0 즉 false 거짓이기 때문에 0출력

     

    ● 결과 & 스크린샷

     

     

     

    ★  2장_15번예제

    #include <iostream>
    using namespace std;
    int main()
    {
     bool a;            
     a=10>3;            
     cout << "10>3 의 결과" << a << endl;    
     a=13<=10;           
     cout << "13<=10 의 결과" << a << endl;    
     a=20!=20;           
     cout << "20! =20 의 결과" << a << endl;    
     a=(3+10) && (4<3);         
     cout << " (3+10) && (4<3) 의 결과" << a << endl; 
     a=(3+10) || (4<3 );         
     cout << "( 3+10) || (4<3 ) 의 결과" << a << endl; 
     a=!3;            
     cout << "!3 의 결과" << a << endl ;     
     return 0;
    }

    ● 주석 & 과정

    1. bool 형 a 선언
    2. 10이 3보다 크므로 a가 true 가 됨
    3. a 가 true 이므로 1 출력
    4. 13이 10보다 작거나 같음의 조건이 충족 안됨 false
    5. a 가 false 이므로 0 출력
    6. 20은 20과 같지 않다 의 조건이 충족 안됨 false
    7.  a 가 false 이므로 0 출력
    8. 3+10 왼쪽이 참 오른쪽 (4<3) 이 거짓이기에 모두 참이어야하는 && 특성상 조건 미충족 false
    9. a 가 false 이므로 0 출력
    10. 3+10 왼쪽이 참 오른쪽(4<3)이 거짓 하지만 어느 한쪽만 참이기만 하면 되는 ||특성상 조건 충족 true
    11. a 가 true 이므로 1 출력
    12. 0이 아닌것은 참이다 !은 참이면 거짓인 특성상 false
    13. a 가 false 이므로 0 출력


     

    ● 결과 & 스크린샷

     

     

     

    ★  2장_16번예제

    #include <iostream>
    using namespace std;
    int main()
    {
     int a=1234 , b=0x12345678;             

                        
                        
     cout << hex << "16 진수 a =" << a << dec << " \t \t 10 진수 a "<< a << endl;
     cout << hex << "16 진수 b =" << b << dec << "\t10 진수 b "<< b << endl;  
     return 0;
    }

    ● 주석 & 과정

    1.   각각 1234와 0x12345678로 초기화 0x가 붙는 것 이것은 16진수로 표기한 수임을 나타냄
    2. hex와 dec가 사용되었다. 이는 화면에 출력하는 포뱃을 결정히는 것으로
    3. hex는 다음에 출력되는 숫자는 16진수로 표기하라는 뭇이며 dec는 10진수로 표기하라는 뜻.
    4. 출력

    ● 결과 & 스크린샷

     

    ★  2장_17번예제

    #include <iostream>
    using namespace std;
    int main ( )
    {
     int a=0x12345678 , b , c , d , e;          
     b=a>>4;                 
     c=a<<4;                 
     d=a^b;                 
     e=-a;                 
     cout << hex << "16 진수 b =" << b << dec << "\t 10 진수 b "<< b << endl;
     cout << hex << "16 진수 c = " << c << dec << "\t 10 진수 c "<< c << endl;
     cout << hex << "16 진수 d =" << d << dec << "\t 1O 진수 d "<< d << endl;
     cout << hex << "16 진수 e =" << e << dec << "\t 10 진수 e "<< e << endl;
     return 0;
    }

    ● 주석 & 과정

    1. a에 16진수 0x12345678선언 그밖에 b,c,d,e도 선언
    2. a를 오른쪽 4만큼 쉬프트 연산하고 그 결과값을 b에 저장
    3. a를 왼쪽 4만큼 쉬프트 연산하고 그 결과값을 c에 저장
    4. a에 b값을 XOR연산하고 그 결과 값을 d에 저장
    5. e에 a만큼 - 를 함.
    6. 출력

    ● 결과 & 스크린샷

     

     

    ★  2장_18번예제

    #include <iostream>
    using namespace std;
    int main()
    {
     bool a=3*4-78 < 12-8 % 5;       
     cout << "연산 결과 " << a << endl;  
     return 0;
    }

    ● 주석 & 과정

    1. 왼쪽에서 오른쪽 방향인 관계상 3*4를 먼저하고 그 결과값에 -78을 한다.
    2. 그후 8%5를 하고 그 결과값에 -12 한다.
    3. 그 결과 왼쪽 값이 오른쪽 값보다 작기 때문에 결과는 true

    ● 결과 & 스크린샷

    '프로그래밍 > 공부' 카테고리의 다른 글

    4장 예제  (0) 2013.02.19
    3장 예제  (0) 2013.02.18
    4장 정리  (0) 2013.02.17
    제 3장 조건문, 반복문 네임스페이스  (0) 2013.02.14
    정식수업 2일차  (0) 2013.02.14
    Posted by 피씨컴

    4장 정리

    프로그래밍/공부 2013. 2. 17. 21:40

     

    ● 포인터

    포인터는 말 그대로 주소이다. 변수가 선언되면 기억장치 어딘가에 임의 공간이 할당된다. 이때
    그할당된공간은주소로식별된다. 바로그주소를포인터라한다.

     

     

    ● 포인터 변수

    포인터는 위치를 나타내는 정보로서, 프로그램에서 기억 장소의 위치를얄필요가있을때 이를위해 포인터 변수를사용한다. 이 처럼 주소를 저장하는 변수를 포인터 변수라 부른다.

    ※ 포인터 변수를 선언할 때 일반 변수와 구분하기 위해 간접지정 연산자(*)를 사용한다.

     

    자료형 *포인터 변수 이름;

     

     

    ● 변수 사용 기본 규칙

    1. 변수는 시용하기 전에 미리 선언해야 효봐.
    2. 변수 선언에서 프로그래머로서의 예의 있는 코딩은 변수 초기화이다.

     

     

    ● 디버깅 모드에서 기본적으로 사용하는 단축키

    F5            :    디버깅을시작합니다.

    shift + F5   :    디버깅을중지합니다.

    F9            :    현재 커서 위치에 중단점을 설정하거나 해제합니다

    F10           :    프로시저 단위로 디버깅을 실행합니다.

    F11           :    한 단계씩 코드로 디버깅을 실행합니다. 

     

     

     

    ●  일반 변수와 포인터 변수를 값을 할당하는 형태

    - 일반변수=값;
    - 포인터 변수=주소;

     

    일반 변수         -> 값
    &일반 변수       -> 주소
    포인터 변수     -> 주소
    *포인터 변수    -> 값

     

     

     

    ●  선언과할당

    - 자료형 일반 변수; //int a;
    - 자료형 *포인터 변수; //int *pa;


    - 일반 변수 = 값; //a=100;
    - 포인터 변수 = 주소; //pa=&a;


    ●  선언과할당 선언과동시에초기화

    - 자료형 일반 변수 = 값; / /int a=100;
    - 자료형 *포인터 변수 = 주소; //int *pa=&a;

     

     

    ●  배열

    변수는하나의 기억 공간 배열은 연속적인 기억 공간을나타낸다.

    배 열을 사용하면 하나의 이름으로 여러개의 기억 공간을 시용할 수 있어 편리하다.

     

     

    ●  배열 선언

    배열 선언은자료형과사용할 크기를함께 표기한다. 배열 이름은주소를, 배열 변수요소에 주소지
    정 연산자(&)를 표기하면 주소를 배열 변수 요소를 그대로 사용하면 값을 나타낸다.


    자료형 배열 이름[사용할 크기];


    cout << "배열의 시작 주소 : " << 배열 이름 << endl;
    cout << "배열의 시작 주소 : " << &배열 이름[0] << endl;
    cout << "배열의 첫 번째 요소솟값 : " << 배열 이름[0] << endl;

     

     

     

    ●  배열선언 및 초기화

    선언과 동시에 초기화할 수 있다.


    자료형 배열 이름[사용할 크기]={초깃값 1, 초깃값 2, . .};
    자료형 배열 이릅사용할 크기]={초깃값 1. };

    //0번째 요소는 초깃값 1로 지정되고나머지는 0으로 초기화됨

     

     

    ●  배열은 포인터, 포인터 언산
            포인터의 증감은배열의 자료형에 의해 기본크기가 결정된다.

     

     

     

    ●  문자열

    문자의모음

     

     

     

     

    ● 문자배열

    문자 변수의 자료형은 char이고 문자 상수는 작은따옴표(")로 표기하며, 기억 장소 1바이트를
    차지한다. 이에 비해 문자열은 문자의 모음이다. 따라서 변수의 경우 여러 개의 문자 변수가 모
    여 있는상태이다. 따라서 문자배열에 저장된 형태라할수 있다.

    문자 배열에서는 문자열의 마지막을 나타내는 문자 ’\0’이 사용된다. 이는 널 (NULL) 문자라 부르며 문자열 상수를 지정하면 자동으로 함께 입력된다.

     

     

     

    ● 레퍼런스 변수

    레퍼런스 변수는 이미 선언된 변수를 다른 이름으로 부르는 변수이다. 따라서 레퍼런스 변수는
    변수 선언에서 반드시 어떤 변수를다른 이름으로부르는가를명시해야한다. 즉반드시 초기화
    가 함께 이루어져야 한다. 레퍼런스 변수는 선언에서 레퍼런스 변수를 나타내는 기호인 주소지
    정 연산자(&)를 함께 표시한다.

     

    자료형 &변수 이름 = 변수;

     

     

     

    ● 동적할당

    동적 할당은 프로그램 실행 중에 펼요한 만큼 기억 장소를 요청하는 것이다. 동적 할당은 기억 장소를

    할당 하고 할당된 기억 장소의 주소를 포인터 변수에 저장하면 되는 것이다. 이때 기억 장소 할당을

    위해 new 연산자를 사용한다.


    자료형 *포인터 변수 = new 자료형[개수];

     

    필요한 기억 장소가 하나인 경우 ’[개수]’는 생략한다. 동적 할당으로 확보한 기억 장소는 모두
    사용하고 나서 그만 사용하겠다고 해제해야 한다. 해제에 사용되는 명령은 delete이다.

     

    delete 포인터 1변수; '//하나의 기억 장소 해제 시
    delete [ ] 포인터 변수; //여러 개의 기억 장소 해제 시

    ※ delete 명령을 실행하지 않으면 프로그램이 종료될 때까지 메모리를 확보

     

     

     

     

    ● 동적할당 주의사항

    기억 장소를 더 이상 사용하지 않을 때는 반드시 해제해야 한다. 그 이유는 앞서 배웠던 일반 변
    수, 포인터 변수, 배열 변수 레퍼런스 변수 등 정적으로 할당된 변수들은 컴퓨터 기억 장소 중
    에 스택 (Stack)에 할당되는 반면 동적 할당은 협 (Heap)에 할당되기 때문이다. 기억 장소가 할
    당되는 위치가 다른 이유는 할당된 기억 장소가 프로그램 시작과 종료를 기준으로 얼마나 지속
    되는가를 판단하기 때문이다. 협에 할당되면 delete를 이용해서 해제하지 않으면 프로그램이
    종료될 때까지 지속된다.

     

     

    '프로그래밍 > 공부' 카테고리의 다른 글

    3장 예제  (0) 2013.02.18
    2장 예제  (0) 2013.02.18
    제 3장 조건문, 반복문 네임스페이스  (0) 2013.02.14
    정식수업 2일차  (0) 2013.02.14
    정식 공부 1일차 (2/13).  (0) 2013.02.14
    Posted by 피씨컴

    ● 조건문 if

    조건의 결과는 참 아니면 거짓으로 나타낸다 이를 활용한 조건이 if이다 조건문 if는 조건이 참일 때 조건이 참이거나 거짓일 때 등 여러 형태로 사용할 수 있다.

    기본 if문은 주어진 조건이 참일 경우 실행할 내용을 명시한다. 즉 실행할 내용이 어떤 상황이 주어지면 선택되지만 그렇지 않았으면 선택되지 않는다. 형식은 다음과 같다

     

    if(조건)

    {

    조건이 참일 때 수행할 문장

    }

     

    1. 중괄호( {, } )는 C++ 프로그램 코드에서 범위를 의미한다

    2. if문 조건이 참일때 수행할 내용이 한 문장을 넘는다면 반드시 수행할 내용에 범위를 지정해야 한다.

    3. 한 문장이면 중괄호를 생략할수 있다.

     

     

     

    ● if ~ else 문 : 조건이 참 또는 거짓일때

    if ~ else 문은 조건이 참인 경우와 거짓일 때 수행할 명령을 각각 명시한다.

     

    if(조건)

    {

    조건이 참일 때 수행할 문장;

    }

    else

    {

    조건이 거짓일 때 수행할 문장

    }

    else 문은 조건이 거짓일 때 수행할 내용을 다룬다

     

     

    ● if ~ else if ~ else if~ ..... else 문

    조건문 안에 다시 조건문 그리고 다시 조건문이 연이어 표시되는 것도 가능하나 이러면 소스코드가 매우 복잡하게 된다. 하지만 반복문을 계속 사용해야할 때 아래와 같이 하면 이와같은 문제를 해결할 수 있다.

     

    if(조건 1)

    {

    조건1 이 참일 때 수행할 문장;

    }

    else if(조건 2)

    {

    조건2가 참일 때 수행할 문장;

    }

    else

    {

    앞의 조건이 모두 거짓일때 실행

    }

     

     

     

    ● switch

    조건 결과가 상수값으로 나열될 때 사용하는 상수 조건문. 조건결과가 상수값이라는 의미는 주어진 사례가 0,1,2,와 같이 또는 'a','b','c'와 같이 상숫값으로 판단하는 것이다.

     

    switch(조건문)

    {

    case 조건결과 1:

    조건결과가 1일때 수행할 내용;

    case 조건결과 2:

    조건결과가 2일때 수행할 내용;

    default:

    모든 조건이 맞지 않을 때 수행할 내용;

    }

     

    1. 위에 조건 결과란 상숫값을 의미

    2. 조건을 만족하는 case부터 실행됨

    3. 조건이 만족하지 않으면 case문을 건너뛰며 모든조건이 만족하지 않으면 default의 내용을 실행한다.

     

     

     

     

    ● break

    break문은 주어진 범위에서 벗어나도록 한다. 범위를 벗어난다는 것은 중괄호로 표시한 명령의 범위로 부터 빠져나가는 것을 말한다.

     

    ● for

    반복문의 횟수가 정해져 있을때 for 문에 정확하게 반복과 관련된 내용을 나타낼 수 있다.

     

    for(초기화; 조건문 ; 증감문)

    반복할 내용

     

    ※ 반복할 내용이 두줄 이상의 문장이면 중괄호로 범위를 표시해야 한다.

     

    ● 반복문 for의 실행 순서

    1. 초기화를 실행한다.

    2. 조건문을 실행한다. 조건이 참이면 3을 실행하고 거짓이면 반복문을 종료한다

       ( 반복문 밖으로 제어가 이동함)

    3. 반복할 내용을 실행한다.

    4. 증감문을 실행한 후 2를 실행한다.

    ※ 반복문의 초기화, 조건문, 증감문은 세미콜론 (;)으로 연결하며 생략할 수도 있다.

    (생략하면 무한반복)

     

    ● while문

    주어진 조건이 참인 경우에만 반복할 내용을 수행한다.

     

    while(조건문)

    반복할 내용

     

    ● do ~ while문

    while 명령문은 조건이 만족되어야 반복 내용을 실행하는데 비해 do ~ while은 무조건 한번은 실행한 다음 이후 조건 결과에 의해 다음 실행 여부가 결정된다는 것이다.

     

    do{

    반복할 내용;

    }while(조건문);

     

     

    ● continue 문

    반복 범위 처음으로 실행제어를 이동한다.

     

     

    ● 범위 표시 중괄호

    범위는 실행할 내용의 범위를 나타낸다.

     

     

    ● C++프로그램은 파일 단위 그리고 범위단위에서 크게 선언부와 동작부로 구분되고 파일 단위

    에서 동작부는 함수로 구성된다. 

     

    ● 선언부

    변수 선언, 함수 선언등 프로그램 컴파일을 위해 필요한 정보를 표시한다.

     

    ● 동작부

    프로그램 실행시 필요한 동작을 포함하는 연산문 조건문 반복문 등을 나타낸다.

     

    ※ 작성한 프로그램을 실행 파일로 변환하려면 반드시 프로젝트 내에 하나의

        main함수가 있어야 한다.

     

    ● 나(범위)를 포함하는 범위에서 선언된 내용은 사용할 수 있다.

    ● 나(범위)를 포함하는 범위에서 선언된 변수와 같은 변수를 내가 선언하면 내 변수가 우선된다.

     

     

    ● 네임스페이스의 작성과 사용

    네임스페이스는 말 그대로 소속을 알리는 역활을 한다 using namespace std;의 의미는 std에 속한 내용을 사용할 것인데 소속을 알리지 않는다면 std에 포함된 내용으로 간주한다는 것을 의미

    C++프로그램에서는 네임스페이스를 이용할 수 있으므로 다른 네임스페이스에 속한다면 같은 이름의 구성 맴버를 가질 수 있다.

     

    namespacse 이름;

    {

    선언 내용;

    }

     

    1. 이름은 사용자 정의어로

    2. 네임스페이스는 변수나 함수 등의 내용을 선언 한다. 선언된 내용을 맴버라 부른다

    3. 네임 스페이스 맴버에는 변수뿐만 아니라 함수도 쓸수 있다.

    4. 맴버로 함수도 있기 때문에 네임스페이스 사용 위치는 함수 내에서가 아니라 파일의

        선언부에 사용한다.

     

    5. 네임스페이스에 선언된 내용을 사용할때는 범위 연산자 (::)로 다음과 같이 나타낸다.

     

       [네임 스페이스 이름] :: 맴버

     

    ● using

    여러개의 네임 스페이스를 사용할 때 매번 네임스페이스를 나타내는 것이 귀찮으면

    using  지시자를 통해 소속 지정 없이 해당 네임 스페이스에 속한 맴버를 참조할 수 있다.

     

    using namespase [네임스페이스 이름];

     

     

     

     

     

     

     

     

     

    '프로그래밍 > 공부' 카테고리의 다른 글

    2장 예제  (0) 2013.02.18
    4장 정리  (0) 2013.02.17
    정식수업 2일차  (0) 2013.02.14
    정식 공부 1일차 (2/13).  (0) 2013.02.14
    2장 정리 (2/2)  (0) 2013.02.13
    Posted by 피씨컴

    ● 프로그래밍

    ver1. 어떠한 문제를 해결하기 위해 목적을 두고 여러 도구를 이용하여 순차적으로 구조를 짜서 해결

      하는것

    ver2. 문제 해결에 필요한 명령을 골라(코딩) 컴퓨터가 알아들을수 있는 형태로 바꾼후(컴파일) 이

      명령들이 순서대로 동작할 수 있도록 조직적 배치를 하는 것

     

    ● 알고리즘

    컴퓨터가 조금이라도 쉴수있게(연산을 들하게) 과정을 효율적으로 만들어주는것

     

    ● 알고리즘 구성

    문제 + 문제를 해결하는 과정 + 결과 + 시간측정

     

    ● 자료구조

    알고리즘을 이용해서 자료를 효율적으로 관리하는 것.

     

     

    ● 프로그래밍 + 알고리즘 + 자료구조 == 프로그래밍을 하기 위한 도구

     

     

    ● namespace

    공간안에 충돌을 피하기 위해 쓰는것

     

     

     

    ● 네임스페이스의 작성과 사용

    네임스페이스는 말 그대로 소속을 알리는 역활을 한다 using namespace std;의 의미는 std에 속한 내용을 사용할 것인데 소속을 알리지 않는다면 std에 포함된 내용으로 간주한다는 것을 의미

    C++프로그램에서는 네임스페이스를 이용할 수 있으므로 다른 네임스페이스에 속한다면 같은 이름의 구성 맴버를 가질 수 있다.

     

    namespacse 이름;

    {

    선언 내용;

    }

     

    1. 이름은 사용자 정의어로

    2. 네임스페이스는 변수나 함수 등의 내용을 선언 한다. 선언된 내용을 맴버라 부른다

    3. 네임 스페이스 맴버에는 변수뿐만 아니라 함수도 쓸수 있다.

    4. 맴버로 함수도 있기 때문에 네임스페이스 사용 위치는 함수 내에서가 아니라 파일의

        선언부에 사용한다.

     

    5. 네임스페이스에 선언된 내용을 사용할때는 범위 연산자 (::)로 다음과 같이 나타낸다.

     

       [네임 스페이스 이름] :: 맴버

     

    ● namespace

    1. 네임 스페이스를 나눠 놔도 이름만 같으면 같은 네임스페이스로 인식

    2. 네임스페이스 안에 함수도 넣을수 있음

     

     

    ● using

    여러개의 네임 스페이스를 사용할 때 매번 네임스페이스를 나타내는 것이 귀찮으면

    using  지시자를 통해 소속 지정 없이 해당 네임 스페이스에 속한 맴버를 참조할 수 있다.

     

    using namespase [네임스페이스 이름];

     

     

     

    ● 자잘한 정보

    1. 비주얼 스튜디오에서<< 와 " 사이의  공백은 출력에서 제외 된다.

    2. >>나 << 를 리다이렉션 ㅇㅇ

    3. \r \n 둘이 합쳐서 New line == End line

    4. \r \n 등을 이스케이프 문자라고 부른다

    5. 전역과 지역에 똑같은 이름의 변수가 있고 지역에서 해당변수를 부를시 지역에 있는 변수가 우선권을 가진다.

     

    '프로그래밍 > 공부' 카테고리의 다른 글

    4장 정리  (0) 2013.02.17
    제 3장 조건문, 반복문 네임스페이스  (0) 2013.02.14
    정식 공부 1일차 (2/13).  (0) 2013.02.14
    2장 정리 (2/2)  (0) 2013.02.13
    2장 정리 (1/2)  (0) 2013.02.13
    Posted by 피씨컴

    ● 오버로딩 : 동일한 이름으로 다른기능을 하는것

     

     

    ● 프로그래밍 언어

    프로그래밍 언어는 컴퓨터를 이용하여 특정 문제를 해결하기 위한 프로그램을 작성하기 위해 사용되는 언어를 말합니다. 프로그래밍 언어는 일반적으로 저급 언어와 고급언어로 분류할 수 있음

     

    ▶ 저급 언어

    저급 언어는 기계어와 어셈블리어로 나눌수 있음,  저급언어일수록 컴퓨터 랭귀지와 비슷함 즉 사람이 알아먹기 힘듬

     

    ▶ 고급 언어

    고급 언어는 컴파일러 언어라고도 하며, 인간이 실생활에서 사용하는 자연어와 비슷한 형태 및 구조를 갖는다 .하드웨어에 대한 깊은 지식이 없어도 프로그램 작성과 수정이 용이함,

    즉 고급언어일 수록 사람이 알아먹기 쉬움

     

     

     

    ● 컴파일러

    컴파일러는 고급 언어로 작성된 프로그램 전체를 번역한 후, 링킹 작업을 통해 컴퓨터에서 실행 가능한 실행 프로그램을 생성합니다. 때문에 한 번 컴파일한 후에는 매번 빠른 시간 내에 전체 실행이 가능하다는 장점이 있습니다. 하지만 번역과 실행 과정을 거쳐야 하기 때문에  번역 과정이 번거롭고, 프로그램의 일부를 수정하는 경우에도 전체 프로그램을 다시컴 파일해야 하는 점이 있습니다. 

    컴파일러를 사용하는 언어에는 FORTRAN, COBOL, PASCAL, C, C++, PL/1 등이 있습니다.

     

     


    ● 인터프리터

    인터프리터는 고급 언어로 작성된 프로그램을 한 줄 단위로 받아들여 번역하고, 번역과 동시에 프로그램을 한 줄 단위로 즉시 실행시킵니다.  인터프리터의 장점으로는 줄 단위로 번역, 실행되기 때문에 시분할 시스템에 유용하며 원시 프로그램의 변화에 대한 반응이 빠릅니다. 때문에 대화형 언어에 편리합니다. 하지만 번역 속도는 빠르지만 프로그램 실행 시 매번 번역해야 하므로 항상 인터프리터가 필요하고 CPU 사용 시간의 낭비가 큽니다. 인터프리터는 컴파일러에  비해 번역 속도가 느릴 수 밖에 없지만, 프로그램을 작성할 때는 보다 융통성을 가질 수 있습니다. 

    인터프리터를 사용하는 언어에는 대표적으로 BASIC이 있고 SNOBOL, LISP, APL 등이 있습니다. 개인적으로 인터프리터를 사용하는 언어중에 파이썬이 가장 좋은 언어라고 생각되네요.

     

     

     

    ● 컴파일러와 인터프리터 비교

     

     

    ● 절차 / 중성적 / 객채 지향 언어

    C언어   -> 절차지향적 프로그래밍 언어 (하향식 또는 폭포식)

    C++      -> 절차지향적 + 객체지향 복합 중성적 언어

    JAVA    -> 완전한 객체지향 언어

    C#       -> 마이크로사가 자바를 따라함, 자바에서 파생

    OBJECT C - > 자바에서 파생, 객체지향임

     

    절차지향 : 위에서 아래로 진행, 간단한 알고리즘이나 소규모 프로젝트에 알맞음

    객체지향 : 각각의 부품을 만들고 한번에 조립하는 방식, 대규모 프로젝트에 알맞음

     

     

     

    ● 컴파일 과정

    1. 소스코드 빌드하면

    2. 목적파일 (OBJ 파일 생성

    3. 링크파일 (link 파일 생성

    4.실행 EXE 파일 생성

     

     

    '프로그래밍 > 공부' 카테고리의 다른 글

    제 3장 조건문, 반복문 네임스페이스  (0) 2013.02.14
    정식수업 2일차  (0) 2013.02.14
    2장 정리 (2/2)  (0) 2013.02.13
    2장 정리 (1/2)  (0) 2013.02.13
    17일  (0) 2013.02.04
    Posted by 피씨컴

    ● 단축연산자

    덧셈누적        +=        int a=10; a+=3 -> 저장된 값 10에 3을 더한 다음 그 결과를 a에 저장

    뺄셈누적        -=        int a=10; a-=3 -> 저장된 값 10에 3을 뺀 다음 그 결과를 a에 저장

    곱셈누적        *=        int a=10; a*=3 -> 저장된 값 10에 3을 곱한 다음 그 결과를 a에 저장

    나누기누적     /=     int a=10; a+=3 -> 저장된 값 10에 3을 나눈 결과를 a에 저장

    나머지누적     %=    int a=10; a+=3 -> 저장된 값 10에 3으로 나누었을때 나머지를 a에 저장

    1누적             ++     int a =10; a++; -> 변수 a에 1을 더하라는 의미이다 따라서 변수는 11이 됨

    1감소             --     int a =10; a--; -> 변수 a에 1을 빼라는 의미이다 따라서 변수는 9가 됨

    ※ 누적/감소 연산자는 변수 앞에 올수도 있고 뒤에도 올 수있다 연산자가 뒤로 오는 경우

    '후치연산자' 연산자가 앞으로 오는 경우 '전치연산자'라고 부른다

     

     

    ● 논리형

    물음의 답이 두가지로 결정된다. 물음에 일치하는 경우를 참이라 하고 이를 true로 나타낸다

    0은 거짓으로 false로 표기된다 컴퓨터에서 0이 아닌 모든 수는 참이다

    논리형        bool        1바이트        true, false

     

    ● 관계연산자와 논리 연산자

     

    ▶ 관계연산자

    크다, 크거나 같다        >, >=    

    작다, 작거나 같다        <. <=

    같다                           ==

    다르다                        !=

     

    ▶ 관계연산자

    논리곱(AND)                &&    조건 모두가 true 여야 결과가 true

    논리합(OR)                  ||     조건 중 하나만 true이면 결과는 true

    논리부정(NOT)              !    하나의 항목에 대해 연산을 수행

       !3 -> 3은 0이 아니므로 true 따라서 true의 부정은 false

       !0 -> 0은 거짓이므로 false 따라서 false의 부정은 true

     

    ● 비트 연산자

    정수형은 4바이트, 문자형은 1바이트 등 연산의 단위는 자료형의 단위를 기준으로 수행된다

    그러나 비트연산자는 연산 단위가 자료형에 상관없이 비트 단위로 수행된다

     

    오른쪽 시프트                        >>      지정된 숫자만큼 오른쪽으로 비트 이동

    왼쪽 시프트                           <<      지정된 숫자만큼 왼쪽으로 비트 이동

    비트 논리곱(AND)                    &       비트 단위로 논리곱 수행

    비트 논리합(OR)                      |       비트단위로 논리합 수행

    비트 배타적 논리합(XOR)          ^       비트 단위로 배타적 논리합 수행

    비트 부정(NOT)                       ~       비트 단위로 부정 수행

     

    ● 연산자 우선순위

    높음                           후치연산자(변수++, 변수--), static_cast<type>()

     ↑                              +,-, ~(단항),전치 연산자(++변수,--변수)

                                     !

    *, /, %

    +,-

    <,<=,>,>=

    ==, !=

    &, ^, | (비트연산자)

    &&(AND)

    ↓                                ||(OR)

    낮음                             =, +=, -=, *=, /=, %= (대입연산자)

     

    '프로그래밍 > 공부' 카테고리의 다른 글

    정식수업 2일차  (0) 2013.02.14
    정식 공부 1일차 (2/13).  (0) 2013.02.14
    2장 정리 (1/2)  (0) 2013.02.13
    17일  (0) 2013.02.04
    16일차  (0) 2013.02.03
    Posted by 피씨컴

    2. 변수와 상수

    프로그램을 작성한다는 것은 주어진 문제를 컴퓨터 언어로 답을 찾는 절차를 작성하는 것이 다.  

    주어진 문제해결을 위해 필요한 일련의 동작을 나열하는 것이 바로 프로그램을 작성하는 것이다.

    프로그램은 처리 대상과 처리 결과 가지며 이는 프로그램 실행 상태에서 어딘가 기억되고 있어야  하며 그곳이 컴퓨터의 주 기억장치이다 그러나 주기억 장치의 내부구조는 복잡하기 때문에 그 대신 를 사용한다 그리고 그 변수는 데이터가 저장된 주 기억장치의 특정 위치를 의미 한다.

    데이터를 저장하는 주 기억장치는 저장된 데이터를 구별하기 위해 서로 다른 위치에 저장하며, 저장된 위치 정보는 주소로 표기한다. 이때 저장 위치 정보인 주소는 프로그램에서 변수에 대응 한다.

      

    ● 컴퓨터 언어로 프로그램 장성시 사용하는 단어

    1 . 예약어 : 컴퓨터 언어에서 이미 약속된 단어들

         (예약어는 사용자 정의어로 사용할 수 없다. / 글자색이 파란색으로 표시됨)

    2. 사용자 정의어 : 사용자가 필요에 의해 정하는 것  (글자색이 검은색으로 표시됨)

    ※ 변수 이름은 사용자 정의어에 해당한다.

     

     

    ● 변수 이름 작성시 지켜야 할 사항들

    1. 영문 소문자와 대문자, 숫자, 밑줄(_)만 변수 이름으로 사용할 수 있다.

    2. 숫자는 변수 이름의 첫글자로 사용될 수 없다.

    3. 영문 소문자와 대문자는 구별된다.

    4. 예약어는 변수 이름으로 사용될 수 없다.

    5. 변수 이름 길이에는 제한이 없다.

     

    ● 상수

    저장장소가 있는 것과 마찬가지로  저장내용이 존재한다. 이를 상수라 부른다

    상수는 기억장소에 저장되는 값으로, 변수에 저장될 수도 있고 프로그램 코드 내에서 별도의

    변수 할당없이 사용될 수도 있다.

     

     

    ● 상수 종류와 예

    소수점 이하 값을 취급하지 않는 숫자         : -45, 987

    소수점 이하 값을 취급하는 숫자               : -528.12, 876.3456

    문자                                                : 'Y', 'C', 'a', 'K'

    문자 모음(문자열)                                : "Programming", "interestring"

    ※ 숫자상수는 일반적인 표기법을 따른다 / 문자의 경우 작은 따옴표(' ')로 묶어서 표기하고

     문자모음은 문자열이라 하며 큰 따옴표(" ")로 묶어서 표기

     

     

    ● 선언    

    변수는 반드시 사용하기 전에 알려야 하는데 이를 선언이라 한다.

     

    ● 반올림처리

    34.576을 소수 둘째 자리에서 반올림 하기 위해서 다음의 동작을 수행한다.

     

    1. 둘째 자리에서 반올림하기 위해 입력한 실수에 10을 두번 곱한다.

    (34.576 * 10 = 345.76, 345.76 * 10 = 3457.6)

    2. 이어서 반올림 수행을 위해 5를 더하는 동작을 수행한다

    (3457.6 +5 = 3462.6)

    3. 결과값을 만들기 위해 소수점 자릿수를 이동해야 한다. 따라서 먼저 10으로 나눈다

    (3462.6 / 10 = 346.26)

    4. 결과값에서 소수점 이하 자릿수를 버리는 연산을 수행한다

    (346.26    -> 346)

    5. 이어서 10으로 나눈 결과는 34.6으로 결과를 산출하게 된다

     

    ● 컴퓨터가 표현하는 데이터

    프로그램 작성할 때 가장 먼저 해야할 일은 대상 데이터를 저장할 변수와 변수에 저장되는

    데이터의 성격을 결정하는것이다 여기서 성격이란 데이터 특성에 따른 컴퓨터의 표현이나

    저장방식으로 숫자인가 문자인가 또는 숫자라면 소수점이 있는 형태인가 아닌가 등을 구

    분하는 것이다.

     

    ※ 기본자료형 : 컴퓨터 대부분 정수이고 기본 자료형이라는 것은 컴퓨터가 데이터를

        처리하는 기본 크기와 같은 크기를 갖는 자료형을 의미한다. 이는 컴퓨터에 설치된

        운영 체제에 의해 결정된다

     

    ※ 개인용 컴퓨터에서 사용하는 운영체제들(windowsXP, Vista, 7) 이들은 32비트

        운영체제라 불린다. 이때 32비트(bit)가 의미하는 것이 데이터 처리의 기본 크기이다

        따라서 기본크기는 4바이트(Byte)이다

     

     

    ● 데이터 구분의 기본

    ▶ 숫자

    정수 : 소수점이 없는 수 ( 23, 876, -98)

    실수 : 소수점이 있는 수 ( 1.3 , 0.4, -98.876)

    ▶ 문자

    문자 : 키보드로 입력가능한 문자 ('A', 'm','&')

    문자열 :문자의 모음( "Computer")

     

     

    ● 컴퓨터 연산의 규칙

    1. 같은 자료형의 연산 : 같은 자료형의 결과를 얻는다.

    2. 서로 다른 자료형의 연산 : 자료형에 할당된 기억 장소 크기가 큰 자료형의 결과를 얻는다.

     

    즉 컴퓨터 자료형에 따라 데이터 표현 방법과 연산 결과가 달라진다!!!

    ※ 소수점 이하 6자리 까지 표기 된다.

     

    ●자료형 종류와 표현범위

    자료형            자료형이름                    표현범위

    정수형                int                        4바이트(-2147483648 ~2147483647)

              short int                   2바이트(-32768 ~32767)

        long int                    4바이트(-2147483648 ~2147483647)

      unsigned int              4바이트(0~4294967295)

      unsigned short int      2바이트(0~65535)

    실수형                float                     4바이트()

    배정도형 실수

    double                    8바이트 ()

    long double             8바이트 ()

    문자형                    char                  1 바이트(-128 ~ 127)

    unsigned char        1바이트(0~255)

    ※ 소수점이 있는 상수는 배정도형을 기본으로 취한다.

     

    ● 산술 연산자

    산술연산자는 일반적으로 우리가 생활 속에 사용하는 사칙연산을 말한다. 산술연산자는

    이항 연산자로 연산대상이 두개이다.

     

    곱하기     *        두수의 곱하기를 실시한다

    나누기    /        두수의 나누기를 실시한다

    더하기    +        두수의 더하기를 실시한다

    빼기        -        두수의 빼기를 한다

    나머지    %(모드연산자)         두수의 나누기에서 나머지를 구한다

     

     

    ● 런타임 에러

    런타임에러는 문법측면에서 볼 때 코드에는 문제가 없으나 변수 초기값이나 잘못 할당된 기억

    공간 때문에 프로그램 실행 중에 잘못된 메모리 참조나 논리적 오류가 발생하는 에러이다 변수

    에 초기화하지 않은 상태에서 변수를 사용하는 경우 변수에 할당된 기억 공간에 잔류하는 쓰레기

    값들이 남아 있다 이때문에 정확한 결과값 산출이 어려워진다 따라서 이럴 때 런타임 에러가

    발생한다.

    '프로그래밍 > 공부' 카테고리의 다른 글

    정식 공부 1일차 (2/13).  (0) 2013.02.14
    2장 정리 (2/2)  (0) 2013.02.13
    17일  (0) 2013.02.04
    16일차  (0) 2013.02.03
    15일차  (0) 2013.01.31
    Posted by 피씨컴

    17일

    프로그래밍/공부 2013. 2. 4. 20:05

    ● Main함수

    - 프로그램의 시작과 끝을 담당하는 함수

    ● 표준 함수

    - 이미기능이 정의 되어 있어 사용하기만 하면 되는 함수

    ● 사용자 정의 함수

    -프로그래머가 필요에 의해서 정의하고 사용하는 함수

     

    반환값, 함수명(전달인자)

     

    return : 리턴문을 만나면 하위 코드를 무시하고 값을 반환하면서 함수를 탈출한다

    '프로그래밍 > 공부' 카테고리의 다른 글

    2장 정리 (2/2)  (0) 2013.02.13
    2장 정리 (1/2)  (0) 2013.02.13
    16일차  (0) 2013.02.03
    15일차  (0) 2013.01.31
    14일차  (0) 2013.01.30
    Posted by 피씨컴

    16일차

    프로그래밍/공부 2013. 2. 3. 22:51

    ● stack " 약 1mb -  지역변수 저장 (함수호출위치를 저장 - > 다시 돌아가기 위한 위치를 알리기 위해 )

    ● 컴퓨터는 기억하지 않는걸 사용할 수 없다

    ● 잠깐 써야하는데 용량이 크다! -> 힙 메모리 -> 사용자에 의해 실시간으로 용량을 할당하는 것

    ● (힙)램 대신 가상 메모리

     

    '프로그래밍 > 공부' 카테고리의 다른 글

    2장 정리 (1/2)  (0) 2013.02.13
    17일  (0) 2013.02.04
    15일차  (0) 2013.01.31
    14일차  (0) 2013.01.30
    13일차  (0) 2013.01.29
    Posted by 피씨컴