아래 글은 뻥이다. 오늘부터 진짜 시작이다. [7과목 - 프로그래밍 언어 1]

2024. 6. 27. 13:29공부*일상

파란 펜 공부법 간다.

 

 

 

7과목 - 프로그래밍 언어
Section 001
알고리즘 표현 방법 및 변수 표기법



[알고리즘 표현 방법]

1. 자연어

2. 의사코드(Pseudo Code)
프로그래밍 언어 형식 모방해서 알고리즘 표현한 코드
실제 프로그래밍 언어로 실행 불가
알고리즘의 논리 구조 명확하게 표현하는 데 사용

3. 순서도(Flow Chart)
기호와 도형을 사용하여 문제 해결의 흐름이나 프로세스를 시각적으로 표현
과정과 정차를 순서대로 나타내며 복잡한 알고리즘을 이해하기 쉽게 도움

4. 나씨 슈나이더만 차트(Nassi-Schneiderman Chart)
구조적 프로그래밍의 순차 , 선택, 반복 구조를 사각형으로 도식화하여 표현하는 기법
특징 : 도형을 이용한 표현 방법, 순차 선택 반복 구조 표현, Goto 구조 표현 어려움, 상자 도표라고도 부름,
순차 처리 구조, 선택 구조, 반복 구조 

5. UML(Unified Modeling Language)
소프트웨어 시스템 구조와 설계를 시각적으로 표현하는 데 사용되는 표준 모델링 언어
다양한 유형의 다이어그램을 통해 복잡한 시스템을 효과적으로 표현 가능

정리 : 자연어, 의사코드(Pseudo Code), 순서도(Flow Chart), 나씨 슈나이더만 차트(Nassi-Schneiderman Chart), UML(Unified Modeling Language)


 

[변수 표기법]

 

1. 카멜 표기법(Camel Case)
여러 단어가 결합되는 경우 첫 단어를 제외하고 각 단어의 첫 글자를 대문자로 표기
주로 메서드나 변수명에 사용
ex) flowChart

2. 파스칼 표기법(Pascal Case)
모든 단어의 첫글자를 대문자로 표기
클래스, 네임스페이스 이름에 주로 사용
ex) FlowChart

3. 스네이크 표기법(Snake Case)
모든 단어를 소문자로 표기하고 단어 사이에 언더바 사용
변수명, 함수명에 사용되며 특히 C언어나 Python 에 선호
ex)flow_chart

4. 헝가리안 표기법
변수 자료형이나 특성을 나타내는 접두사를 붙여 변수의 용도 명시
현재 잘 사용되지 않으나 변수 타입을 쉽게 구분할 수 있게 함
ex) strFlowChart, intCount

5. 케밥 표기법(Kebab Case)
모든 단어를 소문자로 표기하고 단어 사이에 하이픈(-) 사용
웹 개발에서 URL, 파일명, CSS 클래스명에 사용
ex) flow-Chart

정리 : 카멜, 파스칼, 스네이크, 헝가리안, 케밥 표기법

 



[프로그램 언어 특성]

1. 개발 편의성 측면에 따른 분류


(1) 저급 언어(Low-Level Language)
컴퓨터가 직접 이해 가능
실행속도 빠름
호환성 없음(기계마다 기계어 달라서)
유지 관리 어려움

(2) 고급 언어(High-Level Language)
인간이 이해 가능한 소스 코드
실행하려면 저급 언어로 번역해야 함.



2. 실행 및 구현 방식에 따른 분류
명령형 언어(Imperative Language)
컴퓨터가 수행할 절차를 기술 -> 프로그래밍 상태 변경에 중점
FORTRAN, C 등

함수형 언어(Functional Language)
데이터 처리를 수학적 함수 계산으로 취급
상태 변경과 가변 데이터 피함
LISP, Scala 등

논리형 언어(Logic Language)
논리 문장을 사용하여 프로그램 표현
조건 만족 시 연관된 규칙 실행
PROLOG 등

객체지향 언어(Object-Oriented Language)
객체 간 메시지 통신으로 동작
JAVA, C++ 등
(C는 절차지향 C++은 객체지향)

 



3. 빌드(Build) 방식에 따른 분류

 

컴파일 언어(Compile Language)
소스코드를 컴퓨터가 이해할 수 있는 목적 코드(컴퓨터가 수행할 수 있는 코드)로 변환하여 실행
C, C++ 등
(원시 코드는 인간이 만든 것)

인터프리터 언어(Interpreter Language)
소스 코드를 한 줄씩 실행하며 컴퓨터가 이해할 수 있는 언어로 통역
BASIC, Python 등

바이트 코드 언어(Byte Code Language)
컴파일을 통해 가상 머신이 이해할 수 있는 바이트 코드로 변환되고 이후 가상 머신이 기계어로 번역
JAVA, Scala 등

어셈블리 언어(Assembly Language) - 저급 언어
인간이 이해하기 쉬운 형태의 기호를 사용하여 작성됨
어셈블러를 통해 기계어로 변환되는 언어
기계어와 거의 일대일 대응 관계에 있어 하드웨어에 매우 가깝게 작동 -> 저급 언어에 포함되는 이유
하드웨어는 특정적이며 주로 시스템 레벨 또는 하드웨어 제어 프로그래밍에 사용

Unix 는 10%의 어셈블리 언어로 되어있다. 그래서 비쌈;

 

 


2. 절차적 프로그래밍 언어(구조적 프로그래밍, 하향식)

 

(1) 절차적 프로그래밍 언어 개념
일련의 처리 절차를 정해진 문법에 따라 순서대로 기술하는 프로그래밍 언어
Procedure(루틴, 서브루틴, 메서드, 함수)를 사용하여 작성하는 프로그래밍 스타일
순차적인 처리 중시
프로그램 전체가 유기적으로 연결되는 기법
장점 : 함수를 통한 코드 재활용성 증가, 컴퓨터 처리 구조와 유사해서 실행 속도 빠름
단점 : 뭐지?

3. 객체 지향 프로그래밍 언어
(1) 객체 지향 프로그래밍 언어 개념
소프트웨어의 구조를 객체로 만들고 객체들 간의 상호작용으로 소프트웨어 동작시키는 프로그래밍 언어
객체를 적절히 조립하고 연결하여 소프트웨어 구성

장점 : 재사용 및 생상성 향상, 자연적 모델링 가능, 유지보수 용이
단점 : 개발 속도 저하, 실행 속도 느림(많은 것들을 만들어야 해서,,,?), 코딩 난이도 증가

객체지향 구성요소 : 클래스, 속성, 메서드, 객체(인스턴스), 메시지

SOLID

종류
JAVA : 객체지향 프로그래밍 언어의 대표적인 예
시뮬라67(Simula67) : 최초의 객체지향 언어
스몰토크(Smalltalk) : 최초로 GUI 제공한 언어

(2) 특징
캡슐화(Encapsulation)
데이터와 연산을 하나로 묶어 캡슐화
객체 세부 내용은 외부에 은폐되어 오류의 파급 효과 적음
캡슐화된 객체 재사용 용이
get set

정보은닉(Information Hiding)
객체가 자신의 정보를 외부에 숨기고 연산을 통해서만 접근 허용

상속(Inheritance)
상위 클래스의 데이터와 연산을 하위 클래스가 물려받음
extends(클래스가 클래스 물려받을 때)
implements(클래스가 인터페이스를 구현할 때) -> 여기 적는 게 맞나? 확인하기,,

다형성(Polymorphism)
같은 이름의 메서드가 상황에 따라 다르게 동작하는 것
오버로딩 a(), a(x), a(x, y) -> 인자만 다르게
오버라이딩 상속 관계에서만 나타남. 상속 받았을 때 a() 이런 함수를 재정의하는 것

추상화(Abstraction)
불필요한 부분을 생략하고 중요한 부분에만 초점을 맞추어 개략화

 

 


 

4. 스크립트 언어

 

응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어
다른 응용 프로그램에 삽입되어 동작하는 프로그래밍 언어
단독이 아니라 같이 사용되는 언어인 느낌?
보통 다 인터프리터 방식

종류
자바스크립트(JavaScript) : HTML 문서 내에 삽입되어 사용, 동적인 웹 페이지 제작 가능
JSP(JavaServerPages) : HTML 페이지 안에 자바 코드를 직접 삽입하여 웹 서버에서 동적 웹 페이지 생성
HTML : 구조, CSS : 디자인, JS : 동적
PHP : 서버 측 스크립트 언어. HTML 문서 안에서 사용. 리눅스, 아파치 웹 서버, MySQL DB 환경에서 주로 사용
ASP(Active Server Pages) : 마이크로소프트의 윈도우 서버에서 운영되는 웹 프로그래밍 언어. 이제 지원 안 해줘서 사용X
Perl : 유닉스 계열 운영체제에서 사용
Python : 귀도 반 로썸에 의해 개발된 객체 지향 스크립트 언어, 컴파일 과정 불필요, 다양 플랫폼 사용 가능
VBScript : 마이크로소프트 Visual Basic 기반 스크립트 언어


 

5. 선언형 언어

 

프로그램이 수행해야 할 문제를 기술하는 언어
목표는 명시. 알고리즘 불명시
가독성, 재사용성 좋고 오류 발생 가능성 적음

종류
하스켈(Haskell) : 순수 함수형 프로그래밍 언어
SQL(Structured Query Language) : DB 관리를 위한 특수 목적 프로그래밍 언어

'공부*일상' 카테고리의 다른 글

해야해야해야~☀️  (0) 2024.07.04
오늘부터 정처기 실기 공부할 거다.  (1) 2024.06.17