1 / 36

강사소개

강사소개. 강사 : 유원경 수정관 A 동 421 호 (920-7177) 강의사이트 : http://cs.sungshin.ac.kr/~wyoo/lec_programming1.html 조교선생님 : 최윤정 li31122@naver.com (920-7525) 메일보내는 규칙 : 제목에 반드시 프로그래밍 학번 이름을 쓰시오 ex) 프로그래밍 201234500 홍길동 과제 1. 1 장 . 컴퓨터 , 프로그램 및 C++ 입문. 강의목표.

ulla-sears
Download Presentation

강사소개

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 강사소개 • 강사: 유원경 • 수정관A동 421호 (920-7177) • 강의사이트: • http://cs.sungshin.ac.kr/~wyoo/lec_programming1.html • 조교선생님: 최윤정 li31122@naver.com(920-7525) • 메일보내는 규칙: 제목에 반드시 프로그래밍 학번 이름을 쓰시오 ex) 프로그래밍 201234500 홍길동 과제1

  2. 1장. 컴퓨터, 프로그램 및 C++ 입문

  3. 강의목표 • 컴퓨터 기초, 프로그램, 운영체제 개념(1.2-1.4) • (선택)2진수, 10진수, 16진수 수의 표현(1.5) • C++ 역사(1.6) • C++ 프로그램 작성 방법(1.7) • C++ 프로그램 개발주기 이해(1.8) • (선택)Visual C++로 프로그램 작성(1.9) • (선택)Dev-C++로 프로그램 작성(1.10) • (선택)윈도우 명령라인에서 컴파일하기(1.11) • (선택)Unix 명령라인에서 컴파일하기(1.12)

  4. 컴퓨터 구성 • 컴퓨터는 다음의 주요한 하드웨어 컴포넌트로 구성되어 있다. • 중앙처리장치(CPU), 메모리(주 메모리), 저장장치(하드디스크, CD, 테이프), 입출력장치(모니터, 키보드, 마우스, 프린터)- 통신장치(모뎀 및 네트워크 카드(NIC))

  5. CPU 중앙처리장치(CPU)는 컴퓨터의 중추로서 메모리에서 명령을 읽어오고 실행하는 역할을 담당한다. CPU는 2개의 요소로 구성되는데 제어부(control unit)와 산술논리부(arithmetic/logic unit)이다. 컴퓨터의 클럭 속도는 보통 MHz(100만 Hz)이며 CPU의 속도는 지속적으로 증가되어 왔다. 최근의 PC들은 Intel Core2 Duo 프로세서를 탑재하고 3GHz(1GHz는 1,000MHz임) 이상의 속도를 내고 있다.

  6. Memory • 메모리에는 데이터와 프로그램 명령들이 CPU에서 실행될 수 있도록 저장되어 있다. 메모리 단위는 바이트로 8비트 묶음을 의미한다. • 사용되기 전에 프로그램과 데이터는 메모리로 로드되어야 한다. 메모리는 완전히 비어있다기 보다는 무엇인가 기록되어 있다고 볼 수 있으며, 초기화되지 않은 값이 메모리에 있다면 프로그램에서 사용할 수 있는 의미 있는 값은 아니며, 새로운 의미 있는 정보가 메모리에 쓰이게 되면 이전의 값은 사라진다.

  7. 데이터 저장형태 컴퓨터는 이진 상태인 1과 0으로서 정보를 표현하는 기기이다. 여러 종류의 데이터, 숫자, 문자, 문자열 등은 일련의 비트(바이너리 디지트: 0과 1)로 인코딩된다. 메모리에는 이러한 데이터와 프로그램 명령들이 CPU에서 실행될 수 있도록 저장되어 있다. 메모리 단위는 바이트로 8비트 묶음을 의미하며 순서대로 번지가 매겨진다. 프로그래머는 데이터의 인코딩, 디코딩에 신경 쓸 필요는 없다. 인코딩 규칙에 따라 시스템에서 자동으로 수행되기 때문이다. 인코딩 규칙은 다양한데, ASCII 인코딩의 경우 문자 ‘J’를 01001010 8비트(1바이트)로 인코딩한다. 3과 같이 작은 숫자는 1바이트에 저장하고, 큰 수를 저장하고자 할 경우에는 인접한 여러 바이트를 사용하여 숫자를 저장하게 된다. 바이트는 최소 저장 단위이다.

  8. bit : 0/1을 표현하는 최소정보단위 • byte: 한문자를 표현하는 최소단위(8bits) : 256 가지의 의미를 나타낼 수 있다. • ASCII 코드 – 미국 ANSI에서 제정한 문자 표준 코드 • word: 특정 컴퓨터가 처리하는 정보단위 (보통 4bytes 이지만 2bytes 혹은 8bytes 도 있다)

  9. 프로그램 프로그램은 소프트웨어를 의미하는 것이며 컴퓨터가 실행할 명령(instruction)을 의미한다. 사용자는 프로그램을 통해 컴퓨터가 처리할 작업을 지시하게 된다. 프로그램이 없다면 컴퓨터는 하나의 비어있는 기계 덩어리에 불과하다. 컴퓨터는 사람의 말을 이해할 수 없으므로, 컴퓨터 언어를 사용하여 컴퓨터에 필요한 프로그램을 작성하는 것이 필요하다.

  10. 프로그래밍 언어 기계어는 가장 원시적인 수준의 언어로 0과 1의 조합으로 구성된 언어이며 특정 플랫폼의 컴퓨터에 적합하게 작성되어 다른 타입의 컴퓨터 간에는 호환되지 못한다. 명령어도 바이너리 코드 형태로 되어 있으므로, 다양한 명령을 사용하려면 여러 바이너리 코드를 사용해야 한다. 기계어로 프로그램을 작성하는 것은 지루한 작업이며 읽고 수정하는 것도 쉽지 않다. 예로써 두 수를 더하는 경우 다음과 같은 명령을 작성하여야 한다. 1101101010011010 기계어어셈블리언어고급언어

  11. 프로그래밍 언어 어셈블리어(assembly language)는 저수준의 프로그래밍 언어로 기계어 명령을 대신하는 연상기호(mnemonic)를 사용한다. 예로써 두 수를 더하는 경우를 어셈블리어로 작성하면 다음과 같은 명령을 작성하여야 한다. ADDF3 R1, R2, R3 기계어어셈블리언어고급언어

  12. 프로그래밍 언어 고급 언어(high-level language)는 영어 문장과 유사한 형태로 만들어져 있으므로 배우기 쉽고 프로그램 작성이 용이하다. 예를 들어 고급언어로 원의 반지름이 5인 원의 면적을 구하는 프로그램은 다음과 같이 작성하면 된다. area = 5 * 5 * 3.1415; 기계어어셈블리언어고급언어

  13. 인기 있는 고급언어 • COBOL (Common Business Oriented Language) • FORTRAN (FORmula TRANslation) • BASIC (Beginner All-purpose Symbolic Instructional Code) • Pascal (Blaise Pascal이라고도 함) • Ada (Ada Lovelace이라고도 함) • Visual Basic (Microsoft에서 개발한 비주얼 베이직) • Delphi (Borland에서 개발한 Pascal 유사 언어) • C (B 언어를 토대로 만들어진 언어) • C++ (C 기반 객체지향 언어) • Java • C# (Microsoft에서 개발한 Java와 유사한 언어)

  14. 소스코드 컴파일 고급 언어로 작성된 프로그램을 소스 프로그램(source program)이라고 한다. 컴퓨터는 소스 프로그램을 바로 이해할 수 없기 때문에 컴파일러(compiler)를 사용하여 기계어로 변환하는 과정을 거치게 된다. 기계어 프로그램은 라이브러리와 링크 되어 실행 파일을 만들게 된다.

  15. 운영체제 운영체제(OS)는 컴퓨터에서 실행되는 가장 중요한 프로그램으로 컴퓨터 시스템의 자원을 관리하고 프로그램을 관리하는 역할을 한다. 우리가 보통 사용하는 운영체제는 윈도우 (NT, 2000, Me, XP, Vista)나 Mac OS 또는 Linux 운영체제 중의 하나일 것이다. 윈도우는 현존하는 가장 인기 있는 운영체제이며, 웹 브라우저, 워드 프로세서 같은 응용 프로그램도 운영체제 없이는 실행될 수 없다.

  16. 수 체계 NOTE: 이 절은 우선 넘어가고 다음에 2진수 체계나 16진수에 대한 궁금한 사항이 있을 때 찾아보는 형태로 활용해도 좋다. binary 0, 1 0, 1, 2, 3, 4, 5, 6, 7 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F octal decimal hexdecimal

  17. 수 체계 컴퓨터는 내부적으로 메모리나 디스크 같은 저장 장치에 0과 1을 저장할 수 있기 때문에 2진수 체계를 사용한다. 컴퓨터의 숫자나 문자는 0과 1로 구성된 열로 작성된다. 이때 0과 1 각각을 비트(bit)라고 한다. 2진수 체계는 두 개의 수, 즉 0과 1을 가지고 있는 것이다. 우리는 10진수 체계를 사용하므로 2진수는 쉽게 의미가 오지는 않는다. 프로그램에서 20을 작성하는 경우 10진수로 작성하게 되지만, 컴퓨터 소프트웨어에 의해 2진수로 변환되며, 컴퓨터 내부의 2진수도 변환에 의해 10진수로 표현된다.

  18. 수 체계, cont. 10진수의 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9이며 10진수는 이들 숫자로만 만들어진다. 숫자는 위치에 따라 숫자의 값도 달라진다. 숫자의 위치에 따른 값은 10의 멱승이 된다. 예를 들어, 십진수 7423에는 숫자 7, 4, 2, 3이 있는데 각기 7000, 400, 20, 3 값을 가진다. 10진수 체계 시스템은 10개의 수를 사용하며 각 자리는 10의 멱승의 값을 가진다. 여기에서 10은 밑수(base) 또는 기수(radix)가 된다. 따라서 2진수의 경우에는 2개의 수가 사용되므로 기수가 2가 되며, 16진수의 경우에는 16개의 수가 사용되므로 기수가 16이 된다.

  19. 수 체계, cont. 많은 경우 10진수 형태로 프로그램을 작성하게 되지만, 운영체제 같은 시스템 프로그래밍을 작성하는 경우에는 기계어 코드를 직접 작성하는 것도 필요하므로 2진수를 직접 사용하기도 한다. 2진수로 표현하면 길어지고 이해도 쉽지 않게 되므로 16진수(hexadecimal number)가 2진수를 간략히 표현하는 형태로 사용된다. 16진수는 이진 비트 4개로 표현되며, 16진수 체계는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F의 16개의 기호로 숫자를 표현한다. A, B, C, D, E, F 기호는 숫자 10에서부터 15까지를 의미한다.

  20. Binary Numbers => Decimals 2진수는 다음의 10진수와 같은 값을 가진다. 2진수 10은 = 10진수 2이다. 2진수 1000은 = 10진수 8이다. 이진수 10101011은 = 10진수 171이다.

  21. Decimals => Binary 10진수 를 2진수로 변환하려면, 비트의 값을 구하는 것이 필요하다. 다음과 같이 표현된다. 2진수를 구하는 방법은 10진수 를 2로 나누는데 몫이 0이 될 때 까지 계속 나누기를 한다. 이때 구해진 나머지가 이 된다. 예를 들어 10진수 123은 2진수로 1111011이다. 변환은 다음과 같다.

  22. Windows 계산기 공학용 윈도우 계산기로 수 변환 기능이 있다. 계산기 프로그램은 윈도우에서 [시작]-[프로그램]-[보조프로그램]에서 실행한다.

  23. Hexadecimals => Decimals 16진수는 이진 비트 4개로 표현되며, 16진수 체계는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F의 16개의 기호로 숫자를 표현한다. A, B, C, D, E, F 기호는 숫자 10에서부터 15까지를 의미한다. 16진수 는 다음의 10진수와 같다. 16진수 7F = 10진수 127 16진수 FFFF = 10진수 65535

  24. Decimals => Hexadecimal 16진수 은 10진수로 다음과 같은 표현할 수 있다. 16진수를 구하는 방법은 10진수 를 16으로 나누어 몫이 0이 될 때까지 계속한다. 이때 구해진 나머지가 이 된다. 예를 들어 10진수 123은 16진수로 7B이다. 변환은 다음과 같다.

  25. Hexadecimal Binary Binary Hex Decimal 16진수를 2진수로 변환하기 위해서는 16진수의 각 자리를 4비트 2진수로 변환하면 된다. 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 A 10 1011 B 11 1100 C 12 1101 D 13 1110 E 14 1111 F 15 2진수를 16진수로 변환하기 위해서는 오른쪽에서부터 왼쪽으로 2진수 4자리마다 잘라 16진수로 변환하면 된다.

  26. 기본 진수(2, 8, 16진수) • 2012= 2* 103 + 0* 102 + 1* 101 + 2* 100 • (2012 )10 = ( 3 7 3 4 )8 = ( 11 111 011 100) 2 = ( 7 D C)16 2012를 위의 진법으로 쉽게 구하는 방법: 2012 /8= 251…4 251/8=31…3 31/8=3…7

  27. C++의 역사 C, C++, Java, C#은 유사하며 서로 관련이 있는 언어이다. Java는 C++가 모델이 되었고, C#은 C++와 비슷하면서 Java 언어의 특징을 가지는 언어이다. 이들 중 한 언어를 알고 있으면 다른 언어를 배우기가 쉬워진다. 언어는 B 언어로부터 발전하였으며 B 언어는 BCPL 언어가 모태가 되었다. BCPL은 1960년대 중반에 운영체제와 컴파일러 개발을 위해 마틴 리차드(Martin Richards)에 의해 개발되었으며 켄 톰슨(Ken Thompson)은 BCPL의 많은 특징을 수용하여 B언어를 만들게 되었다. C++는 C의 확장으로 1983-1985년 동안에 벨 연구소의 비얀 스트로스트룹(Bjarne Stroustrup)에 의해 개발되었으며 C 언어에 여러 특징들이 더해졌다. 가장 중요한 특징은 객체지향 프로그래밍(object-oriented programming)을 위한 클래스에 관한 내용이 추가된 것이다. C++ 언어에 대한 국제 표준은 1998년 미국 ANSI(American National Standards Institute)에 의해서 정해졌다.

  28. 간단한 C++ 프로그램 C++ 언어를 사용하여 화면에 “Welcome to C++!”이란 문자열을 출력하는 프로그램이다. #include <iostream> int main() { // Display Welcome to C++ to the console std::cout << "Welcome to C++!" << std::endl; return 0; } Welcome Run

  29. 주석 (Comments) • 소스에서 보이는 // 부분 이후나 /* … */ 사이에 있는 부분 • 프로그램 언어의 문법과는 관계없는 프로그램 설명 문장 • 전처리기 지시자(Preprocessor directives) • #으로 시작하는 문장 • 컴파일 하기 전에 먼저 처리해야 할 일을 수행하도록 명령을 내리는 문장 • 문장 #include는 다음에 나오는 헤더 파일(header file)을 이 문장이 있는 부분에 삽입하는 역할을 수행 /* 처음예제 */ #include <헤더파일이름>

  30. 간단한 C++ 프로그램 확장 리스트 1.1의 프로그램은 한 줄의 메시지를 출력하였다. 일단 이 프로그램을 이해하고 나면 여러 줄을 출력하는 것은 어려운 일이 아니다. 리스트 1.2는 리스트 1.1을 수정하여 3줄을 출력하는 프로그램으로 수정하였다. #include <iostream> int main() { std::cout << "Welcome to C++!" << std::endl; std::cout << "Welcome to C++Builder!" << std::endl; std::cout << "Welcome to C++ Compiler!" << std::endl; return 0; } Welcome Run

  31. 프로그램 작성, 컴파일, 실행

  32. 프로그램 개발 과정 • 링커(linker) • 이러한 여러 개의 목적 파일들을 라이브러리 함수와 연결해서 하나의 파일인 실행파일을 생성하는 작업을 수행 • 로더(loader) • 작성된 프로그램을 컴퓨터의 주기억장치에 로드(load)함으로써 프로그램을 실행 가능하게 하는 역할을 수행

  33. 공부하는 방법 • 'C:\user_id\examples' 폴더에 프로그램을 작성하고, 필요한 경우 usb memory 나 e-mail로 다른 사이트에 프로그램을 보관

  34. 새로운 프로그램 만들기(dev-c++) • http://www.bloodshed.net/dev/devcpp.html • Dev-c++를 시작합니다. • File/New/Source file 메뉴를 선택합니다. • untitled 파일이 표시=> 코드 작성 • file/ save 선택하여파일 이름 입력하여 저장 • Execute/compile 선택 • Run: • system(“PAUSE”) ; 코드추가

  35. 새로운 프로그램 만들기(visual c++) • 첫번째 단계: 새로운 프로젝트 만들기 • 비주얼 스튜디오를 시작합니다. • File/New/Project 메뉴를 선택합니다. • 프로젝트 타입은 "Win32 Console Application"을 선택합니다. • 'Project name:'난에는 “proj_name"를 입력합니다. • 'Location:'난에 프로젝트가 저장될 디렉토리를 지정합니다. • (ex. D:\user_id\examples) • OK 버튼을 누릅니다. • 콘솔 에플리케이션 에서‘empty project'를 선택합니다. • 프로젝트를 확인하고 끝냅니다.

  36. 두번째 단계: 코드 작성하기 • Project의 context 메뉴에서 [Add]-[New Item] 을 선택합니다. • Code 에서 C++ file 을 선택합니다. • File 이름을 입력합니다. 여기서는 “Welcome"로 합니다. • Location 입력한후 Add 를 클릭합니다. • Code 를입력합니다. • 세번째 단계: 컴파일하고 수행하기 • 메뉴의 Build/compile 를 선택합니다. • 에러가 있으면 찾아서 수정합니다. • 에러가 없으면 [Debug]-[Start Without Debugging]를 선택하여 수행합니다.

More Related