_대문 | 방명록 | 최근글 | 홈피소개 | 주인놈
FrontPage › Cpp개요

Contents

[-]
1 구조적 프로그래밍
2 객체지향 프로그래밍
3 일반화 프로그래밍
4 C++
5 프로그래밍 절차
6 Hello World
7 Class 기초
8 Memory Segment


1 구조적 프로그래밍 #

  • 프로그램 = 데이터 + 알고리즘
  • C는 절차적 언어 -> 알고리즘에 더 치중함.
  • FORTRAN, BASIC과 같은 절차적 언어 -> 스파게티 프로그램이 됨 -> 구조적 프로그래밍의 등장배경
  • 구조적 프로그래밍은 하향식(Top-Down) 설계 -> 쪼개고 쪼개어 프로그래밍하기 위한 작은 모듈이 될 때까지 쪼갠다.
  • 여전히 절차적

2 객체지향 프로그래밍 #

  • 큰 규모에서 구조적 프로그래밍은 어려운 문제 -> 객체지향의 등장배경
  • 데이터를 강조 -> 해결해야 할 문제의 특성에 맞게 데이터의 형태를 설계
  • 데이터와 그 데이터를 대상으로 수행할 수 있는 동작을 정의
  • 객체를 정확히 묘사하는 클래스를 설계하는 것이 처음에 할 일 -> 상향식(Bottom-Up)
  • 재사용, 정보은닉, 다형성, 상속성 -> 해결해야 할 작업이 아닌 개념의 표현에 주안점을 둠
  • 코드의 재사용은 C++의 진정한 강점

3 일반화 프로그래밍 #

  • 일반화(generic)은 특정형에 구속되지 않는 코드를 작성한다는 뜻 -> C++ 템플릿
  • 알고리즘을 강조 (여전히 재사용, 개념의 추상화는 OOP의 개념과 동일)

4 C++ #

  • Bell 연구소의 Bjarne Stroustrup이 1980년대 초에 개발
  • C++ = C의 특성(저수준의 하드웨어 접근을 제공) + OOP특성(고수준의 추상화)

5 프로그래밍 절차 #

  • 원시코드 작성 -> 프로그램을 짠다
  • 원시코드 컴파일 -> 컴퓨터가 알아먹을 수 있는 기계어로 번역해 준다. (번역된 파일이 목적(Object) 코드라고 한다)
  • 링크 -> 목적코드와 라이브러리 함수에 해당하는 목적코드, 표준 시동코드를 연결해 준다.
  • 결과로 실행가능한 코드가 만들어진다.

6 Hello World #

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello World!" << endl;
    cin.get();
    return 0;
}

#include <iostream>
  • 선행처리 지시자
  • 소스코드가 컴파일될 때 자동으로 iostream 파일의 내용을 함께 컴파일한다.
  • #include <iostream> 문장이 iostream 파일의 내용으로 대체된다.

using namespace std;
  • std 이름공간을 사용한다는 뜻이다.
  • 같은 함수더라도 네임스페이스에 따라서 내용을 다를 수 있다. (버전, 동음이의어 등)

int main()
  • 누가 호출하나? 운영체제가 호출한다.
  • { ~~ } 는 함수 몸체다. 이 안에 함수의 내용을 정의한다.
  • int 는 Return Type


7 Class 기초 #

  • 클래스는 사용자 정의 데이터형
  • 데이터의 종류와 데이터를 대상으로 수행하는 동작을 정의
  • 클래스, 객체
    • 클래스는 데이터와 데이터의 사용방법을 나타내는 추상적인 개념
    • 객체는 클래스의 속성에 따라 생성된 하나의 개체(객체 인스턴스 or 인스턴스 변수라고 함)
  • 동작을 수행하게 하려면 해당 객체에 메시지를 전달
  • 메시지 전달방법
    • 클래스 메소드를 사용(매개변수와 매개변수의 데이터형을 알고 있어야 한다. 즉, 메시지를 주고 받기 위한 일종의 규약이 있다는 뜻이다)
    • 연산자 재정의

8 Memory Segment #

메모리영역 설 명
Code Segment프로그램 코드에 대한 메모리의 할당/해제가 이루어지는 영역.
Data Segmentstatic변수, 전역변수가 사용하는 메모리 영역으로 이 영역의 변수는 0으로 자동 초기화 됨. 문자열상수("Hello World")도 사용함.
프로그램 시작시 연속적인 공간으로 할당, 단, 큰 메모리 할당을 요구하는 경우, 메모리가 부족하여 할당이 실패한다면 프로그램이 죽을 수 있음.
Stack Segment매개변수, 함수내의 지역변수가 사용하는 메모리 영역, OS가 알아서 해제한다. 이 영역의 변수들은 초기화하지 않으면 쓰레기값을 가진다.
Heap Segmentmalloc(), new로 동적으로 할당되는 영역, 사용자에 의해 해제된다.

 void test(int a)
{
	cout << "Data Segment에 저장됩니다." << endl;
	int *p = new int[10];
	delete []p;
}
  • 지역변수 p, 매개변수 a
    • Stack Segment를 사용
    • OS가 해제
  • 동적으로 할당되는 배열[10] 즉, 40byte
    • Heap Segment를 사용
    • 사용자가 직접 해제 -> delete []p;

댓글 남기기..
이름: : 오른쪽의 새로고침을 클릭해 주세요. 새로고침
EditText : Print : Mobile : FindPage : DeletePage : LikePages : Powered by MoniWiki : Last modified 2018-04-13 23:12:52

진정한 우정은 느리게 자라나는 나무와 같다. (조지워싱턴)