Power C++ 제1장 C++ 소개.

Slides:



Advertisements
Similar presentations
프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
Advertisements

© 2012 생능출판사 All rights reserved 쉽게 풀어쓴 C 언어 Express C Express 제 2 장 프로그램 개발과정.
.Net History. Visual Studio.Net 2002 /.Net Framework 1.0 제품의 버전 / 특징 2002 년 - Visual Studio.Net 2002 /.Net Framework 1.0 첫 통합 개발 환경 - C# 언어 등장 (C# 1.0)
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
제2장 프로그램 개발과정 C Express.
쉽게 풀어쓴 C언어 Express 제2장 프로그램 개발 과정 C Express.
쉽게 풀어쓴 C언어 Express 제2장 프로그램 개발과정 C Express Slide 1 (of 31)
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++로 프로그래밍한다는 것의 의미 세상에서 가장 간단한 C++ 프로그램
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++ 프로그래밍 기초 : 객체지향의 시작 C++로 프로그래밍한다는 것의 의미
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
C++ Espresso 제1장 기초 사항.
Power Java 제3장 이클립스 사용하기.
Power Java 제3장 이클립스 사용하기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
쉽게 풀어쓴 C언어 Express 제2장 프로그램 개발과정 C Express.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
C언어 콘서트 제1장 프로그래밍 소개.
Power Java 제2장 자바 개발 도구.
C 언어 1 1주차 C언어 시작하기 - 1차시 C 언어 특징 및 프로젝트 생성 Programming Language.
Lesson 9. 예외처리.
제 3장. C보다 나은 C++ II.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
C / C++ Programming in multi platform
Visual Basic .NET 처음 사용하기.
1. C++ 시작하기.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
C++ Espresso 제12장 템플릿.
C언어 콘서트 제2장 기초 사항.
10장. 예외처리.
Chapter 2 기 초 사 항.
CHAP 12. 리소스와 보안.
AVR – ATmega103(ATMEL) Compilers & ISP
13. 연산자 오버로딩.
C 2장. C 프로그램 시작하기 #include <stdio.h> int main(void) { int num;
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
자바 5.0 프로그래밍.
어서와 C언어는 처음이지 제14장.
27장. 모듈화 프로그래밍.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
제 1장. C++ 시작하기.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
자바 5.0 프로그래밍.
C++ Espresso 제11장 예외 처리와 형변환.
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
빌드 성공.
( Windows Service Application Debugging )
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
OpenCV 설정 2.21 만든이 딩딩.
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
공학도를 위한 C언어 프로그래밍실습1 -통합개발환경 사용법-
함수, 모듈.
발표자 : 이지연 Programming Systems Lab.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
프로그래밍 개론 Ⅰ 제 1장 . 서론 ②.
수업 내용 수업 목표 강의 내용 강의 계획서 교과서 및 참고도서 평가 방법 수강생의 학습 방법 제안 강의자료 사이트
개정판 누구나 즐기는 C언어 콘서트 제1장 프로그래밍 소개 출처: pixabay.
7 생성자 함수.
1장. C Language Synopsis.
6 객체.
Presentation transcript:

Power C++ 제1장 C++ 소개

이번 장에서 학습할 내용 C++에 대한 기초적인 사항들을 살펴봅니다. 프로그램이란? 프로그래밍 언어 C++ 언어의 역사 예제

컴퓨터는 범용적인 기계

프로그램이란? 프로그램은 작업 지시서

프로그램의 역할 Q) 컴퓨터에서 프로그램이 하는 일은 무엇인가? 프로그램이란 우리가 하고자 하는 작업을 컴퓨터에게 전달하여 주는 역할을 한다.

기계어 Q) 컴퓨터가 이해할 수 있는 언어는 어떤 것인가? 컴퓨터가 알아듣는 언어는 한가지이다. 즉 0과 1로 구성되어 있는 “001101110001010...”과 같은 기계어이다. 컴퓨터는 모든 것을 0과 1로 표현하고 0과 1에 의하여 내부 스위치 회로들이 ON/OFF 상태로 변경되면서 작업을 한다.

프로그래밍 언어의 필요성 Q) 그렇다면 인간이 기계어를 사용하면 어떤가? 기계어를 사용할 수는 있으나 이진수로 프로그램을 작성하여야 하기 때문에 아주 불편하다. 프로그래밍 언어는 자연어와 기계어 중간쯤에 위치 컴파일러가 프로그래밍 언어를 기계어로 통역

컴파일러

중간 점검 문제 1. 컴퓨터가 직접 이해할 수 있는 단 하나의 언어는 _____이다. 2. 프로그래밍 언어를 기계어로 변환시켜주는 프로그램을 ______한다. 3. 우리는 왜 기계어를 사용해서 프로그램하지 않는가?

C++ 언어

C++ 언어의 개발 C++는 1980년대 초에 AT&T 벨연구소의 Bjarne Stroustrup에 의하여 개발 C with Classes -> C++ C++는 C언어에 클래스 개념을 추가하고 이어서 가상 함수, 연산자 중복 정의, 다중 상속, 템플릿, 예외 처리 등이 기능이 차례로 추가

C++의 설계 철학 엄격한 타입 검사, 범용 언어, 효율적, 이식성 여러 가지의 프로그래밍 스타일을 지원 (절차 지향 프로그래밍, 데이터 추상화, 객체 지향 프로그래밍, 일반화 프로그래밍) 프로그래머가 자유롭게 선택할 수 있도록 설계 최대한 C와 호환 플랫폼에 의존적이거나 일반적이지 않은 특징은 제거

절차적 프로그래밍 절차적 프로그래밍에서는 데이터보다는 알고리즘(절차)을 중시

절차적 프로그래밍의 단점 무조건적인 점프 문장->난해

구조화 프로그래밍 무조건적인 점프를 없앴음 그러나 여전히 데이터와 알고리즘은 분리되어 있음

객체 지향 프로그래밍 객체 지향 프로그래밍에서는 데이터와 알고리즘이 묶여있음.

예제 예제: 직원의 월급을 계산하는 프로그램 직원에 대한 데이터와 알고리즘이 묶여있음

객체 지향의 개념 캡슐화: 데이터와 알고리즘을 하나의 단위(클래스)로 묶는 것이다. 정보은닉: 데이터에 대한 불필요한 접근을 차단하여서 데이터를 보호 상속: 비슷한 클래스가 이미 존재하고 있다면 그 클래스를 가져다가 사용하는 것 다형성: 같은 이름의 함수나 연산자를 중복 정의하여서 상황에 따라서 가장 적절한 함수나 연산자를 프로그램이 자동적으로 선택 앞으로 하나씩 학습할 것임.

객체 지향의 최종 목표 최종 목표: 코드의 재사용

일반화 프로그래밍 하나의 코드로 다양한 타입의 데이터를 처리하는 기법

하나의 예 template<typename T> class List { // 타입 T를 저장하는 리스트 구현 ... }; List<Animal> animals; List<Car> cars; 타입 매개 변수 코드에서 T가 Animal로 치환될 수 있다는 것만 이해하자.

중간 점검 문제 1. 절차적 프로그래밍 기법은 데이터와 알고리즘 중에서 특히 _____을 강조한다. 2. 객체 지향 프로그래밍에서는 ________와 _________이 클래스로 묶여있다. 3. 데이터 타입을 자유롭게 변경할 수 있는 코드를 만드는 기법은 ________이다.

프로그램 작성 과정

프로그램 작성 단계 편집 (edit) 컴파일 (compile) 링크(link) 에디터를 이용하여 원하는 작업의 내용을 기술하여 소스 코드 작성 소스 파일(source file): 소스 코드가 들어 있는 텍스트 파일 (예) test.cpp 컴파일 (compile) 소스 파일->기계어로 변환 오브젝트 파일(object file) : 기계어로 변환된 파일 (예) test.obj 링크(link) 오브젝트 파일들을 라이브러리 파일들과 연결하여 하나의 실행 파일 생성 실행 파일 (executable file): 실행이 가능한 파일 (예) test.exe

Q & A (Q)소스 파일과 오브젝트 파일, 실행 파일 중에서 반드시 보관하여야 하는 파일은 무엇일까? (A) 정답은 소스 파일이다. 소스 파일만 있으면 컴파일러를 수행시켜서 오브젝트 파일, 실행 파일은 만들 수 있다. 하지만 소스 파일을 삭제하면 컴파일이 불가능하다. 따라서 반드시 소스 파일은 잘 보관하여야 한다. Visual C++에서는 프로젝트와 워크스페이스 파일도 같이 보관하는 것이 좋다. 이러한 파일들은 다시 만들 수도 있지만 번거로운 작업이 된다.

중간 점검 문제 1. test.cpp를 컴파일하면 어떤 파일에 생성되는가? ___________________________________ 2. 링크 과정이 존재하는 이유는 무엇인가?

통합 개발 환경 통합 개발 환경(IDE: integrated development environment): 에디터 + 컴파일러 + 디버거

통합 개발 환경의 종류 비주얼 C++(Visual C++) 마이크로소프트사의 제품 윈도우 기반의 거의 모든 형태의 응용 프로그램 제작 가능 최신 버전: 비주얼 C++ 2008 우리가 사용할 버전: 비주얼 C++ 6.0 or 비주얼 C++ 2008

비주얼 C++ 실행 개발 도구를 사용할 때의 유용한 정보를 말해준다. 다음 팁을 계속보려면 우른다. 체크되어 있으면 다음번 시작때도 팁을 보여준다.

워크스페이스와 프로젝트 워크스페이스(workspace); 작업 공간, 여러 개의 프로젝트가 있을 수 있다. 프로젝트(project): 하나의 실행 파일을 만들기 위하여 필요한 파일들의 그룹 워크스페이스: 여러 개의 프로젝트들을 가지고 있는 작업공간 프로젝트: 실행 파일을 만들기 위하여 필요한 파일들

비주얼 C++ 시작하기

프로젝트 생성하기

프로젝트 생성하기 ② ③ ④ ⑤ ① ⑥ 프로젝트 이름을 적어준다. Win32 콘솔 애플리케이션을 선택한다. 프로젝트가 저장되는 폴더를 지정한다. 프로젝트 이름을 적어준다. Win32 콘솔 애플리케이션을 선택한다.

프로젝트 생성하기 ① ② 비어있는 프로젝트를 만든다. simple application을 선택하면 간단한 c++ 프로그램이 작성되니 주의!

소스 파일 생성하기

소스 파일에 프로그램 작성

비주얼 C++의 전체 구조 소스 파일을 에디팅하는 윈도우. 워크스페이스와 프로젝트에 속하는 파일을 보여준다. 컴파일과 링크과정에서의 메시지 출력.

프로그램 입력

컴파일하기

컴파일 결과

오브젝트 파일과 실행 파일의 생성 오브젝트 파일과 실행 파일이 생성된 것을 확인할 수 있다.

프로그램 실행 하기

실행 결과 화면

첫번째 프로그램의 설명 Hello World! /* 첫 번째 프로그램*/ #include <iostream> using namespace std; // 이름 공간 설정 int main() { cout << "Hello World!\n“; // 화면에 문자열 출력 return 0; } Hello World!

주석 주석(comment): 프로그램에 대한 설명 /* 한줄로된주석 */ int main() /* 줄의일부분인주석 */ 주석은 프로그램을 설명하는 글입니다. 주석(comment): 프로그램에 대한 설명 /* 한줄로된주석 */ int main() /* 줄의일부분인주석 */ /* 여러 줄로 된주석 */

헤더 파일 포함 #include는 소스 코드 안에 특정 파일을 현재의 위치에 포함 #include <iostream> #include는 소스 코드 안에 특정 파일을 현재의 위치에 포함 헤더 파일(header file): 컴파일러가 필요로 하는 정보를 가지고 있는 파일 iostream: 표준 입출력 스트림 주의!: 전처리기 지시자 문장 끝에는 세미콜론을 붙이면 안 된다.

이름 공간 using은 이름 공간을 지정하는 지시어이다. using namespace std; using은 이름 공간을 지정하는 지시어이다. 프로그램에서는 많은 이름들이 사용되고 이들 이름들은 효율성을 위하여 이름 공간(name space)이라고 하는 몇 개의 영역으로 구성되어 있다. 이름 공간 std를 사용한다는 의미 print() { … } print() { … } libraryB libraryA

함수 int main() 입력 함수(function): 특정한 작업을 수행하기 위하여 작성된 독립적인 코드 (참고) 수학적인 함수 프로그램 = 함수의 집합 main()은 가장 먼저 수행되는 함수 함수 출력

함수의 구조

문장 함수는 여러 개의 문장으로 이루어진다. 문장들은 순차적으로 실행된다.

출력 객체 cout cout은 컴파일러가 제공하는 객체로서 출력을 담당합니다. 큰따옴표 안의 문자열을 화면에 출력합니다. cout << “Hello World!\n”; cout은 컴파일러가 제공하는 객체로서 출력을 담당합니다. 큰따옴표 안의 문자열을 화면에 출력합니다. Hello World!

함수 반환문 return은 함수의 결과값을 외부로 반환합니다. return 0; 운영 체제 main() cout << Hello World!\n”; return 0; 운영 체제

응용 프로그램 #1 다음과 같은 출력을 가지는 프로그램을 제작하여 보자. Hello World! Kim ChulSoo

첫번째 버전 문장들은 순차적으로 실행된다는 사실 이용 #include <iostream> using namespace std; int main() { cout <<" Hello World! "; cout << “Kim ChulSoo"; return 0; } 우리가 원하는 결과가 아님! Hello World!Kim ChulSoo

줄바꿈 문자 \n 줄바꿈 문자인 \n은 화면에서 커서는 다음줄로 이동하게 한다. cout << “Hello World!”; cout << “Hello World!\n”;

변경된 프로그램 줄바꿈 문자를 포함하면 우리가 원하던 결과가 된다. #include <iostream> using namespace std; int main() { cout <<“Hello World!\n"; cout << “Kim ChulSoo\n”; return 0; } Hello World! Kim ChulSoo

응용 프로그램 #2 다음과 같은 출력을 가지는 프로그램을 제작하여 보자. 3X1=3 3X2=6 3X3=9

응용 프로그램 #2 역시 문장들은 순차적으로 수행된다는 점을 이용한다. #include <iostream> using namespace std; int main() { cout <<“3X1=3\n"; cout <<“3X2=6\n"; cout <<“3X3=9\n"; return 0; }

오류 메시지의 분석

오류 수정 과정 소스파일 test.cpp 오브젝트 파일 test.obj 실행파일 test.exe 컴파일러 (compiler) ERROR!! 소스파일 test.cpp 오브젝트 파일 test.obj 실행파일 test.exe 컴파일러 (compiler) 링커 (linker) 실행 (execution) 실행 시간 오류 논리 오류 컴파일 시간 오류

오류 수정 및 디버깅 컴파일이나 실행 시에 오류가 발생할 수 있다. 에러와 경고 에러(error): 심각한 오류 경고(warning): 경미한 오류 오류의 종류 컴파일 시간 오류: 대부분 문법적인 오류 실행 시간 오류: 실행 중에 0으로 나누는 연산 같은 오류 논리 오류: 논리적으로 잘못되어서 결과가 의도했던 대로 나오지 않는 오류

중간 점검 문제 1. 주석이 하는 역할은 무엇인가? 2. 주석을 여러 줄로 하려면 어떤 스타일을 사용하여야 하는가? 3. #include 문은 어떤 동작을 하는가?

Q & A