2017 ~ 2019 기출문제
정답표
2024년 2학기 간단 수강후기
C,Java,Python 등 프로그래밍 언어에 기초가 되는 과목.
BNF, EBNF, 구문도표가 핵심이었다.
BNF에서 EBNF로 바뀔때 추가되는 기호들,
단말기호와 비단말기호가 어떤 것인지 구분하는 것,
반복문과 조건문 등을 어떤기호, 어떤방법으로 표현하는지 알고 표기할 줄 알아야 한다.
중간과제도 이론들과 BNF를 EBNF로 바꾸고, 구문도표로 표현하는 것이다.
개인적으로 중간과제가 조금 난이도가 있었던 과목이다.
요점정리
구문론 = 구조, 형태의 방식
의미론 = 문장이 나타내는 의미
인터프리터 : 고급언어를 직접 실행
세 가지 메타 기호
::= 정의
| 택일
< > 비단말 기호
비단말 기호: < >로 묶인 기호
단말 기호: 비단말 기호 및 메타 기호가 아닌
기호
규칙: ::=를 기준으로
왼쪽 부분을 오른쪽 부분으로 정의
추가된 메타 기호
[ ] 생략 가능
{ } 0번 이상 반복
( ) |과 함께 쓰여 한정된 범위의 택일
‘ ’ 메타 기호를 단말 기호로 사용
파스트리 : 유도를 트리로 나타낸 것
루트 노드: 시작 비단말 기호
비단말 노드: 비단말 기호
단말 노드: 단말 기호
단말 노드를 왼쪽부터 나타내면 프로그램 됨
중첩된 if문의 else
else문 앞에 나온 if문들 중 다른 else문과
짝이 되지 않은 가장 가까운 if문과 짝이 되도록 함
언어 구현 자료 구조
구문 트리 : 언어 구현 단계의 중심, 전 과정
심볼(컴파일러) : 식별자 정보(타입, 선언위치)
환경(인터프리터) : 값
실행 환경 : 실행을 지원하기 위한 메모리 구조
변수의 속성 (명타주값)
변수명, 타입, 주소, 값
바인딩 : 구성 요소의 속성을 결정짓는 것
바인딩 시각
언어 정의 : 연산자의 의미, 수의 이미 등 (정적)
언어 구현: 타입 자릿수, 수의 표기법 등 (정적)
컴파일 시점(번역) : 변수의 타입 등 (정적)
링크 시점 : 라이브러리 함수의 내용 등 (정적)
로드 시점 : 변수의 주소 등 (정적)
프로그램 수행 시점 : 변수의 값 등 (동적)
정적 바인딩 : 프로그램 시행 전, 바뀌지 않음 ( 컴파일에 적합 )
동적 바인딩 : 프로그램 수행 시점, 유동적 (인터프리터에 적합)
타입 바인딩
명시적 : 선언문에 명시 int a;
묵시적 : k =123, k = abc
정적 : 컴파일 시점에 구문 분석 // (명시적, 묵시적 모두 가능) // 프로그램 끝날 때 까지 수명
동적 : 타입 고정 x, 계속 변화
자동 할당 : int, double 처럼 변수에 메모리 크기가 있음
수동 할당 : 몇자리, 메모리인지 직접 지정 (힙 동적 변수)
지역 변수 : 블록 안에서 선언 (안에서만 사용)
비지역 변수 : 블록 밖에서 먼저 선언됐고, 블록 안에서 사용
(어디를 기준으로 하냐에 따라 상대적인 개념)
자유 변수 : 현재 블록에서 선언되지 않고 사용
전역 변수 : 어느 블록에도 포함되지 않고 선언
정적 영역 규칙
컴파일 시점에 변수의 참조 위치를 결정
정적 타입 검사 가능, 빠른 수행 속도
Algol 60, Pascal, C/C++, Java, Python 등 대부분
동적 영역 규칙
수행 시점에 변수의 참조 위치를 결정
정적 타입 검사 불가능, 느린 수행 속도
LISP 등의 인터프리터 방식 언어
전역 변수 : 블록 밖에서 선언 된 변수
블록안에서 같은 변수를 사용한다면 겹치는데 그럴 때 ::int k 처럼 ::를 붙이면 전역 변수를 우선 사용
이름 공간 : S1 { } 처럼 묶은 공간
그 안에서 선언 된 것을 사용 하려면 S1::k++ 하면 됨
영역 연산자 : ::
- 타입
강타입 언어 : 모든 타입 오류를 검출 (Haskell, ML, Java)
약타입 언어 : 일부 타입 오류 허용(C)
무타입 언어 : 선언문 없고, 어떤 대상의 타입도 계속 변경 가능 (Python 등 대부분의 스크립트)
정수형 연산집합 (그 집합 안에서만 결과값이 나옴)
C,C++ 숏타입의 경우
32767 + 1 = -32768 -1 = 32767
- 수식
연산자와 피연산자로 구성되어 하나의 값을 나타 냄
수식 : 값을 나타내는 표현
문장 : 처리를 나타내는 표현
- 타입 변환
묵시적 타입 변환 : 컴파일러에서 자동 수행 (다른 타입이 연산될 때, 큰범위 쪽으로 변환)
명시적 타입 변환 : 프로그래머가 직접 변환
단락 평가 : or, and 의 경우 맨 앞 조건만 봐도 결과가 나옴
- 문장
선언문 : 변수나 서브프로그램을 이용할 수 있도록 준비를 해 준다.
실행문 : 실제적으로 변수도 이용하고 서브프로그램도 이용하며 데이터를 처리한다. 실행문에는 변수의 값을 변경하는 대입문과 프로그램의 수행 흐름을 제어하는 제어문이 있다.
대입문 :
타입 변환 :
묵시적 변환
C,C++ 은 확대변환, 축소변환 둘다 가능
JAVA 는 확대변환만 가능
명시적 변환 : 프로그래머가 직접
- 서브프로그램
함수 : 명시적 반환값 있음
프로시저 : 명시적 반환값 없음
서브루틴 : 초기, 명확하지 않고, 출구가 여럿
매개변수 등은 헤더에 있음.
형식인수(형식 매개변수) : 서브프로그램에서 정보를 받기 위해 선언한 변수
실인수 (실매개변수) : 호출할 때 쓰는 실제 값 또는 주소
7. 인수 전달의 의미적 모델로는 입력, 출력, 입출력 모드 세 가지가 있고, 개념적 모델로는 값 전달, 참조 전달이 있다. 구현 모델로는 값 전달, 결과 전달, 값-결과 전달, 참조 전달, 이름 전달이 있다.
8. 입출력 모드 인수를 지원하기 위한 참조 전달은 별칭 문제를 발생시킬 수 있는데, 값-결과 전달을 이용하면 별칭 문제가 해결된다.
활성 레코드 : 틀 (정적)
활성 레코드 인스턴스 : 값 (동적)
정적링크 : 소스의 위치상 부모가 되는 클래스
동적링크 : 동적 호출을 불러일으킨 클래스
C 언어는 정적링크 없음
동적체인 : 리스트형태
정적체인 : 트리형태
레코드 : 원소를 식별자로 구별하는 이질형의 자료 집합체
힙 : 동적, 준동적, 준정적
스택 : 정적, 준정적
강의순서
01강. 프로그래밍 언어 소개
02강. 프로그래밍 언어의 발전 및 동작원리
03강. 프로그래밍 언어 패러다임
04강. 구문론과 의미론
05강. 구문 분석
06강. 프로그래밍 언어의 구현
07강. 변수와 바인딩
08강. 변수의 영역
09강. 타입
10강. 복합타입
11강. 수식
12강. 문장
13강. 서브프로그램 개요
14강. 서브프로그램 구현
15강. 객체지향과 다형성
방통대 학우님들에게 도움이 되었으면 하는 마음에 기출자료와 후기 남깁니다.
문제시 삭제 하겠습니다.
방통대 컴퓨터과학과 학우님들 화이팅 ~

방통대 컴퓨터과학과 1학기, 2학기 과목추천, 수강후기 2024년
들어가기 전 저는 비전공자이고 3학년으로 편입했습니다. 국비지원 공부해서 Java 유지보수 취직.2024년 1월 근무 시작하면서 방통대 편입 시작했습니다. 그 정도 수준과 주관이 들어갔다는 점
highneck.tistory.com
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
'방통대' 카테고리의 다른 글
방통대 UNIX시스템 기출문제 + 수강후기 + 요약정리 (0) | 2025.01.12 |
---|---|
방통대 JSP프로그래밍 기출문제 + 수강후기 + 요약정리 (5) | 2025.01.12 |
방통대 컴퓨터구조 기출문제 + 수강후기 + 요약정리 (3) | 2025.01.12 |
방통대 시뮬레이션 기출문제 + 수강후기 + 요약정리 (0) | 2025.01.08 |
방통대 Java프로그래밍 기출문제 + 수강후기 (1) | 2025.01.06 |