반응형






변수는 프로그램을 실행 되는 동안 데이터를 가지고 있는 곳 어떤 책에서는 변수는 정보를 저장하는 장소라고 되어 있다.

저장하는 장소 즉 메모리이다.

위 스크린샷에서 변수는 a 와 b 가된다. 

a 에는 1을 넣었고  b 에는 2를 넣었다.


우선 자세한 설명은 나중에 하기로 하고 중요한 포인트는 cout은 출력할때 쓰인다는 것과 a와 b는 변수다.라는 것만 확인! 

즉   출력 <<  1 + 2 << 다음줄;   쫌 이상하지만 이렇게 이해하시면 되며  출력 << a + b << 다음줄;  

a.out 으로 결과를 출력해보면 3이 출력이 된다. 

즉  a 와 b는 int (integer) 형 변수이다. 




반응형
반응형


책을 보다 보니


**************************

*   Hello,  이름                 *

**************************

를 보니 구현해보라는 장이 나왔고  이쯤이야 하면서 

string hello = "Hello, ";

    string input;
    cout << "Please enter your first name : ";
    cin >> input;
    for(int i = 0; i < input.size()+hello.size() + 4; i++){
        cout << "*";
    }
    cout << endl;
    cout << "* "<<hello << input <<" *"<<endl;
    for(int i = 0; i < input.size()+hello.size() + 4; i++){
        cout << "*";
    }

cout << endl;

로 구현하였다 .


책에 내용에서 의 코딩방법은

cout << "Please enter your first name : ";
string naem; cin >> name;

const string greetin = " Hello, " + name + "!";

const string spaces(greeting.size() ' ');

const string second = "* " + spaces + " *";

const string first(second.size(),'*');


const string first(second.size(),'*');

위와같은 방법으로하면 for문대신 간단히 처리할 수 있었다.



....좀더 분발하자...






반응형
반응형





링크드 리스트 소스 구연했던 예제입니다. 


구연 다안되어 있지만.. 


참고 하실분은 참고 하세요.


list.h

#ifndef LIST_H

#define LIST_H
#include <node.h>
class List
{
public:
    List(){
        std::cout<<"list :1";
       _head=NULL;
    }

    List(Node *appendNode){
        std::cout<<"list :2";
    }

    Node *headNode() const;
    Node *appendNode(const std::string &text);
    Node *insertNode(const std::string &text, Node *beforeNode);
    Node *deleteNode(Node *node); //삭제

    void print();


private:
    Node *_head;
};


#endif // LIST_H


list.cpp


#include "list.h"
#include <iostream>



Node *List::appendNode(const std::string &text)
{

    Node *newNode = new Node(text);

    if (!_head) {
        std::cout<<"\nappendNode : _head=null";
        _head=newNode;
        _head->text();

    } else {
        std::cout << "_head : NULL 아님 ";
        Node *ptr =_head;
        while(ptr->next())
            ptr =ptr->next();
        ptr->_next=newNode;
        newNode->_prev=ptr;
    }
    return newNode;
}

Node *List::headNode() const{

    return _head;

}
void List::print(){

    for(Node *ptr=_head;ptr;ptr=ptr->next()){
        ptr->text();
    }

}

 Node *List::deleteNode(Node *node){
     Node *next = node->next();
     if(node->_prev)
     {
        node->_prev->_next=node->_next;

     }
     if(node->_next){
         node->_next->_prev=node->_prev;
     }
     if(!node->prev()){
         _head=next;
     }
     delete node;

     return next;

 }




node.h

#ifndef NODE_H
#define NODE_H
#include <iostream>
#include <string>


class Node
{
    friend class List;
private:

    Node(){
        this->setText("");
        std::cout<<"\nin?";
        this->text();
        _prev=0;
        _next=0;
    }

    Node(std::string str){
        _prev=0;
        _next=0;
        _str=str;
        std::cout<< "\n 기본생성자 아님"<< _str;
    }

public:

    std::string text() const;
    void setText(const std::string &text);

    Node *next() const;
    Node *prev() const;

private:

    Node *_prev;
    Node *_next;
    std::string _str;
};

#endif // NODE_H



node.cpp


#include "node.h"

void Node::setText(const std::string &text){

//    if(text==""){
//        std::cout<<"없음";
        _str=text;
//    }

}


std::string Node::text() const
{


    std::cout<< "\nNode str  :"<< _str<<"\n";
    return _str;


}




Node *Node::prev() const
{
    return this->_prev;
}


Node *Node::next() const
{
    return this->_next;
}







main.cpp


#include <iostream>
#include <list.h>
#include <node.h>

using namespace std;

int main()
{
    int select=0;
    std::string data="";

    List lt,lt2;

    while(true){

        cout << "================"<<"\n";
        cout << "1   노드 추가 \n";
        cout << "2   노드 보기 \n";
        cout << "3   노드 삽입 \n";
        cout << "4   노드 삭제 \n";
        cout << "5   다음 노드 \n";
        cout << "6   이전 노드 \n";
        cout << "================"<<"\n";
        cout << "?  ";
        cin >>select;

        cout << "\n";

        switch(select){

        case 1:{
            cout << " 추가할 노드의 이름 ?   ";
            cin >>data;
            cout <<"\n";

            lt.appendNode(data);
            break;
        }
        case 2:

            lt.print();
            break;

        case 3:
        {

            break;
        }

        case 4:{
            int _data;
            std::cout << "삭제할 노드 ?";
            std::cin >> _data;
            Node *node = lt.headNode();
            if(!node){
                std::cout<<"null ";
                break;
            }
            for(int i = 1; i<_data;i++)
            {

                node = node->next();
                if(!node){
                    std::cout<<"null ";
                    break;
                }
            }

            lt.deleteNode(node);
            break;
        }
        case 5:
            break;
        case 6:
            break;

        default:
            break;

        }



    }

    return 0;
}






반응형
반응형

#include <iostream>

using namespace std;

//간략... 네임 스페이스는 명칭의 선언 영역을 분리하여 충돌을 방지한다.

//  자세한 설명은 http://www.winapi.co.kr/clec/cpp3/34-1-3.htm

자세히 설명되어 있네요 .


//과일이라는 클래스를 만들었습니다.
class fruit{

private :       // 공개안함!!!

   int apple;         
   int strawberry;

public :     //공개

   void Setfruit(int apple_arg,int strawberry_arg);  // 선언정도 우선 생각하세요 ..
   int getApple(void);     //  사과의 개수를 가지고 오기 만들었어요
   int getstrawberry(void);  //딸기의 개수를 가지고 오기 만들었어요..
};

//위에 선언한 void Setfruit를 사용할꺼에요 .

//값을 넣는곳! 이라고  우선 단순히!!  생각하세요!

void fruit::Setfruit(int apple_arg,int strawberry_arg){

//받은 값을 사과라는 변수에 넣는 작업!!
   apple=apple_arg;

//받은 값을 딸기 라는 변수에 넣는 작업!!
   strawberry=strawberry_arg;
}

//사과의 개수가 몇개인지 그냥 리턴해 주는 곳
int fruit ::getApple(void)
{

   return apple;

}

//딸기의 개수가 몇개인지 그냥 리턴해 주는 곳
int fruit::getstrawberry(void){
   return strawberry;
}

int main()
{


   fruit box1,box2; //과일의 객체생성!!!

//box1 이라는  박스와 box2 이라는 곳에 과일을 담을 꺼에요


   box1.Setfruit(20,30); 

// box1 박스에 사과 20개와 딸기 30개를 담는다고 하였습니다.

//그러면 Setfruit(int apple_arg,int strawberry_arg)   멤버함수에 들어가  

//apple=apple_arg;    사과의 개수가 20개가 됩니다.   

   box2.Setfruit(50,0);

//위와 동일합니다. box2에 설정한 값입니다.


   cout<< "박스1\n";
   cout<<"사과 개수" <<box1.getApple()<< " , "<< box1.getstrawberry();

//box1에 getApple() 하여 사과개수가 몇개 인지 불러오고 있습니다.

//나머지도 동일합니다.

   cout <<"\n";

   cout<< "박스2\n";
   cout<<"사과 개수" <<box2.getApple()<< " , "<< box2.getstrawberry();

   cout <<"\n";


   return 0;
}




반응형
반응형

*구조체란
 관련된 데이터를 묶어 놓은것


*클래스란
 구조체를 확장시켜 놓은것



클래스 = 멤버변수 + 멤버함수



class 선언 형식
class  클래스이름
{

    [액세스 지정자 : ]

    자료 멤버 변수 ;
   

     [액세스 지정자:]
       자료형 멤버 함수;
};
자료형 클래스 이름 :: 멤버함수(){
}


디폴트 접근 지정자

클래스내 멤버 변수를 선언할때 생략할 경우 디폴트로 private 멤버가 된다.
class point
    int x;
    int y;
}


액세스 지정자 권한 이라고 보면된다 .

액세스지정자     현재 클래스   클래스 밖
 public                      ㅇ               ㅇ
 private                      ㅇ               X





반응형
반응형


    cout << "Hello World!" << endl;
    cout << "time : " << 12 <<" : " << 03 << "\n";
    cout << "The " << endl;
    cout << "a b c " ;
    cout << "d e f" << endl;
    cout << " sum 10 + 3 :" << 10+3 << endl;
    cout << "(float) 5/13 : " << (float)5/13 << endl;
    cout << "(double) 8000 * 10000 : "
         << (double) 8000 * 10000<< endl;




반응형
반응형


인터프린터 


인터프리터(interpreter, 문화어: 해석기)는 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다. 원시 코드를기계어로 번역하는 컴파일러와 대비된다. 인터프리터는 다음의 과정 가운데 적어도 한 가지 기능을 가진 프로그램이다.

  1. 소스 코드를 직접 실행한다.
  2. 소스 코드를 효율적인 다른 중간 코드로 변환하고, 변환한 것을 바로 실행한다
  3. 인터프리터 시스템의 일부인 컴파일러가 만든, 미리 컴파일된 저장 코드의 실행을 호출한다

인터프리터는 고급언어로 작성된 원시코드 명령어들을 한번에 한 줄씩 읽어들여서 실행하는 프로그램이다

컴파일러 

컴파일러(compiler, 순화 용어: 해석기, 번역기)는 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 프로그램을 말한다. 원래의 문서를 소스 코드 혹은 원시 코드라고 부르고, 출력된 문서를 목적 코드라고 부른다. 목적 코드는 주로 다른 프로그램이나 하드웨어가 처리하기에 용이한 형태로 출력되지만 사람이 읽을 수 있는 문서 파일이나 그림 파일 등으로 옮기는 경우도 있다. 원시 코드에서 목적 코드로 옮기는 과정을 컴파일(compile, 순화 용어: 옮김, 번역, 문화어: 콤파일)이라고 한다. 컴파일러는 소스 프로그램을 읽어서 즉시 결과를 출력하는 인터프리터와는 구분된다.

소스 코드를 컴파일하는 이유는 대부분 사람에게 이해하기 쉬운 형태의 고수준 언어로부터 실행가능한 기계어 프로그램을 만들기 위해서이다. 좁은 의미의 컴파일러는 주로 고수준 언어로 쓰인 소스 코드를 저수준 언어(어셈블리어기계어 등)로 번역하는 프로그램을 가리킨다.


출처 : 위키백과 



인터프린터와 컴파일러의 차이점

interpreter 는 원시 코드를 읽어 프로그램으로  변환하여 프로그램의 코드와 명령들을 바로 처리한다.

compiler는 원시 코드를 실행 프로그램을 바꾸고 나중에 수행을 한다.


링커란!

컴파일된 코드를  컴파일러가 제공하는 라이브러리 및 다른 코드들과 연결하는 것을 말한다 

링커는 퍼즐처럼 조각난  프로그램을 하나로 묶는 역활을한다 .

 


반응형
반응형



이젠 마음을 굳게 먹고 끝나지 않는 길을 걷을 생각 입니다. 

과연 내가 잘해낼 수 있을지 . 

앞으로 어떤 역경과 고난이 올지 .



보다는..

평생 즐기면서 하고 싶네요...


반응형

+ Recent posts