CHAPTER 04. 프로그래밍 언어 인간과 컴퓨터의 대화_진화하는 소통. 진화하는 컴퓨터 제목
프로그래밍 언어의 기본 개념과 특징을 공부한다. 프로그래밍 언어의 발전 과정과 기술 동향을 공부한다. 프로그래밍 언어의 종류와 구현 원리를 공부한다. 간단한 프로그래밍 언어의 실행 과정을 공부한다. 절차 지향 언어와 객체 지향 언어의 특성과 사용 절차를 공부한다. 1. 프로그래밍 언어의 개요 저급 언어와 고급 언어 프로그래밍 언어의 발전 주요 프로그래밍 언어별 특징 2. 프로그래밍 언어의 실행 사용자 요구 분석과 프로그램 설계 코딩 및 컴파일 간단한 프로그램 작성 및 실행 3. 절차 지향 언어의 프로그래밍 4. 객체 지향 언어의 프로그래밍 절차 지향 언어와의 차이점 객체 지향 언어의 주요개념
1.1 프로그래밍 언어의 개념 프로그래밍 언어 실행 번역 프로그래밍(개발) 프로그래밍 언어 인간이 컴퓨터와 의사소통할 수 있도록 컴퓨터에 내리는 명령으로 프로그램을 처리하도록 기술한 언어를 말함 실행 번역 프로그래밍(개발) 프로그래밍 언어
1.1 저급 언어와 고급 언어 고급 언어 저급 언어 컴퓨터 내부 표현에 가까운 언어로, 기계어와 어셈블리어로 구분 기계어(CPU 명령어) : 0과 1로 된 2진수를 사용하여 프로그램 어셈블리어 : 기계어 명령을 알기 쉬운 기호(약어)로 표시한 것 110 00110 -> LDA 00110(메모리 00110번지에 있는 내용을 레지스터에 저장) 고급 언어 일상 언어를 사용하여 프로그램 함 프로그램을 저급언어보다 손쉽게 효율적으로 할 수 있음
1.2 프로그래밍 언어의 발전 1950년대 언어 FORTRAN이 개발 → 프로그래밍 언어 발전의 이정표가 됨 1960년대 언어 과학기술용으로 개발된 FORTRAN을 더욱 발전시킨 고급 언어와 사무처리용 고급 언어 출현(사무처리용 언어 COBOL) 1970년대 언어 C언어와 PASCAL이 개발 1980년대 언어 컴퓨터 초보자에게 적합한 교육용 언어인 BASIC 언어 등장 1990년대 언어 객체지향 언어가 본격적으로 등장(C++, JAVA, Visual Basic 등) 2000년대 이후 언어 파워빌더, 델파이, 각종 쿼리 전용언어 등 소위 4세대라 불리는 언어 등장 5세대 언어라 불리는 인공지능 기능을 이용한 자연언어 연구가 진행
2.1 사용자 요구 사항 분석과 프로그램 설계 사용자 요구 사항 분석 사용자의 필요를 파악하고 프로그램을 통해 해결할 문제가 무엇인지 확인하는 단계 프로그램 설계 실제 코딩을 시작할 때 사용할 논리를 프로그래머가 대략 그려내는 단계 알고리즘 설계라고도 함 알고리즘 설계는 순서도나 의사코드를 사용 순서도 : 제어 흐름을 그림으로 표현한 것 의사코드 : 제어 흐름을 프로그램과 비슷한 문자로 표현
2.1 사용자 요구 사항 분석과 프로그램 설계 프로그램 설계 프로그램 제어 흐름 유형에는 순차구조, 선택구조, 반복구조가 있음 순차 구조 : 프로그램 코드 순서대로 실행 선택 구조 : 프로그램이 다음에 무엇을 해야 하는지를 결정하는 분기 구조 반복 구조 : 조건이 만족하지 않을 때까지 계속 반복
2.2 코딩 및 컴파일 코딩 : 프로그래밍 언어로 프로그램을 작성하는 단계 컴파일 : 고급 언어로 작성된 명령문을 기계어로 바꾸는 단계(번역) 컴파일러를 이용한 방식 프로그램 전체를 한번에 기계어로 번역하는 방식 C언어, COBOL, FORTRAN, PASCAL 등의 언어에서 사용 고급 언어로 작성한 원시코드를 기계어인 목적코드로 번역 → 목적코드는 로더에 의해 메모리에 로드된 후 실행하여 결과값 인터프리터를 이용한 방식 프로그램을 한 행씩 읽어 번역과 실행을 동시에 하는 방식 BASIC 등의 언어에서 사용
2.3 디버깅 및 시험 프로그램이 포함하는 모든 오류를 찾아내 제거하는 것 오류에는 구문 오류와 논리 오류가 있음 구문 오류 : 틀린 문자를 입력하거나 문법에 맞지 않는 명령문을 사용했을 때 발생하는 오류 논리 오류 : 제어 구조의 부적절한 사용으로 발생하는 오류
3. 절차 지향 언어의 프로그래밍 절차 지향 언어의 개념 절차 지향 언어의 특징 프로그램 코드가 순서대로 실행되는 언어 PASCAL, COBOL, FORTRAN, BASIC, C언어 등 절차 지향 언어의 특징 소프트웨어 규모가 복잡해지면 운영 및 유지 비용이 많이 듬
4. 객체지향 프로그래밍 객체지향 프로그래밍 절차 지향언어와 객체지향 언어의 차이점 클래스로부터 객체(object)를 만들어 객체 간의 상호작용을 이용하여 주어진 문제를 해결하는 프로그래밍 방식 기능이 복잡하여 프로그램 크기가 커지는 윈도우 기반 프로그램에 적용 객체지향 프로그래밍 언어 : JAVA, C++, Visual Basic 등 절차 지향언어와 객체지향 언어의 차이점 절차 지향 언어 : 데이터와 데이터를 처리하는 기능(=프로그램)이 분리 못함 객체 지향 언어 : 데이터와 기능을 묶어 하나로 캡슐화시킴 -> 프로그램 운영과 유지가 쉽다.
4.2 객체 지향 언어의 주요 개념 객체 개별적으로 식별되는 사물을 지칭, 클래스로부터 생성 속성과 기능을 캡슐화 함 클래스 객체를 만드는 틀 다른 사물과 구분되는 속성을 가진 객체가 모여, 일반화된 범주로 묶인 것 상속 하위 클래스는 상위 클래스가 가지는 속성과 기능을 모두 가지고 있는데, 이를 클래스 상속이라 함
4.2 객체 지향 언어의 주요 개념 메시지 객체 간에 전달되는 명령 단위 객체 :
4.2 객체 지향 언어의 주요 개념 추상화 캡슐화 객체 A 객체 B 실세계의 객체에서 불필요한 부분을 제거하여 필요한(공통적인) 부분만을 간결하고 이해하기 쉽게 요약하여 클래스로 만드는 작업 예) 자동차 캡슐화 객체에 속성과 기능을 포함하면서 추상화 개념을 통해 객체의 세부내용은 사용자로부터 은폐하는 것 객체 A 객체 B
4.2 객체 지향 언어의 주요 개념 다형성 상속 외부에 보이는 모습은 한 가지 형태이지만 실질적으로 쓰이는 기능은 여러 가지 역할을 수행한다는 의미 상속 물려받는다’라는 특징의 상속(inheritance) 하위 클래스는 상속을 통해 상위 클래스의 속성과 기능을 그대로 재사용 상위 클래스 상속 하위 클래스 상속