정보처리기사 실기 2021년 3회-2 정리

DSeung·2022년 4월 25일
0

정보처리기사

목록 보기
2/18

11. 다음 Java 코드에 대한 알맞는 출력값을 쓰시오.

public class testco {
 public static void main(String[] args) {
  int a = 3, b = 4, c = 3, d = 5;
  if((a == 2 | a == c) & !(c > d) & (1 == b ^ c != d)) {
   a = b + c;
    if(7 == b ^ c != a) {_
     System.out.println(a);
    } else {_
    System.out.println(b);
    }
  } else {
    a = c + d;
    if(7 == c ^ d != a) {
    System.out.println(a);
    } else {
    System.out.println(d);
    }
  }
 }
}

정답 :

7

해설 :

int a = 3, b = 4, c = 3, d = 5;
1번째 if문 : (a == 2 | a == c) & !(c > d) & (1 == b ^ c != d)
   = (false | true)  & !(false) & (false ^ true)
   = true & true & true 
   = true
2번째 if문 : 7 == b ^ c != a
   = false ^ true
   = true
그렇기에 a가 출력되므로 답은 7이다.

※ 여기서 중요한 점은 연산자의 우선 연산자의 순위로
not 연산자(!) > 사칙연산(+,*,/.-) > 관계 연산자(==, >=, !=) > 비트 연산자(&, ^, |) > 논리 연산자(&&, ||)_ ※


12. 다음 C언어 코드에 대한 알맞는 출력값을 쓰시오.

#include 
int main(){
  int *arr[3];
  int a = 12, b = 24, c = 36;
  arr[0] = &a;
  arr[1] = &b;
  arr[2] = &c;
 
  printf("%dn", *arr[1] + **arr + 1);
}

정답

37

해설

처음 배열포인터를 선엄했습니다.
그리고 배열 포인터에 주소값을 넣어서 값을 매핑했습니다
마지막에 출력에서 *arr[1]을 통해 arr[1] 포인터의 값 24를 가져오고
**arr을 통해 arr 배열의 주소 값의 첫번째 값의 주소가 가르키는 값을 가져왔는데 이는 12로 12+1이 됩니다.
그러면 결국 24+13이 되므로 답은 37입니다.


13. 다음은, 테이블에서 조건값을 실행한 화면이다. 이에 대한 알맞는 결과값을 작성하시오.

정답

4

해설

CROSS JOIN(크로스 조인) : Cartesian Product라고 하며 거의 사용하지 않는 조인으로 엄밀한 의미에서 조인은 아니지만 존재함, 테이블 상호간에 연결될 수 있는 모든 경우의 수를 산출하는 조인

해당 문제에서는 WHERE A.NAME Like B.RULE을 사용하므로써 RULE에 적합한 컬럼만을 출력해냄
s%에는 smith, scoot, %t%에는 smith, scott


14. 다음 파이썬 코드의 알맞는 출력값을 쓰시오

a,b = 100, 200 
print(a==b)

정답

False

해설

이게 왜 문제일까로 고민하며 혹시 0인가 생각했지만 결국은 첫 글자가 대문자인 Boolean 이였다.


15. 다음은 UML의 다이어그램에 대한 설명이다. 어떤 다이어그램에 대한 설명인가?

이 다이어그램은 문제 해결을 위한 도메인 구조를 나타내어 보이지 않는 도메인 안의 개념과 같은 추상적인 개념을 기술하기 위해 나타낸 것이다.
또한 소프트웨어의 설계 혹은 완성된 소프트웨어의 구현 설명을 목적으로 사용할 수 있다. 이 다이어그램은 속성(attribute)과 메서드(method)를 포함한다

정답

클래스 다이어그램

해설

UML 다이어그램 = Unified Modeling Language
소프트웨어 시스템을 개발하는 과정에서 산출물의 명세화, 시각화, 문서화할 때 사용하는 모델링 언어로써 하나의 시스템을 표현하기 위한 표준적인 방법울 제공하기 위해서 만들어 졌다.

구성요소

  • 사물(Things) : 구조, 행위 그룹, 주석 등
  • 관계(Relationships) : 의존 관계, 연관 관계, 일반화 관계 등
  • 다이어그램(Diagrams) : 객체 다이어그램, 크래스 다이어그램, 시퀀스 다이어그램 등

UML 다이어그램의 종류
1. 구조 다이어그램(Structure Diagram)

  • 클래스 다이어그램 (Class Diagram) : 클래스의 속성, 함수, 변수타입들로 구성된 다이어그램
  • 객체 다이어그램(Object Diagram) : 클래스의 인스턴스, 값이 매겨진 행동을 가지고 있는 독립된 객체정보를 표현하는 다이어그램.
  • 패키지 다이어그램(Package Diagram) : UML의 다양한 모델요소를 그룹화한 다이어그램
  • 컴포넌트 다이어그램(Component Diagram) : 컴포넌트끼리의 구조 관계를 표현한 다이어그램
  • 배치 다이어그램(Deployment Diagram) : 소프트웨어, 하드웨어 등을 포함한 시스템의 물리적 구조를 나타내는 다이어그램
  1. 행위 다이어그램(Behavior Diagram)
  • 쓰임새 다이어그램(Use Case Diagram) : 사용자 관점에서 바라본 시스템을 표현한 다이어그램
  • 활동 다이어그램(Activity Diagram) : 여러 활동들을 순차, 병행 방식 등을 수행하는 상황을 표현하는 다이어그램
  • 상태 다이어그램(State Diagram) : 하나의 객체가 다른 객체와의 상호 작용에 따라 어떻게 변화하는지 표현하는 다이어그램
  • 순서 다이어그램(Sequence Diagram) : 여러 대상 간의 상호작용을 시간순서에 따라 표현한 다이어그램
  • 커뮤니케이션 다이어그램(Communication Diagram) : 동작에 참여하는 객체들이 주고받는 메시지를 표현하고, 그 뿐만 아니라 객체 간의 관계까지 표현하는 다이어그램

16. 다음 보기에서 설명하는 객체지향 디자인 패턴은 무엇인가?

부모(상위) 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며, 자식(하위) 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다. 부모(상위) 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다.

정답

팩토리 메소드

해설

Gof(Gang of Four Design Pattern) 디자인 패턴 : 객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴

큰 구분
생성 패턴(Creational Pattern)

  • 객체를 생성하는데 관련된 패턴들
  • 객체가 생성되는 과정의 유연성을 높이고 코드의 유지를 쉽게 함
명칭 특징
팩토리 메소드(Factory Method) 객체를 생성하기 위한 인터페이스를 정의하여 어떤 클래스가 인스턴스화 될 것인지는 서브클래스가 결정
추상 팩토리(Abstract Factory) 서로 연관, 의존하는 객체들의 그룹을 생성하여 추상적으로 표현
빌더(Builder) 분리된 인스턴스(객체)를 건축하듯 조합하여 새 객체를 생성
프로토타입(Prototype) 원본 객체를 복제하는 방법으로 객체를 생성하는 패턴
싱글톤(Singleton) 여러 프로세스가 하나의 객체를 참조하는 방식

구조 패턴(Structual Pattern)

  • 프로그램 구조에 관련된 패턴들
  • 프로그램 내의 자료구조나 인터페이스 구조 등 프로그램의 구조를 설계하는데 활용할 수 있는 패턴들
명칭 특징
어댑터(Adaptor) 클래스들의 호환성이 맞도록 변환해주는 패턴
브리지(Bridge) 서로가 독립적으로 확장할 수 있도록 한 패턴, 기능과 구현을 별도의 클래스에서 구현(다리 놓듯이)
컴포지드(Composite) 단일 객체와 복합 객체를 구분 없이 합성물처럼 다루고자 할 때 사용
데코레이터(Decorator) 객체간의 결합으로 기능을 확장하는 것으로 부가적인 기능 추가를 위해 다른 객체들을 덧붙이는 방식
퍼싸드(Facade) 커다란 코드 부분에 대한 간략화된 인터페이스를 제공함으로써 간단하게 복잡한 명령을 수행 가능
플라이웨이트(Flyweight) 인스턴스를 가능한 한 공유해서 사용해서 메모리 절약
프록시(Proxy) 접근이 어려운 객체와 여기 접근하려는 객체 사이의 인터페이스 역할

행위 패턴(Behavioral Pattern)

  • 반복적으로 사용되는 객체들의 상호작용을 패턴화 해놓은 것들
명칭 특징
책임 연쇄(Chain of Responsibility) 요청을 한 객체가 처리 못하면 다음 객체로 책임이 넘어가는 패턴
커맨드(Command) 요청을 캡슐화하여 재이용하거나 취소할 수 있도록 로그로 남겨두면서 명령어를 하나로 합쳐둔 것
인터프리터(Interpreter) 언어 번역하는 것으로 언어에 문법표현을 정의함, SQL이나 통신 프로토콜에 이용
반복자(Iterator) 같은 명령의 반복이고 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 함
중재자(Mediator) 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의하므로써 객체 사이의 결합도를 줄임
메멘토(Memento) 객체를 특정 시점의 상태로 되돌리는 기능으로 내가 사랑하는 CTRL + Z 기능 개발시 사용
옵저버(Observer) 한 객체의 상태 변화시 상속되어있는 다른 객체들에게 알림, 시스템간에 이벤트를 생성하고 수신시 사용
상태(State) 객체의 상태에 따라 동일한 동작을 다르게 처리할 때 사용
전략(Staregy) 동일한 계열의 알고리즘을 캡슐화하여 상호 교환할 수 있게 함으로써 클라이언트에 영향 없이 알고리즘 변경 가능
탬플릿 메소드(Template Method) 상위 클래스에서 골격 정의, 하위 클래스에서 세부 처리를 구체화함으로써 유지보수를 용이하게 함
방문자(Visitor) 각 클래스들의 데이터 구조에서 처리 기능을 별도의 클래스로 구성하여 각 클래스에서 방문해서 수행가능하게 함

17. 다음 C언어 코드에 대한 알맞는 출력값을 쓰시오.

#include 
 
struct jsu {
  char nae[12];
  int os, db, hab, hhab;
};
 
int main(){
  struct jsu st[3] = {{"데이터1", 95, 88}, 
                    {"데이터2", 84, 91}, 
                    {"데이터3", 86, 75}};
  struct jsu* p;
 
  p = &st[0];
 
  (p + 1)->hab = (p + 1)->os + (p + 2)->db;
  (p + 1)->hhab = (p+1)->hab + p->os + p->db;
 
  printf("%dn", (p+1)->hab + (p+1)->hhab);
}

정답

501

해설

(p + 1)->hab = (p + 1)->os + (p + 2)->db;
=> (p + 1)->hab = 84 + 75 = 159;

(p + 1)->hhab = (p+1)->hab + p->os + p->db;
=> (p + 1)->hhab = 159 + 95 + 88 = 342

(p+1)->hab + (p+1)->hhab
= 159 + 342 = 501


18. 다음은 파일 구조(File Structures)에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 답을 작성하시오.

파일구조는 파일을 구성하는 레코드들이 보조기억장치에 편성되는 방식으로 접근 방식에 따라 방식이 달라진다. 접근 방법중, 레코드들을 키-값 순으로 정렬하여 기록하고, 레코드의 키 항목만을 모은 ( )을 구성하여 편성하는 방식이 있으며, 레코드를 참조할 때는 ( ) 이 가르키는 주소를 사용하여 직접 참조할 수 있다. 파일 구조에는 순차 접근, ( ) 접근, 해싱 접근이 있다.

정답

인덱스(index, 색인)

해설

파일 구조의 종류

순차 파일 : 파일 내의 각 레코드를 물리적인 연속된 위치에 기록한 파일(자기테이프)

  • 장점 : 기억장소의 낭비가 없다, 취급이 용이
  • 단점 : 추가는 용이하지만 삽입, 삭제가 어려우며 순차 처리만 가능

해싱 파일 : 해싱 함수를 이용하여 디스크 내의 물리적인 주소로 직접 저장, 검색하는 파일

  • 장점 : 특정 레코드의 Access가 빠르다, 중간 레코드의 삽입, 삭제가 용이
  • 단점 : 기억장소 낭비가 심함, 물리적 주소를 계산해야 함

인덱스(색인, Index)된 순차파일 : 순차접근을 지원하는 순차파일과 직접 접근 방법을 지원하는 직접 파일을 결합한 형태의 파일이며, 키 값에 따라 정렬된 레코드를 순차적으로 접근하거나 주어진 키 값에 따라 직접 접근하는 방식

  • 장점 : 순차, 직접처리 모두 가능, 삭제,추가 용이
  • 단점 : 직접처리로 기억공간 낭비, 순차처리로 접근기간이 느리다, 재편성의 문제, 고정길이 레코드만 수용

19. 다음 설명에 대한 알맞는 답을 영문약어로 작성하시오.

( )는 사용자가 그래픽을 통해 컴퓨터와 정보를 교환하는 환경을 말한다. 이전까지 사용자 인터페이스는 키보드를 통해 명령어로 작업을 수행시켰지만 ( )에서는 키보드 뿐만 아니라 마우스 등을 이용하여 화면의 메뉴 중 하나를 선택하여 작업을 수행한다.
화면에 아이콘을 띄어 마우스를 이용하여 화면에 있는 아이콘을 클릭하여 작업을 수행하는 방식이다.
대표적으로는 마이크로소프트의 Windows, 애플의 Mac 운영체제 등이 있다.

정답

GUI(Graphical User Interface)

해설

그래픽 사용자 인터페이스는 사용자가 편리하게 사용할 수 있도록 입출력 등의 기능을 알기 쉬운 아이콘 따위의 그래픽으로 나타낸 것


20. 다음은 소프트웨어 통합 테스트에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 답을 작성하시오.

( A ) 방식은 하위 모듈부터 시작하여 상위 모듈로 테스트를 진행하는 방식이며, 이 방식을 사용하기 위해서는 ( B )가 필요하다. ( C )는 이미 존재하는 하위 모듈과 존재하지 않은 상위 모듈에 대한 인터페이스 역할을 한다.

정답

A: 상향식
B: 테스트 드라이버
C: 테스트스텁

해설

목(Mock) 객체
객체지향 프로그램에서는 컴포넌트 테스트 수행시 테스트 되는 메서드가 다른 클래스의 객체에 의존한다.
이런 경우 메서드를 고립화하여 테스트하는 것이 불가능하므로 독립적인 컴포넌트 테스트를 위해서는 스텁의 객체지향 버전인 목 객체가 필요하다

목 객체 유형

  • 더미 객체 : 객체만이 필요하고 해당 객체의 기능까지는 필요하지 않은 경우 사용
  • 테스트 스텁 : 제어 모듈이 호출하는 타 모듈의 기능을 단순하게 실행하는 인터페이스 역할을 수행
  • 테스트 드라이버 : 테스트 대상 하위 모듈을 호출, 파라미터 전달, 모듈 테스트 수행 후 결과 도출
  • 테스트 스파이 : 테스트 대상 클래스와 협력하는 클래스
  • 가짜 객체 : 실제 협력 클래스의 기능을 대체할 경우 사용

통합 테스트의 분류

  • 빅뱅 테스트 : 모든 모듈을 동시에 통합 후 테스트
  • 상향식 테스트-테스트 드라이버
  • 하향식 테스트-테스트 스텁
  • 샌드위치 테스트 : 상향식 + 하향식 테스트, 병렬 테스트 가능
profile
블로그에 글을 쓰고 좋은 건 여기로 공유해서 검색엔진을 쪽쪽 빱니다.

0개의 댓글