Share
Sign In

Programming Language

각 프로그래밍 언어의 문법들과 자료구조 및 알고리즘을 정리한 채널입니다.
All
Programming Language
R
Python
DataStructure
Algorithm
Java
C/C++
[프로그래밍 언어] 8. Abstract Data Types and Encapsulation Constructs
추상화 추상화 중요한 속성만을 포함하는 개체의 개관 또는 표현 공통적인 속성이 고려될 필요가 없는 그룹 개체들의 인스턴스들을 모으는 것을 허용 공통적인 속성 → 다시 작성 X 자동차 인스턴스는 자동차 클래스를 상속 프로세스 추상화 어떻게 실행되는지 상세하게제공X, 호출 방법을 다른 프로그램에게 제공 모든 부프로그램은 프로세스 추상화라고 할 수 있다 e.g. 정렬 프로세스를 위한 부프로그램 → 어떤 방식으로 정렬하는지 알 필요 없음 사용자는 이름, 프로토콜을 아는 것이 필요 데이터 추상화 레코드 데이터 구조에서 출발 추상 데이터 타입: 레코드 형태인 데이터 구조 + 데이터를 다루는 부프로그램 데이터 표현, 그 타입의 연산을 제공하는 부프로그램이 포함된 인클로저 접근 제어 → 인클로저 외부 단위로부터 숨길 수 있음 추상 데이터 타입의 변수를 선언 O, 내부 데이터 알 수 없음 추상 데이터타입의 인스턴스 = 객체 (클래스) 사용자 정의 추상 데이터 타입
  1. Programming Language
  • Y
    Yerim
[프로그래밍 언어] 7. Implementing Subprograms
호출과 복귀 호출 매개변수 전달 방법을 포함 지역 변수가 정적변수가 아닌 경우 지역 변수를 위한 기억 장소 할당 → 지역변수 바인딩 → 실행 상태를 저장 레지스터 값, CPU 상태 비트, 환경 포인터 EP 포함 제어를 부프로그램 코드에 전달 → 반환 중첩 부프로그램 지원하면 가시적인 비지역변수를 접근할 수 있는 동작 구조를 생성 복귀 출력 모드, 입출력 모드 + 복사 매개변수 → 형식 매개변수의 지역 값을 실 매개변수로 옮김 기억 장소를 해제 → 실행 상태를 복원 → 제어를 호출 프로그램에 반환 단순 부프로그램 부프로그램의 코드 (고정크기) + 지역변수 (고정크기) 중첩될 수 없고 지역변수가 정적 호출: 실행 상태 저장 → 매개변수 계산 및 전달 → 복귀 주소 전달 → 제어 전달 복귀: 실 매개변수 복사 → 함수 값 이동 → 실행 상태 복원 → 제어 전달 호출 복귀를 위해 저장되어야 하는 정보 실행 상태
  1. Programming Language
  • Y
    Yerim
[프로그래밍 언어] 6. Subprograms
추상화 프로세스 추상화: 부프로그램의 형식으로 같은 문장을 반복하여 작성하지 않음 데이터 추상화: 사용자가 정의한 추상 데이터 타입 부프로그램 부프로그램 인터페이스와 동작을 서술 단일 진입점 호출 프로그램의단위는 피호출 부프로그램의 실행 중 중단 실행이 끝났을 때 제어는 항상 호출 프로그램에게 돌아감 부프로그램의 머리부: 부프로그램 정의 → 이름 제공, 매개변수 리스트 지정 부프로그램의 몸체 C, C++: {중괄호}, 시행하지 않아도 함수 번역 Java: {중괄호}, 매개변수가 다르면 매개변수 오버로딩 → 정적 타입 언어 Python: 들여쓰기, def 만날때까지 존재 X → 인터프리터 언어 (if-else로 오버라이딩) 매개변수 프로파일: 형식 매개변수의 개수, 순서 및 타입 매개변수 프로파일 프로시저: 매개변수 프로파일 함수: 매개변수 프로파일 + 반환 타입 부프로그램 선언: 프로토콜 제공, 몸체 X → 전방참조를 제공하지 않는 언어에서 필요
  1. Programming Language
  • Y
    Yerim
[프로그래밍 언어] 5. Statement-Level Control Structures
명령형 언어 프로그램에서 배정문 만으로 모든 유용한 프로그램 작성은 어려움 제어문을 사용해야한다 → 선택문 / 반복문 선택문 프로그램의 두 개 또는 그 이상의 실행 경로 중 선택 가능한 수단을 제공 2방향 선택문 제어식: then 예약어 혹은 () C89: 산술식이나 제어식 Python, C99: 산술식이나 불리안식 다른 언어: 불리안 식 절형식: 단일 문장 혹은 {복합문} / Python은 들여쓰기 + 콜론 선택자 중첩: else 절이 어느 if와 연관되는가? 다중 선택문 switch-case 임의의 개수의 문장들, 문장 그룹 중 한 개의 선택 식과 상수식: 이산타입 → 문자, 정수, 열거 타입 문장: 복합문, 블록 → C언어에서는 break; 필수 선택적 default 세그먼트 C언어의 경우 유연성 높아 이상한 코드 가능
  1. Programming Language
  • Y
    Yerim
[프로그래밍 언어] 4. Expressions and Assignment Statements
타입 변환 축소 변환 vs 확장 변환 축소 변환: 근사치 값으로조차 저장할 수 없는 타입으로 변환 e.g. double → float 확장 변환: 모든 값들의 근사치를 포함할 수 있는 타입으로 변환 e.g. int → float 명시적 vs 묵시적 명시적 타입 변환: C, Java의 typecast 묵시적(강제적) 타입 변환: 컴파일러에 의해 수행 → Java에서 오류로 탐지하지 않음 혼합형 식: 하나의 연산자 → 서로 다른 타입의 피연산자 → 묵시적 타입 변환 필요 관계식과 불리안 식 관계식: 두 피연산자의 값을 비교 → 결과값은 불리안 (C언어는 수치값) 동등, 비동등 관계 연산자를 사용 (산술연산자보다 낮은 우선순위)→ 언어 마다 다름 불리안: 불리안 변수, 불리안 상수, 관계식, 불리안 연산자 (AND>OR) C언어는 불리안이 없음 → 0이면 거짓 (a>b>c의 경우 두 번째 연산이 진행되지 않음) 단락회로 평가 단락회로: 모든 피연산자와 연산자를 평가하지 않고 결정 비단락회로: 모든 연산자와 피연산자를 비교 배정문
  1. Programming Language
  • Y
    Yerim
[프로그래밍 언어] 3. Data Type
서론 Introduction 데이터 타입 데이터 값들의 모임과 그들 값들에 대한 미리 정의된 연산들의 집합 사용자-정의 타입 user-defined type: C언어에서 typedef를 사용하여 없는 타입 정의 의미 있는 이름을 사용하여 향사된 판독성 제공 프로그램 수정에 도움 제공 추상 데이터 타입 abstract: 사용자-정의 타입에서 발전, 최근 대부분의 언어에서 지원 객체 object: 사용자-정의 추상 데이터 타입의 인스턴스 instance 기본 데이터 타입: 다른 데이터 타입을 이용하여 정의하지 않은 데이터 타입 거의 모든 프로그래밍 언어가 기본 데이터 타입 집합을 제공 어떤 기본 데이터 타입은 하드웨어의 반영 기본 데이터 타입 Primitive Data Types 수치 타입 numeric type 정수 integer 가장 공통된 기본 수치 데이터 타입 Java: 4가지 크기의 부호 정수 제공 → byte, short, int, long C, C++: 비부호 정수도 제공 Python: 하드웨어에 의해 직접 지원되지 않는 정수 타입 제공 명시적 힙 동적 변수로 배열을 계속 키워나간다 긴 정수 타입 long interger type → 제한되지 않는 길이를 가질 수 있음
  1. Programming Language
  • Y
    Yerim
[프로그래밍 언어] 2. Names, Bindings, and Scopes
이름 Names & 5.3 변수 Variables 변수 Variables 컴퓨터 메모리 셀이나 셀들의 모임에 대한 추상화 프로그래머들은 흔히, 변수를 메모리 위치들에 대한 이름으로 생각 변수의 6가지 속성: 이름, 주소, 값, 타입, 수명, 영역 이름 Names 변수의 기본적인 속성 중 하나 식별자 identifier라는 용어와 혼용되어 사용 프로그램에서 어떤 개체를 식별하기 위해 사용되는 문자열 → 문자 중간에 숫자는 괜찮지만 첫 번째로 오는 것은 안된다 이름 형식 언어에 따라 이름의 길이 제한이 존재 (Java, Python은 길이 제한 없음) C언어는 31글자까지 구분 가능 (32번째 글자부터는 달라도 같은 인수로 인식) 많은 언어들은 대소문자를 구분한다 (구분하지 않는 언어도 있음) 표기법 낙타 표기법 Camel Notation 이름이 길어지면 문장을 이름으로 만든다 띄어쓰기를 하면 하나의 변수로 인식 X → 붙여써야 한다. 첫 번쨰 단어를 제외하고 대문자로 시작 → myStack Snake Case: C언어에서 _로 띄어쓰기 구분
  1. Programming Language
  • Y
    Yerim
[프로그래밍 언어] 1. Preliminaries
컴퓨터 구조가 언어 설계에 미친 영향 폰노이만 구조 컴퓨터의 기본 구조는 언어 설계에 매우 강하게 영향을 미쳐왔음 지난 60년 동안 널리 사용된 대부분의 언어는 폰노이만 구조에 기반하여 설계 데이터와 프로그램은 모두 동일한 기억 장소에 저장 명령어를 실행하는 중앙처리장치 (CPU)는 기억 장소로부터 떨어져 있음 명령어와 데이터는 기억 장소로부터 CPU에 전달되어야 하고, CPU의 연산 결과는 다시 기억 장소로 전달되어야 함 명령형 언어 imperative language 폰 노이만 구조에 기반한 언어 주요 특징: 변수, 배정문, 반복문 변수 데이터를 저장하는 공간, 기억장소 셀을 모델링 함수형 언어에는 값을 바꿀 수 있는 변수가 존재하지 않는다 배정문 = 연산자를 사용하여 변수에 값을 저장하는 명령 CPU와 기억장소 간의 데이터 이동 연산 담당 a=10; : 10이라는 값을 a라는 변수가 가리키는 메모리 주소에 넣는다
  1. Programming Language
  • Y
    Yerim
Made with SlashPage