[프로그래밍 언어론] 12강 - 문장
·
방송통신대학교/📝프로그래밍 언어론
📌 개요🔑 학습 키워드┗ 문장: 처리를 나타내는 표현 => "선언문", "실행문" 나뉨.┗ 선언문: 변수명, 변수 타입 바인딩, 함수도 포함┗ 실행문: 처리가 이뤄지는 문 => "대입문", "제어문" 나뉨.┗ 대입문: 대입 연산자, 연속 대입문, 복합 대입 연산자, 단항 대입 연산자┗ 제어문: 조건문, 반복문┗ 무조건 분기문 & 논란: 대표적으로 goto문 => 프로그램 구조 파악 힘듦(논란) => 결론 잘 안씀💡 1. 선언문과 실행문[ 문장 ]┗ 처리를 나타내는 표현┗ 프로그램은 데이터 처리를 위해 문장의 나열로 구성┗ 대부분의 프로그래밍 언어는 문장을 "선언문"과 "실행문"으로 구별하여 제공 [ 선언문 ]┗ (1) 변수나 서브프로그램, 데이터 타입의 이름을 만듦┗ (2) 이후..
[프로그래밍 언어론] 11강 - 수식
·
방송통신대학교/📝프로그래밍 언어론
📌 개요🔑 학습 키워드┗ 수식 정의: 값을 나타내는 표현(연산자, 피연산자)┗ 산술 연산자: (+,-,/,*), 우선순위, 결합방향, 타입변환┗ 관계 연산자: >,=,┗ 논리 연산자: 단락 회로 계산(단축 평가), 논리합, 논리곱, 논리부정 연산자 💡 1. 수식의 개요[ 수식 ]┗ 값을 나타내는 표현- '값': 정수, 실수, 문자, 문자열, 배열 표현(C, C++), 리스트 표현(Python) 등┗ 연산자가 피연산자에 적용된 형태도 가능┗ 피연산자(operand): 연산이 적용될 값- '데이터 표현': 2, abc 등- '변수': A, B, I, J 등┗ 연산자(operator): 피연산자에 적용되어 연산을 수행하는 함수- '기본 연산자': 덧셈 연산자, 곱셈 연산자 등- '함수': ..
[프로그래밍 언어론] 10강 - 복합타입
·
방송통신대학교/📝프로그래밍 언어론
📌 개요🔑 학습 키워드┗ 복합 타입: 배열, 문자열, 연관배열, 구조체, 공용체, 포인터, 참조형 타입┗ 각 타입 - 정의┗ 각 타입 - 데이터 집합┗ 각 타입 - 연산 집합 💡 1. 배열[ "동질형 데이터의 모음"으로 구성된 타입 ]┗ 원소: 배열의 각 데이터┗ 배열의 크기: 배열의 원소 개수 [ 각 원소는 첨자로 구별 ]┗ 첨자: 첫 원소와의 상대적 위치 ( 인덱스 - 보통 0부터 시작 ) [ 데이터 집합 ]┗ "원소"의 "타입에 해당하는 데이터 집합"이 배열의 크기만큼 모인 집합┗ 원소의 타입과 배열의 크기에 따라 다양한 타입 존재- '원소의 타입': 단순타입 및 복합타입 모두 가능- '배열의 크기': 양의 정수 범위 x 차원 [ 차원 ]┗ 배열에 사용되는 첨자의 개수┗ 1..
[프로그래밍 언어론] 9강 - 타입
·
방송통신대학교/📝프로그래밍 언어론
📌 개요🔑 학습 키워드┗ 타입의 정의 ( 데이터 집합 + 연산 집합 )┗ 타입 안전성에 따른 언어 분류: 강타입, 약타입, 무타입 언어┗ 타입의 분류: 데이터 형태, 타입 정의 사용자 개입 가능 여부, 데이터 요소(1, n개)┗ 단순 타입: 정수형, 실수형, 문자형, 논리형, 열거형 💡 1. 타입의 개요[ "타입" = 데이터 집합 + 연산 집합 ]┗ 데이터 집합: 처리 대상이 되는 데이터의 집합- 예시: 정수형의 데이터 집합 = { ..., -2, -1, 0, 1, 2 ... }┗ 연산 집합: 해당 데이터에 적용 가능한 연산의 집합- 예시: 정수형의 연산 집합 = { +, -, *, /, ... }┗ 변수의 속성 중 한 가지┗ 서브프로그램의 인수와 반환에도 이용┗ 프로그램이 타입 안..
[프로그래밍 언어론] 8강 - 변수의 영역
·
방송통신대학교/📝프로그래밍 언어론
📌 개요🔑 학습 키워드┗ 변수 영역의 정의┗ 블록의 정의┗ 블록과 변수: 지역 변수, 비지역 변수, 참조 환경┗ 영역 규칙: 자유 변수, 정적 영역 규칙, 동적 영역 규칙, 영역 구멍┗ 전역 변수, 이름 공간 💡 1. 영역의 개요[ 변수의 영역 (scope) ]┗ 프로그램에서 "변수"를 "사용할 수 있는 범위"┗ 변수에 값을 대입하거나 변수의 값을 읽어 올 수 있는 범위┗ 영역의 시작: 변수가 선언된 곳- Python 처럼 변수 타입을 선언하지 않는 언어는 변수에 '처음 대입문이 사용된 곳' [ 영역과 수명 ]┗ 변수의 영역과 변수의 수명은 다를 수 있음- '영역의 시작': 변수 선언 위치- '수명의 시작': 변수 선언 위치(동적 주소 바인딩) 또는 프로그램 수행 시작(정적 주소 바..
[프로그래밍 언어론] 7강 - 변수와 바인딩
·
방송통신대학교/📝프로그래밍 언어론
📌 개요🔑 학습 키워드┗ 변수 정의 및 속성(변수명, 주소, 값, 타입)┗ 변수 -> 배런 표기법┗ 바인딩 정의┗ 바인딩 시각 -> 동적 바인딩, 정적 바인딩┗ 변수의 수명 -> 할당, 해제 -> 자동 할당, 수동 할당┗ 정적 세그먼트, 동적 세그먼트┗ 변수 종류: 정적 변수, 동적 변수(스택 동적 변수), 힙 동적 변수 💡 1. 변수의 개요[ 변수 ]┗ 데이터를 저장하거나 나중에 사용할 수 있도록 기억하는 객체┗ 컴퓨터 하드웨어의 메모리를 추상화한 것┗ 변수의 속성: 변수명, 타입, 주소, 값- '변수명': 변수의 이름 -> 식별자- '타입': 변수에 저장할 수 있는 데이터 집합의 종류- '주소': 변수가 사용하는 메모리의 위치- '값': 변수에 저장된 데이터 -> 수행 시간 동..
[프로그래밍 언어론] 6강 - 프로그래밍 언어의 구현
·
방송통신대학교/📝프로그래밍 언어론
📌 개요🔑 학습 키워드┗ 프로그래밍 언어 구현 모형: 컴파일러, 인터프리터 구조적 차이를 수학적 모형으로 설명┗ 컴파일러, 인터프리터 구현 단계┗ 언어 구현에 필요한 자료 구조: 구문 트리, 심볼 테이블, 환경(인터프리터), 실행 환경┗ 실행 환경 -> 메모리 구조: 정적 세그먼트(코드, 정적 데이터), 동적 세그먼트(힙, 스택)┗ 실행 환경 -> 레지스터: 전용 레지스터(PC, SP, FP), 범용 레지스터┗ 어휘 분석기, 구문 분석기 💡 1. 프로그래밍 언어 정의와 구현[ 프로그래밍 언어 정의 ]┗ 구문 규칙 + 의미 규칙:- '구문 규칙': 어떤 프로그램이 올바른 형태인지 규정하는 것- '의미 규칙': 올바른 형태의 프로그램을 실행하였을 때 어떻게 실행되는 것이 올바른 것인이 규정..
[프로그래밍 언어론] 5강 - 구문 분석
·
방송통신대학교/📝프로그래밍 언어론
📌 개요🎯 학습 목표┗ 구문 분석 = 문자 -> 어휘 분석 -> 어휘 -> 구문 분석(파스 트리) -> 구문 🔑 학습 키워드┗ 어휘 분석( 문자 / 토큰 -> 식별자, 예약어 등... / 렉심 -> for, if, age(id) 등... )┗ 파스 트리 ( 유도 -> 트리 형태로 표현한 것 )┗ 모호성: 파스 트리의 모호성을 의미함.┗ 모호성 제거: 연산자 우선순위, 좌결합 연산자, 중첩된 if문의 else 💡 1. 어휘 분석[ 프로그램 분석 ]┗ 문자 -> (어휘 분석) -> 어휘 -> (구문 분석) -> 구문 [ 어휘 분석 ]┗ 목적: 프로그램에 사용되는 단어를 구별해 냄┗ 토큰: 어휘 분석을 통해 얻는 결과'토큰 예': 연산자(+, -, = 등), 구분자([,;] 등), 식별자..
[프로그래밍 언어론] 4강 - 구문론과 의미론
·
방송통신대학교/📝프로그래밍 언어론
📌 개요🎯 학습 목표┗ 구문론과 의미론 정의, 표현 방법 🔑 학습 키워드┗ 프로그래밍 언어 형식적 정의┗ 구문론: 문맥 자유 문법(CFG), BNF, EBNF, 구문 도표┗ 의미론: 정적 의미론(속성 문법), 동적 의미론(기능적, 표기적, 공리적 의미론) 💡 1. 구문론과 의미론[ 언어의 형식적 정의 ]┗ '구문론'과 '의미론'을 통해 언어를 엄밀하게 정의하는 것을 의미- 구문론(syntax): 문장의 올바른 '형태'를 정의- 의미론(semantics): 올바른 형태의 문장이 나타내는 '의미'를 정의┗ 예시: 한국어 -> '나는 너를 사랑한다.'- 구문: 주어 + 목적어 + 서술어- 의미: 화자가 청자를 몹시 아끼고 귀중히 여김┗ 예시: 영어 -> 'I love you'- 구문: 주어..