• AI글쓰기 2.1 업데이트

2024년 2학기 방송통신대 프로그래밍언어론 중간과제 연구

미리보기 파일은 샘플 파일 입니다.

상세정보

소개글

"2024년 2학기 방송통신대 프로그래밍언어론 중간과제 연구"에 대한 내용입니다.

목차

1. 프로그래밍 언어의 구성 요소
1.1. 데이터
1.2. 연산
1.3. 명령어
1.4. 타입

2. 저급 언어와 고급 언어의 차이

3. 프로그래밍 언어의 분류
3.1. 강타입 언어
3.2. 약타입 언어
3.3. 무타입 언어

4. BNF와 EBNF 표기법
4.1. BNF의 메타기호 및 표현 방식
4.2. EBNF의 메타기호 및 표현 방식
4.3. BNF와 EBNF의 변환

5. 구문 도표
5.1. 구문 도표의 구성 요소
5.2. 구문 도표를 통한 문법 표현

6. 리눅스 설치 및 사용자 계정 생성
6.1. 리눅스 설치 방법
6.1.1. DVD ISO 파일을 이용한 오프라인 설치
6.1.2. NetInstall ISO 파일을 이용한 네트워크 설치
6.2. 일반 사용자 계정 생성

7. grep 명령어 사용

8. 텍스트 파일 생성 및 출력

9. 파일 권한 관리
9.1. 파일 실행 권한 부여
9.2. 디렉터리 및 파일의 기본 접근 권한 설정

10. find 명령어 사용

11. 참고 문헌

본문내용

1. 프로그래밍 언어의 구성 요소
1.1. 데이터

데이터(data)는 프로그램 언어 구성의 핵심 요소 중 하나로, 컴퓨터가 처리 가능한 형태로 변환된 정보라고 볼 수 있다. 프로그램은 주어진 입력 데이터를 읽어 들여 이를 처리한 후, 결과물을 출력 데이터로 제공한다. 과거에는 포트란(FORTRAN)처럼 주로 과학 계산에서 사용되었기 때문에 숫자 데이터가 중심이 되었지만, 현대에 들어서는 텍스트, 이미지, 비디오 등 다양한 형태의 데이터뿐만 아니라 사용자 이벤트와 같은 추상적인 데이터까지 처리의 범위가 확장되었다.

컴퓨터 내부에서 데이터를 처리할 때, 모든 데이터는 이진수(binary number)로 표현된다. 이진수는 0과 1로 이루어진 숫자로, 컴퓨터가 데이터를 저장하고 처리하는 기본 단위이다. 우리가 화면에서 보는 텍스트 데이터도 컴퓨터 내부에서는 이진수로 변환되어 처리된다. 텍스트 데이터의 경우, 특별한 인코딩 방식에 따라 이진수로 변환된 후, 다시 사람이 읽을 수 있는 형태로 출력된다. 따라서 컴퓨터가 처리하는 데이터는 크게 텍스트 데이터와 이진 데이터로 나눌 수 있다.

이진 데이터(binary data)는 기본적으로 이진수의 나열로 구성되어 있으며, 주로 정수(integer) 형태로 나타난다. 정수는 컴퓨터 시스템에서 한 워드(word)로 표현될 수 있는 범위 내에서 제한된 값을 가지게 된다. 한 워드란 컴퓨터가 한 번에 처리할 수 있는 데이터의 크기를 의미한다. 따라서 항상 최대로 표현할 수 있는 정수와 최소로 표현할 수 있는 정수에 차이가 있다.

일반적으로 컴퓨터는 음수를 표현하기 위해 2의 보수 방식을 사용한다. 이는 음수와 양수를 모두 표현할 수 있는 방법이다. 무부호 정수(unsigned integer)는 영 이상의 정수만을 나타내는 방법으로, 음수를 고려하지 않고 양수의 범위를 최대한 넓히는 데 사용된다. 부동소수점수(floating-point number) 표현은 과학 계산에서 중요한 수의 표현 방식이다. 부동소수점수는 소수점 이하의 값을 나타내는 가수(mantissa), 2의 거듭제곱 횟수를 나타내는 지수(exponent), 그리고 부호 비트로 구성된다. 이 표현 방식은 수의 범위를 넓혀주지만, 정밀도는 여전히 제한될 수 있다. 특히, 가수가 이진수로 표현되기 때문에, 십진 소수 중에서 0.1, 0.2와 같은 수는 정확히 표현될 수 없으며, 십진 소수 0.1, 0.2, ..., 0.9 중에서 0.5만이 부동소수점수로 정확하게 나타낼 수 있는 예이다. 이는 부동소수점 연산에서 발생할 수 있는 오차의 원인이 된다.

데이터는 크게 이진 데이터와 텍스트 데이터로 나눌 수 있다. 이진 데이터는 수를 나타내는 반면, 텍스트 데이터는 문자를 나열한 형태의 데이터로, 각 문자는 특정 이진 표현과 대응된다. 이러한 문자와 이진 표현 사이의 대응 관계를 코드(code)라고 부르는데, 전통적으로 ASCII(American Standard Code for Information Interchange) 코드가 널리 사용되었다. ASCII는 7비트로 구성되어 영문과 일부 특수문자만을 표현할 수 있는 한계를 지니고 있다. 이 한계를 극복하기 위해 유니코드(Unicode)가 개발되었으며, 유니코드는 전 세계의 다양한 문자를 표현할 수 있도록 설계되었다. 유니코드는 문자집합(character set)과 인코딩(encoding)의 조합으로 구성되며, 예를 들어 한글을 표현하기 위한 문자 집합과 이진수로 변환하는 인코딩 방식을 정의한다. 전통적으로 MS 윈도우에서는 한글 표현을 위해 euc-kr 인코딩을, 리눅스에서는 utf-8 인코딩을 사용해 왔다. 최근에는 MS 윈도우에서도 utf-8 인코딩을 점차 지원하고 있다.

그림, 음악, 비디오 파일과 같은 미디어 데이터는 이진 데이터로 분류된다. 하지만 이러한 데이터 역시 인코딩 과정을 거친다. 미디어 데이터는 보통 데이터 크기를 압축하고 효율적으로 표현하기 위해 인코딩이 필요하며, 이러한 인코딩을 해석하는 프로그램을 코덱(codec)이라고 한다. 코덱은 음성 및 영상 데이터의 인코딩과 디코딩을 담당하여, 데이터를 효율적으로 저장하고 전송할 수 있게 해준다.


1.2. 연산

연산(operation)은 프로그래밍에서 데이터를 처리하는 방법을 의미하며, 이러한 연산을 수행하는 특정 함수나 기호를 연산자(operator)라고 한다. 예를 들어, 정수 2와 3을 받아 그 합인 5를 생성하는 함수는 대부분의 프로그래밍 언어에서 덧셈 연산자 `+`로 표현된다. 이러한 수학적 연산뿐만 아니라 문자열 연산도 존재하며, 예를 들어 "home"과 "page"라는 문자열을 결합하여 "homepage"를 생성하는 함수를 접합 연산자라고 부른다.

연산의 결과는 프로그램에서 나중에 사용하기 위해 어딘가에 저장해야 하며, 이 저장소를 변수(variable)라고 부른다. 대부분의 프로그래밍 언어에서 변수는 값이 변할 수 있는 공간으로 정의되지만, 일부 언어에서는 변수의 값을 한 번 설정한 후에는 변경할 수 없게 제한하여, 변수는 사실상 상수(constant)로 작동하며, 이런 언어에서는 변수 대신 이름(name)이나 식별자(identifier)라는 용어를 사용한다. 변수나 식별자에 처음 값을 지정하는 연산을 대입 연산(assignment operation)이라고 부르며, 이는 프로그램이 실행되는 동안 계산된 값을 나중에 참조할 수 있도록 저장하는 역할을 한다. 예를 들어, C 언어에서 `det = b*b - 4*a*c;`라는 대입문은 변수 `det`에 계산된 값을 저장하여 이후에 사용할 수 있게 한다. 여기서 대입 연산자는 수학적인 등호와는 다른 의미를 가지며, 우측의 값을 평가한 후 좌측의 변수에 그 값을 대입하는 비대칭적인 연산이다.

프로그래밍 언어에서 연산을 나타내는 주요 구조는 수식(expression)과 문장(statement)이다. 수식은 값을 나타내는 표현을 총칭하며, 반드시 연산자가 포함될 필요는 없다. 예를 들어, 숫자 `2`, `3` 같은 단순한 값이나, `2 + 3`처럼 연산자가 포함된 표현도 모두 수식에 해당된다. 또한, 변수를 포함한 표현 역시 수식으로 간주된다. 반면 문장은 수식보다 더 넓은 범위의 표현으로, 값의 계산뿐만 아니라 프로그램의 실행 흐름을 제어하거나, 값을 출력하는 등의 다양한 작업을 나타낼 수 있다. 예를 들어, C 언어에서 변수 `msg`에 `"Hello C?"`라는 값을 저장하는 표현은 수식이지만, 이 값을 출력하는 `printf(msg);`는 문장이다.

중요한 점은, C 언어에서는 수식 끝에 쌍반점(;)을 붙이면 그것이 문장이 된다는 것이다. 따라서 `msg = "Hello C?";`는 단순한 대입 수식이 아니라, 대입문(statement)이 된다. 쌍반점은 문장과 수식을 구분하는 중요한 역할을 한다. 예를 들어, `printf(msg);`에서 쌍반점을 빼고 `printf(msg)`로 작성하면, 이는 더 이상 문장이 아닌 수식으로 간주되며, 수식의 값은 출력된 글자 수가 된다. 그래서 `printf`라는 이름에서 `f`는 함수(function)를 의미하며, 이 함수는 특정 값을 반환한다는 의미를 내포하고 있다.

반면 문장에서 쌍반점을 뺀다고 해서 항상 수식이 되는 것은 아니다. 예를 들어, `if (a > 0)` 다음에 오는 `printf("positive\n");`은 조건이 참일 때 "positive"를 출력하는 문장이다. 하지만 이 문장에서 쌍반점을 제거한다고 해서 `printf("positive\n")`가 수식이 되는 것은 아니며, 컴파일 시 오류를 발생시킬 수 있다. 이는 조건문에서 쌍반점이 문장의 구성을 결정...


참고 자료

우균·김진욱(2019), 프로그래밍언어론, 한국방송통신대학교출판문화원.
창병모(2021), 프로그래밍 언어론 원리와 실제, 인피니티북스.
원유헌(2020), 프로그래밍 언어 개념, 정익사.
김종현(2019), 컴퓨터구조론 개정5판, 생능출판.
2024 시나공 정보처리기사 실기, 강윤석, 길벗알앤디 저
김희천·김진욱(2023), UNIX시스템, 한국방송통신대학교출판문화원.

주의사항

저작권 EasyAI로 생성된 자료입니다.
EasyAI 자료는 참고 자료로 활용하시고, 추가 검증을 권장 드립니다. 결과물 사용에 대한 책임은 사용자에게 있습니다.
AI자료의 경우 별도의 저작권이 없으므로 구매하신 회원님에게도 저작권이 없습니다.
다른 해피캠퍼스 판매 자료와 마찬가지로 개인적 용도로만 이용해 주셔야 하며, 수정 후 재판매 하시는 등의 상업적인 용도로는 활용 불가합니다.
환불정책

해피캠퍼스는 구매자와 판매자 모두가 만족하는 서비스가 되도록 노력하고 있으며, 아래의 4가지 자료환불 조건을 꼭 확인해주시기 바랍니다.

파일오류 중복자료 저작권 없음 설명과 실제 내용 불일치
파일의 다운로드가 제대로 되지 않거나 파일형식에 맞는 프로그램으로 정상 작동하지 않는 경우 다른 자료와 70% 이상 내용이 일치하는 경우 (중복임을 확인할 수 있는 근거 필요함) 인터넷의 다른 사이트, 연구기관, 학교, 서적 등의 자료를 도용한 경우 자료의 설명과 실제 자료의 내용이 일치하지 않는 경우