정처기 실기용어 (10장)

모래사우르스
|2024. 10. 16. 16:05

프로그래밍 언어, 스크립트 언어, 라이브러리에 관한 용어들이다.

프로그래밍 언어는 거의 감으로 풀 수 있긴 하지만 헷갈리는 것들.. 그리고 실수하기 좋은 것들을 기록해놓는다.

 

JAVA

System.out.printf("a=%d", a);

System.out.print("a=" + a);

형식의 차이.

 

System.out.println("출력 후 한 줄 띄는 코드");

뒤에 ln인지 아닌지 잘보자..

 

헝가리안 표기법 : 변수명에 자료형을 의미하는 문자를 포함하는 것. ex) int i_age, double d_height

 

%o : 8진수 (octopus는 다리가 8개) (024 이런 식으로 표현.)

%x : 16진수 (0x24 이런 식으로 표현.)

 

8진수, 16진수를 10진수로 바꾸는 방법 : 2진수를 10진수로 바꾸는 거랑 똑같다. 각 자릿수 별로 8의 0승, 8의 1승... 16의 0승, 16의 1승... 을 곱해서 더하면 됨

 

연산자 우선순위

단산시관비논 - 단항(!,~,++,--) / 산술(*,/,%,+,-) / 시프트(<<,>>) / 관계(<,<=,>,>=) / 비트(&,^,|) / 논리(&&,||)

우선순위가 높은것부터 순서대로 나열한 것이다. 괄호 안에서도 마찬가지이다.

특히 & -> ^ -> | (AND -> XOR -> OR)

&&->||

순인 거 꼭 기억하기

 

++a 인지 a++인지 전위증가 후위증가 잘 파악해서 문제 풀기

 

^ : XOR. 둘다 1이거나 둘다 0이면 -> 0

              둘 중 하나가 0이고 나머지 하나는 1이면 -> 1

 

int x[] = {1,2,3}

for(int p : x) <- 반복문이다. x 배열의 요소 수만큼 반복. 즉 이 경우 3번 반복함.

그리고 반복 때마다 x배열의 요소가 p에 저장되는 형식.

1번째 : p = x[0] = 1

2번째 : p = x[1] = 2

3번째 : p = x[2] = 3

이런거임.

 

switch case 문에서 case에 break;가 없다면, 아래 case까지 다 실행된다. (default 포함)

 

5 4 3 2 1을 4 3 2 1 5로 출력하는 방법은? <- %를 이용한다.

정답 : (n[i]-1)%5

 

포인터가 가리키는 곳에 연산을 하면 당연히 원래의 위치, 가리키는 곳의 값이 바뀐다.

 

char *p = "APPLE";

*(p + 3) <- 배열 내에서 3칸 뒤로 간 요소를 가리킴 (L (A, P, P, L이니까))

*p + 3 <- 포인터가 가리키는 문자의 3칸 뒤 문자를 가리킴. (D (A, B, C, D니까))

 

super(); : 부모 클래스의 생성자를 소환.

 

내가 자식 클래스를 실행했는데 super();가 있어서 부모 클래스로 이동했다.

그곳에 this.pp가 있는데 pp()가 부모랑 자식 클래스에 각각 하나씩 총 2개 있는 경우. 자식에서 재정의 되었으므로 자식 쪽 pp를 실행한다. 어쨌든 내가 실행한 건 자식 클래스이기 때문이다.

(this가 아니더라도 어떤 함수를 실행하라고 되어있는데 그게 부모랑 자식에 둘다 있으면, 자식 클래스를 실행한 경우 자식에 있는 걸 하면 된다. super.pp 이런 식으로 되어있으면 자식에 있는 pp 실행 후, 어쨌든 super니까 부모님 뵙고 수행하면 되는거다.)

 

만약 Parent pp = new Child(); 이런식으로 만든다? 어쨌든 Child에 괄호 있지? 그니까 Child 클래스만 보면 된다.

 

string a = "x";

string b = new String("x");

이 경우

System.out.println(a==b); -> False 출력. 다른 주소를 저장하고 있으므로.

System.out.println(a.equals(b)); -> True 출력. 같은 문자열을 저장하고 있으므로.

 

{..

 count(){count++);

..}

Connection c1 = Connection.get();

c1.count();

Connection c2 = Connection.get();

c2.count();

Connection c3 = Connection.get();

c3.count();

System.out.println(c1.getCount());

뭐 이런 식의 문제가 나온다고 치자. 이러면 왠지 c1, c2, c3에 각각 1씩 더해진 거 같지만 아니다. c1 출력 저거 하면 3이 출력된다. 왜인지는 모르겠는데 대충 이런 예제 나오면 그냥 다 각자 따로따로 인거 같지만 다 한 곳에 저장된다고 생각되면 편할 듯.

 

Python

a[x][y:] <- y 이상

a[x][:y] <- y 미만

참고로 [0, 1, 2, ..., -2, -1] 이렇게 생각하면 됨. 은근 헷갈린다.

 

a[x:y:z] <- x 이상, y 미만. z씩 증가. 

 

split(' ') <- 공백으로 구분하여 입력한다는 의미

sep = ',' <- 쉼표(,)로 구분하여 출력한다는 의미

 

파이썬은 기본적으로 출력 시 줄바꿈이 포함된다.

 

세트

a = {a,b,c}

세트는 중복된 요소는 저장되지 않음.

 

pop(n) : 위치 n에 있는 값을 출력하고 해당 요소 삭제

index(x) : x가 저장된 요소의 위치를 반환

count(n) : n이 몇 개 있는지 세서 그 개수를 반환

extend(리스트) : 리스트 끝에 새로운 리스트를 추가하여 확장

reverse() : 역순으로 뒤집기

sort() : 리스트 정렬

copy() : 복사

 

파이썬 세트 출력

alphabet = {'a','b','c','d'}

->> {'a','b','c','d'}

 

파이썬 배열 출력

a = [[1,2,3], [4,5]]

print(a[0]) ->> [1,2,3] 중괄호까지 같이 출력된다.

 

a=1, b=2

print(a==b) ->> False 출력함. c에서는 거짓은 0, 진실은 1 이렇게 나오지만 파이썬은 True랑 False로 출력됨

 

for i in range(x,y)

x이상, y 미만. (파이썬은 다 이상, 미만으로 알면 될듯)

 

음수를 2진수로 바꾸는 방법

1. 0과 1을 바꾼다. ex) -3 이면 3의 2진수 -> 0000 0011 -> 1111 1100

2. 거기다 1을 더한다. ex) 1111 1100 + 1 -> 1111 1101

+ 만약 shift(<< >>)를 할 경우, shift를 한 다음 위의 1,2 과정을 다시 반복한다.

 

반복문 계산 시 주의할 점

반복문 완료 조건에 i<n이 들어가있다고 해서, i를 출력할 때 i가 반드시 n-1이 되는 것이 아니다.

반복문 내부에서 i가 증가했을 수 있다. 이 경우를 잘 보자.

절차적 프로그래밍 언어

일련의 처리 절차를 정해진 문법에 따라 순서대로 기술하는 언어.

씨알코포 - C / 알골 / 코볼 / 포트란

C : 벨 연구소 데니스 리치가 개발. 고급, 저급 언어의 특징을 모두 갖춤.

ALGOL : 과학 기술 계산용 언어. 파스칼과 C의 모체

COBOL : 사무 처리용 언어. 4개의 DIVISION

FORTRAN : 과학 기술 계산용 언어

 

객체지향 프로그래밍 언어

JAVA : 분산 네트워크 환경에 적용 가능. 멀티스레드. 독립적

C++ :  C + 객체지향

Smalltalk : 순수함. 최초로 GUI 제공

 

선언형 프로그래밍 언어

HTML / LISP / XML / Haskell

 

스크립트 언어

HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 언어.

서버용, 클라이언트용으로 나뉜다. (이름에 P가 들어가면 서버용이다.)

자VA JP 파쉘B - 자바 스크립트 / VB 스크립트 / ASP / JSP / PHP / 파이썬 / 쉘 스크립트 / Basic

자바 스크립트 : 웹 페이지의 동작을 제어

VB 스크립트 : Active X로 컨트롤 가능

ASP(Active Sever Page) : 서버 측에서 동적으로 수행되는 페이지를 만들기 위한 언어

JSP(Java Server Page) : JAVA로 만들어진 서버용 스크립트 언어

PHP(Professional Hypertext Preprocessor) : Linux, Unix, Windows에서 사용가능. 웹 페이지 제작에 많이 사용됨.

파이썬 : 객체지향 기능을 지원하는 인터프리터 언어

쉘 스크립트 : 유닉스/리눅스 계열의 쉘에서 사용하되는 명령어들의 조합으로 구성된 스크립트 언어

Basic : 절차지향 기능을 지원하는 인터프리터 언어. 초보자도 쉽게 사용 가능.

 

라이브러리

자주 사용하는 함수나 데이터들을 미리 만들어 놓은 집합체

표준, 외부로 나뉨

 

JAVA의 대표적인 표준 라이브러리 (import로 선언)

java.lang : 기본적인 인터페이스, 자료형, 예외처리 등

java.util : 날짜 처리, 난수 발생

java.net : 네트워크

java.awt : UI

 

Python의 대표적인 표준 라이브러리 (import로 선언)

os : 운영체제

re : 고급 문자열

statistics : 통계값

datetime : 날짜와 시간

 

예외처리

JAVA의 예외처리

try - catch - finally

try는 예외가 발생할 가능성이 있는 코드가 들어간다.

catch 해당 예외의 종류에 따라 catch 내부에 있는 코드가 실행

finally는 예외랑 상관없이 실행되는 코드이다.

 

JAVA의 주요 예외 객체

(그냥 영어를 보고 이게 무슨 뜻인지만 알면 될듯. 굳이 막 외울 필요는 없음)

ClassNotFoundException : 클래스를 찾지 못한 경우

NoSuchMethodException : 메소드를 찾지 못한 경우

FileNotFoundException : 파일을 찾지 못한 경우

interruptedIOException : 입출력 처리가 중단된 경우

ArithmeticException : 0으로 나누는 등 산술 연산에 대한 예외가 발생한 경우

IllegalArgumentException : 잘못된 인자를 전달한 경우

NumberFormatException : 숫자 형식으로 변환할 수 없는 문자열을 숫자 형식으로 변환한 경우

ArrayIndexOutOfBoundsException : 배열의 범위를 벗어난 접근을 시도한 경우

NegativeArraySizeException : 0보다 작은 값으로 배열의 크기를 지정한 경우

NullPointerException : 존재하지 않는 객체를 참조한 경우

 

'TIL > 기타' 카테고리의 다른 글

그냥 신세 한탄  (0) 2024.12.12
정처기 실기 용어정리 (11장)  (0) 2024.10.18
정처기 실기 용어정리 (9장)  (0) 2024.10.15
정처기 실기 용어정리 (8장)  (0) 2024.10.14
정처기 실기 용어정리 (7장)  (0) 2024.10.13