본문 바로가기

s149 데이터 입출력 ~s161 라이브러리 본문

ETC/정보처리기사

s149 데이터 입출력 ~s161 라이브러리

ksoes 2022. 4. 7. 09:19

 

 c 입출력 함수 : scanf, printf

java 입출력함수 : Scanner, nextInt, print, printf, println

 

▶ c언어

함수들을 모아놓은 헤더파일 제공

stdio.h : 표준 입출력과 관련된 함수를 정의해놓은 헤더파일

모든 c 프로그램은 main()가 포함되어야 실행가능

자료형 : int, long, short, float 등

 반드시 ;(세미콜론)으로 문장을 끝내야 함.

  - 줄 수 상관없이 ;이 나올때 까지를 한 문장으로 인식하고 컴파일 함

 scanf()는 데이터를 입력받을 때 주소를 사용, 때문에 " ", 뒤쪽은 &(주소 연산자)를 붙임

 printf() : 화면에 출력
 fprintf(): 파일에 출력

 

 자바

 import java.util.Scanner; -> import 패키지.패키지.클래스;

 클래스 이름 : 첫글자를 대문자

 메소드들을 모아놓은 클래스 -> 클래스를 모아놓은 패키지

 자바는 클래스 안에 속성(변수)과 메소드(함수)를 만들어서 실행

 public class : 실행을 위한 클래스에 그대로 꼭 써야하는 예약어

 Scanner : 클래스 이름
  scanner : 객체변수 명
  new : 객체 생성 예약어
  Scanner() : 생성자
  System.in : 표준 입력장치, 즉 키보드를 의미.

 

▶ 헝가리안 표기법(Hungarian Notation) : 변수명 작성 시 변수의 자료형을 알 수 있도록 자료형을 의미하는 문자를 포함하여 작성하는 방법. ex) int i_inputA, double d_Result

 

▶ 포인터

- 변수의 주소를 포인터 라고 하고, 포인터를 저장할 수 있는 변수를 포인터변수 라고 한다.

int *b = &a // a의 주소값을 포인터변수 b가 가리키도록 한다.
*b = *b + 20; // b가 가리키고있는곳의 값에 20을 더한다

 

문제

include <stdio.h>
main() {
	char *p = "KOREA"; // 문자열을 저장하는 경우, 끝을 의미하는 널문자(\0)가 저장되지만 출력되지 않는다.
    printf("%s\n", p); // p -> 주소라고 생각하자(*가 없을때)
    printf("%s\n", p+3); // p+3의 위치부터 문자열 출력! %s이니까
    printf("%c\n", *p); // *는 주소의 값을 가져온다 생각하자.
    printf("%c\n", *(p+3)); // p+3의 위치의 값을 가져온다 생각하자
    printf("%c\n", *p+2); // *p이므로 주소의 '값'이므로 값인 K의 다다음 문자인 M을 뜻한다
	/*
    정답
    KOREA
    EA
    K
    E
    M
    */
}

 

 

s153

▶ JAVA의 클래스

 클래스 : 객체 생성을 위한 필드(속성)와 메소드(함수)를 정의하는 설계도

  - 객체를 생성할 때 사용하는 연산자 new

 ClassA cal = new ClassA();
클래스 객체변수 = 객체생성예약어 생성자;

 생성자 : 객체 변수 생성에 사용되는 메소드, 객체변수를 생성하면서 초기화를 수행한다.
클래스와 동일한 이름의 메소드를 생성자라고 하는데, 해당 클래스의 객체변수 생성 시 자동으로 실행이 된다

 상속

  - 오버라이딩(메소드 재정의) : 상위 클래스가 가지고 있는 메소드하위 클래스에서 재정의하여 사용

  - 오버라이딩 할 경우, 부모와 자식 클래스 간에 똑같은 함수ex)void prn()이 메인에서 호출되었을 경우 자식클래스에서 재정의한 함수를 사용한다!!

  - 오버로딩 : 같은 이름의 메서드를 여러개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술

  - super : 상속한 부모 클래스를 가리키는 예약어

  - this : 현재 실행중인 메소드가 속한 클래스를 가리키는 예약어

 

문제

import java.util.Scanner;
public class Test {
	public static void main(String args[]) {
    	int i;
        Scanner s = new Scanner(System.in);
        System.out.print("숫자를 입력하시오: ");
        i = s.nextInt();
        recursive(i);
        s.close();
    }
    static int recursive(int n) {
    	int i;
        if (n<1)
        	return 2;
        else {
        	i = (2 * recursive(n-1)) + 1;
            System.out.println(i); // i값 출력 후 
            return i; // i값 반환!
        }
    }
}

간략 풀이 :

n=5, (2*r(4))+1,  95 -> 9)출력 10)반환

n=4, (2*r(3))+1,  47 -> 7)출력 8)반환(i에 47담겨 r(4)로반환)

n=3, (2*r(2))+1,  23 -> 5)출력 6)반환(i에 23담겨 r(3)로반환)

n=2, (2*r(1))+1,  11 -> 3)출력 4)반환(i에 11담겨 r(2)로반환)

n=1, (2*r(0))+1,  5 -> 1)출력 2)반환(i에 5담겨 r(1)로반환)

n=0, 2

그렇기 때문에 정답은

5

11

23

47

95

 

▶ JAVA의 활용

 추상 메소드 : 자식 클래스에서 재정의해야만 사용할 수 있는 메소드,

 추상 클래스 : 추상 메소드를 하나 이상 포함하는 클래스 ( new로 객체생성이 불가능하다, 자식클래스에서 상속으로 추상메소드를 재정의해야 객체변수의 생성이 가능하다)

 클래스의 형 변환 : 부모 클래스의 객체 변수를 선언할 때 자식 클래스의 생성자를 이용하는 것

    - 부모클래스의 구조를 가지면서 자식클래스의 속성이나 메소드로 재정의하고 싶을 때 사용하는 기법이다.

    - 만약 부모 클래스의 구조를 가질 이유가 없다면, 그냥 부모클래스를 상속하고 있는 자식클래스의 구조로 객체변수를 만들어 사용하면 됨. ex) Chicken a = new Chicken(),

    - 형변환 ex) Animal a = new Chicken();

    - [부모클래스 명] [객체변수 명] = new [자식클래스 생성자()];

    - 이렇게 형변환이 발생했을 때, 부모클래스와 자식클래스에 동일한 속성이나 메소드가 있으면 자식클래스의 속성이나 메소드로 재정의된다.

 

▶ Python의 활용

 객체지향 기능을 지원하는 스크립트 언어

 a = [*, 'abc123' , 'def789' *]

 a[1][-3:] = 1번째 인자, 인덱스 -3번부터 끝까지. = 123

 a[2][:-3] = 2번째 인자, 인덱스 0번부터 -3번까지 = def

 set형식의 add()와 update()는 기존에 존재하는 요소는 냅두고 새로운 요소만 추가한다. 중복된 요소는 저장되지 않는다는 특징이 있다. 그리고 순서가 정해지지 않는 자료형이다.

 리스트 관련 주요 메소드

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

    - index(값) : '값'이 저장된 위치(인덱스)를 반환

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

    - reverse() : 역순으로 뒤집는다

    - sort() : 정렬한다 기본값은 오름차순. reverse 속성 True:내림차순, False:오름차순

    - copy() : 리스트를 복사한다.

(+ copy()를 사용하지 않고 '새로운 리스트' = '기존 리스트' 형식으로 리스트를 복사하면 두 개의 리스트가 같은 메모리공간을 가리키게 되므로, 어느 한 리스트를 수정하면 두 개의 리스트가 모두 수정된다. 그러므로, 새로운 리스트를 복사생성하려면 copy()함수를 사용해야 한다.)

  - 세트 관련 주요 메소드

    - pop() : 무작위로 한 개의 인수가 삭제된다

    - add(값) : 세트에 값을 추가한다

    - upate(세트) : 새로운 '세트'를 추가하여 확장한다

    - remove(값) : 세트에서 해당 '값'을 찾아 요소를 삭제한다

 

▶ 절차적 프로그래밍 언어

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

 프로그램이 실행되는 절차를 중요시

 데이터를 중심으로 프로시저를 구현하며, 프로그램 전체가 유기적으로 연결되어 있음

 프로시저 : 특정 로직을 처리

 종류 : C, ALGOL, COBOL, FORTRAN

 

▶ 객체지향 프로그래밍 언어

 현실세계의 개체를 기계의 부품처럼 하니의 객체로 만들어 조립해서 제품을 만들듯이, 소프트웨어를 개발할 때도 객체들을 조립해서 프로그램을 작성하는 기법

 프로시저보다는 명령과 데이터로 구성된 객체를 중심으로 하는 프로그래밍 기법

 종류

  - JAVA : 분산 네트워크 환경에 적용이 가능, 멀티스레드 기능을 제공!, 운영체제 및 하드웨어에 독립적

  - C++, SMALTALK

 

▶ 스크립트 언어(Script Language)

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

 기계어로 컴파일 되지 않고 별도의 번역기가 소스를 분석하여 동작

 스크립트 언어의 분류

 서버용 스크립트 언어

    - 서버에서 해석되어 실행된 후, 결과만 클라이언트로 보낸다

    - ASP, JSP, PHP, 파이썬

 클라이언트용 스크립트 언어

    - 클라이언트의 웹 브라우저에서 해석되어 실행됨

    - 자바스크립트, VB스크립트

    - 스크립트 언어의 종류 : 자바스크립트, VB스크립트, ASP(Active Server Page), JSP(Java Server Page), PHP,

    - 파이썬 (객체지향 기능을 지원, 대화형 인터프리터 언어(인터프리터 언어 : 원시프로그램을 줄 단위로 번역해서 바로 실행해주는 언어, 목적프로그램을 생성하지 않고, 바로 결과를 출력한다.))

    - 쉘 스크립트, BASIC

 

▶ 선언형 언어

 프로그램이 수행해야 할 문제를 기술하는 언어

 분류

  - 함수형 언어 (수학적 함수를 조합하여 문제를 해결, 재귀호출이 자주 이용됨) : LISP

  - 논리형 언어 (기호 논리학에 기반을 둔 언어, 반복문이나 선택문을 사용하지 X) : PROLOG

  - 선언형 언어의 종류 : HTML, LISP, PROLOG, XML, Haskell

 

▶ 명령형 언어

 문제를 해결하기 위한 방법을 기술하는 언어

 폰노이만 구조에 개념적인 기초를 두고 있다

 명령형 언어에는 절차적 언어와 객체지향 언어가 있다

 종류 : FORTRAN, COBOL, C, Java

 

▶ 라이브러리

 라이브러리, 자주 사용하는 함수나 데이터들을 미리 모아놓은 집합체

 분류

  - 표준 라이브러리 : 기본적으로  포함되어있는 라이브러리, 여러종류의 모듈이나 패키지 형태임

  - 외부 라이브러리 : 개발자들이 필요한 기능들을 만들어 공유해놓은 라이브러리, 외부 라이브러리를 다운받아 설치한 후 사용함

  - c언어는 라이브러리를 헤더파일로 제공 : stdio.h, math.h, string.h, stdlib.h, time.h

  - java는 라이브러리를 패키지에 포함하여 제공 

  • import문을 이용해 선언한 후 사용
  • 선언된 패키지 안에 있는 클래스의 메소드를 사용할 때는, 클래스와 메소드를 마침표(.)로 구분하여 'Math.abs()'와 같이 사용한다
  • java.lang, java.util, java.io, java.net, java.awt
  • python의 대표적인 표준 라이브러리
    • python은 표준 라이브러리라는 하나의 패키지만 존재한다. 그러므로 라이브러리를 사용할 때는 패키지가 아닌 각 클래스를 호출하여 사용
    • 내장 함수
      • python의 기본적인 인터페이스로, import문이나 클래스명 없이도 사용할 수 있음
      • abs(), slice(), pow(), print() 등
    • os
      • 운영체제와 상호작용 하기 위한 기능을 제공
      • getcwd(), chdir(), system() 등
    • re
      • 고급 문자열 처리를 위한 기능을 제공
      • findall(), sub() 등
    • math
      • 복잡한 수학 연산을 위한 기능을 제공
      • cos(), log() 등
    • random
      • 무작위 선택을 위한 기능을 제공
      • choice(), sample(), random(), randrange() 등
    • statistics
      • 통계값 산출을 위한 기능을 제공
      • mean(), median(), variance() 등
    • datetime
      • 날짜와 시간 조작을 위한 기능을 제공
      • today(), date(), strftime() 등

▶ 예외처리

  • 예외처리는 예외가 발생했을 때, 프로그래머가 해당 문제에 대비해 작성해놓은 처리 루틴이 수행되도록 하는 것
  • 예외란, 프로그램의 정상적인 실행을 방해하는 조건이나 상태를 말함.
  • JAVA는 예외를 객체로 취급하며, 예외와 관련된 클래스를 java.lang 패키지에서 제공한다.
  • try ~ catch ~finally 문
  • 주요 예외 객체 목록
    •  

 

 

 

 

 

 

'ETC > 정보처리기사' 카테고리의 다른 글

정보처리기사 실기 요약본 블로그링크  (0) 2022.04.28
Comments