본문 바로가기

카테고리 없음

4주차 (컴퓨터 개론)

1. 프로그래밍 언어

-사람과 컴퓨터가 서로 의사교환을 하기 위함

-사람이 컴퓨터에게 지시할 명령어를 기술하기 위함

-주어진 어떤 문제를 해결하기 위해 인간과 컴퓨터 사이에 의사소통을 가능하게 하는 인공적인 언어를 의미

 

가. 프로그래밍 공부하는 이유

-효율적 알고리즘 개발 능력 향상

-현재 사용하는 프로그래밍 언어 능력을 향상

-주어진 과제를 해결하는 최적 언어를 선택

-다른 언어를 쉽게 배울 수 있음

 

프로그래밍 언어의 분류

-저급 언어와 고급 언어

저급언어 : 기계어 어셈블리어

1)주 기억장치, 레지스터, 마이크로 프로세서, 입출력 포트등의 하드웨어를 직접 통제.

2)저급 언어를 사용하기 위해 전문적 공부가 필요

3)고급 언어에 비해 언어 자체가 어려워 전문가라 하더라도 프로그램의 생산성이 낮음

 

-기계어 :

0과 1로 표현

컴퓨터가 직접 이해할 수 있는 유일한 언어

연산코드와 피연산자로 구성

프로그래밍 어려움

컴퓨터 하드웨어에 대한 통제가 가능

 

-어셈블리어:

복잡한 기계어를 간략하게 기호화

기계어의 연산코드와 피션산자를 프로그래머가 이해하기 쉬운 기호 형태로 일대일 대응

하드웨어 장치에 대한 강력한 통제 가능

 

 

고급언어 : C, C+,C++,JAVA, Pascal,Ada 등

 

 

2. 프로그램 구현

 

가. 프로그램

-컴퓨터에서 특정 목적의 작업을 수행하기 위해 관련된 명령어와 자료를 모아놓은 것 -> 컴퓨터에게 지시할 일련의 처리작업 내용을 담고 있음

 

1)프로그래머 - 프로그램을 만드는 사람

2)개발자 - 넓은 의미로, 개발에 참여하는 사람

 

나. 프로그램 개발 환경

 

1)개발도구

-편집기

-프로그램 명령어인 프로그래밍 언어의 내용을 편집하는 편집기

 

2)컴파일러

-개발 도구에서 가장 ㅜㅈㅇ요한 것은 작성한 고급 프로그래밍 언어를 컴퓨터가 이해할 수 있는 기계어로 변환

 

3)디버거

-작성된 프로그램에서 발생하는 프로그램 오류를 쉽게 찾아 수정할 수 있도록 도와주는 프로그램

 

4)링커

-여러 목적 파일을 하나의 실행파일로 만들어주는 기능

 

5)통합 개발 환경

- 이클립스, 비쥬얼 스튜디오 등

 

다. 프로그램 구현 과정

1)소스 작성

프로그램 언어를 이용하여 원하는 작업을 기술한 내용을 소스 코드 또는 간단히 코드라 함

 

2)컴파일러

소스파일(원시파일)을 목적파일(object file)로 만들어주는 프로그램

 

3)어셈블러 

어셈블리 언어의 프로그램을 기계어로 변환

 

4)링커

목적 파일을 실행 가능한 실행파일 (Eexcute File)로 만들어 주는 프로그램

 

5)로더

작성된 프로그램을 컴퓨터의 주기억장치에 로드함으로써 프로그램을 실행 가능하게 하는 역할 수행

 

**원시코드에서 실행파일이 되어 실행되는 과정

원시코드 -(번역기 : 어셈블러, 컴파일러, 인터프리터)> 목적 코드 -(링커)> 실행 파일 -(로더)> 메모리 -> 실행파일

 

라. 컴파일러와 인터프리터

-인터프리터

고급 언어를 기계어로 번역해주는 역할

원시코드를 한줄씩 읽어들여 목적 코드로 바꿔줌

컴파일러에 비해 번역 느림. 프로그램을 작성할때보다 융통성 가질 수 있음

-컴파일러

원시코드 전체를 읽은 다음 이를 기계어로 번역

컴파일러는 한번 컴파일 한 후에는 수정이 없으면 매번 컴파일 할 필요없이 빠른 시간내에 프로그램 실행 가능

 

인터프리터 특징 컴파일러
실행되는 줄(라인)단위 번역 번역 방법 프로그램 전체 번역
번역 과정이 비교적 간단하고 대화형 언어에 편리 장점 한번 컴파일 한 후 매번 빠른 시간내 전체 실행 가능
실행할때마다 매번 기계어로 바꾸는 과정을 다시 수행해야 하여 항상 인터프리터가 필요 단점 프로그램의 일부를 수정하는 경우에도 전체 프로그램을 다시 컴파일 해야함
즉시 실행 출력물 목적 코드
BASIC 등 언어종류 FORTRAN, COBOL, C 등

 

***컴파일러와 인터프리터의 특징을 모두 갖는 방식

-자바와 C#언어

컴파일러가 존재하여 컴파일 과정 필요

컴파일된 실행파일을 실행할 때 인터프리터 방식과 같이 인터프리터 필요

모든 시스템에서 독립적인 프로그램 언어를 개발하기 위함

 

 

마. 고급 프로그래밍 언어 종류

 

1.프로그램 언어의 발전 과정

 

1950- 어셈블리, FORTRAN

포트란 : 과학과 공학 및 수학적 문제들을 해결하기 위해 IBM의 존 배커스에 의해 고안된 3세대 프로그래밍 언어

 

1960- COBOL, PL/I

코볼 : 코볼은 포트란에 이어 두번째로 개발된 고급 언어. 기업의 사무처리에 적합하게 개발.

 

1970- C, PASCAL

파스칼 : 교육용으로 제작된 프로그래밍 언어이기에 모든 명령어가 갖추어져 있음 제어 구조가 있어, 구조적 프로그래밍에 적합

 

1980- BASIC

베이직 : 초보자도 쉽게 배울 수 있도록 만들어진 대화형 프로그래밍 언어, 약 200여개의 명령어들로 구성된 가장 쉬운 대화형 프로그래밍 언어, 마이크로 소프트는 베이직을 기본으로 비주얼 베이직이라는 프로그램언어 개발. 

장점 - 초보자나 학생이 교육용으로 사용하기 좋음, 한글화

단점 - 객체 지향 기능이 C#, JAVA등에 비해 상대적으로 약함

 

1990- C++, JAVA, Visual Basic

C와 C++ : 유닉스를 개발하기위한 시스템 프로그래밍 언어로 데니스 리치가 개발한 C

장점 : 저급언어와 유사한 기능 포함, 구조적 프로그래밍 기능이 있어 읽기와 작성 쉬움. 프로그램 융통성과 이식성이 뛰어남.

단점 : 객체 지향개념 없음. C++은 너무 방대하고 복잡. C언어와 호환성 강조, C#은 사용자 저변이 JAVA에 비해 활성 미흡

JAVA : C++의 강력함을 제공하면서 더 작고 안전성 강화된 언어, 웹하드에 적합, 월드 와이드 웹의 보급과 확대와 보조를 맞춰 발전.

 

2000- 4세대 언어, 5세대 언어

 

바. 프로그래밍 언어와 구성 요소

 

1.)주석과 문장

-주석 : 프로그램 언어와 문법에 관련 없이 프로그램 내부에 기술되는 부분, 프로그램 설명내용이나 기술하고 싶은 내용 작성시 사용

-문장 : 문장이 모여서 하나의 프로그램이 만들어지므로 프로그램 언어에서 일을 수행하는 문법상의 최소 단위. 

-블록 : 여러 문장의 단위

-변수 : 프로그램에서 임시로 자료값을 저장할 수 있는 저장 장소

 

2) 제어 구조

-프로그램 언어에서 프로그램의 실행순서를 정하는 구문의 구조

 

순차구조 : 위에서 아래로 문장을 실행하는 구조

선택구조 : 주어진 조건이 만족되는 경우와 아닌 경우 처리내용을 달리 처리하고자 할 때 사용(if ,switch문 등)

반복구조 : 어떤 일을 반복적으로 수행할 때 이용되는 구문의 구조(for, while, do while 등)

 

사. 객체 지향 프로그래밍

 

1)객체 지향 개요 : 1960년 시뮬라(SIMUAL)라는 프로그램 언어에서 처음 소개. (프로그램 언어, 소프트웨어 개발 방법론, 데이터 베이스 등 많은 분야에서 발전)

 

2)객체(Obeject)

현실 세계의 사물이나 개념을 시스템에서 이용하기 위해 현실 세계를 자연스럽게 표현하여 손쉽게 이요할 수 있도록 만든 소프트웨어 모델

 

3)객체 지향의 특징

-추상화

-상속성

-캡슐화

-다형성

 

4)객체의 구성

-속성 : 객체의 특성을 표현하는 정적인 성질

-행동 : 객체 내부의 일을 처리하거나 객체들 간의 서로 영향을 주고받는 동적인 일을 처하는 단위

 

5)프로그램 방식에 따른 언어의 분류

구분 절차지향 객체지향
프로그래래밍 방식 동사 명사
모듈단위 함수 또는 프로시저 속성과 행동을 표현한 객체
언어 FORTRAN, BASIC, COBOL, PASCAL, C 등 Object Pascal, Visual Basic, C#, C++, JAVA 등

6)JAVA

-프로그래밍 언어 C++을 기반으로 한 객체 지향 프로그래밍 언어

양방향 RV를 만드는 제어박스 개발을 위한 그린 프로젝트가 시작

-자바는 시스템에 독립적 언어 : 자바 가상기계는 바이트 코드가 실행될 수 있도록 돕는 가상 컴퓨터