본문 바로가기

정보처리기사/실기

정보처리기사 실기 기출 - 2020년 3회

반응형

- 약술형 -

1. 리팩토링

정답

결과의 변경 없이 코드의 가독성을 높이고, 유지보수를 쉽게 함. 외부 행위는 바꾸지 않고 내부 구조를 개선시키는 것.

 

2. 헝가리안 표기법

정답

프로그램에서 변수와 함수의 이름 앞에 데이터 타입을 명시하는 규칙

 

3. 데이터베이스에서의 스키마

정답

데이터베이스의 구조와 제약조건에 대한 명세를 기술한 것

 

4. UI 설계 원칙 중 직관성

정답

누구나 쉽게 이해하고 사용할 수 있어야 함

 

5. C++에서의 생성자

정답

객체 생성 시 필드와 메서드를 초기화 하는 것

 

6. 형상 통제

정답

버전 관리의 목적으로 변경 사항을 통제하는 활동

 

 

 

- 필답형 -

1. 보기에서 설명하는 용어는?

[보기]

(1) 가장 기본적인 통합 기능으로, 애플리케이션을 1:1로 연결하는 유형. 변경 및 재사용이 어렵다.

(2) 단일 접점인 허브 시스템을 통해 데이터를 전송하는 집중형 방식으로 확장 및 유지보수에 유리함. 허브에 장애 발생 시 시스템 전체에 영향을 줌

정답

(1) Point to Point

(2) Hub & Spoke

 

2. 보기에서 설명하는 용어는?

[보기]

규모가 크고 복잡한 TCP/IP 네트워크에서 사용하기 위한 계층적 구조를 가진 동적 라우팅 프로토콜. 링크 상태 라우팅 프로토콜로도 불린다.

정답

OSPF

 

3. 보기에서 설명하는 것은?

[보기]

심리학자 톰 마릴은 컴퓨터가 메시지를 전달하고, 메시지가 제대로 도착했는지 확인하며, 도착하지 않았을 경우 메시지가 재전송되는 일련의 방법을 가리켜 '기술적 은어'라는 뜻으로 (  )라고 불렀다.

정답

프로토콜

 

4. 보기에서 설명하는 것은?

[보기]

TCP/IP에서 신뢰성 없는 IP를 대신하여 송신 측으로 네트워크 IP상태 및 에러 메시지를 전달해주는 프로토콜.

정답

ICMP

 

5. 분기 커버리지 과정의 순서를 나열하시오

정답

1234567 or 124561

 

6. 보기에서 설명하는 것은?

[보기]

두 개의 릴레이션 A와 B가 있을 때 B의 릴레이션에서 모든 조건을 만족하는 경우의 튜플들을 릴레이션 A에서 분리하여 프로젝션 하는 연산자의 기호.

정답

%

 

 

 

- DB -

1. 빈칸을 채우시오

[조건]

학생 테이블에 최대 20문자로 구성되는 주소 속성을 추가하는 SQL문을 작성

( 1 ) TABLE 학생 ( 2 ) 주소 VARCHAR(20)

정답

(1) : ALTER, (2) : ADD

 

 

2. 다음 조건의 쿼리문 작성

성적 테이블에서 과목별 점수의 평균이 90점 이상인 과목의 이름, 최소 점수, 최대 점수를 출력

[조건]

(1) WHERE 구문 사용 금지

(2) GROUP BY, HAVING, AS 사용

정답

SELECT 과목이름, min(점수) as 최소점수, max(점수) as 최대점수 FROM 성적 GROUP BY 과목이름 HAVING avg(점수) >= 90;

 

해설

- SELECT를 이용해 원하는 컬럼을 추출한다.

- min(점수)를 이용해 점수 컬럼의 최소 점수를 출력한다.

- as 최소점수를 이용해 출력한 최소 점수를 view에서 최소점수라는 이름의 컬럼에 집어넣는다.

- FROM을 이용해 데이터 추출을 원하는 테이블을 선택한다.

- GROUP BY를 이용해 추출한 값들을 그룹으로 묶어준다. 집계함수(avg, min, max 등)와 함께 사용됨.

- avg(점수)를 이용해 평균을 구한다.

- HAVING을 이용해 그룹에 조건을 부여한다. 여기서는 avg()로 구한 값이 90 이상인 조건을 부여한다.

 

3. 다음 조건의 쿼리문 작성

학생 테이블에서 이름이 민수인 튜플을 삭제

정답

DELETE FROM 학생 WHERE 이름='민수';

 

 

 

- 프로그래밍 -

1. C

#include <stdio.h>

void main() {
	int c=0;
    int i=0;
    while (i<10)
    	i++;
        c*=i;
    print("%d", c);
}

정답

0

 

해설

#include <stdio.h>

void main() {
	int c=0;
    int i=0;
    // i가 9가 될때까지 명령문 반복
    while (i<10)
    	// i에 1을 더한다
    	i++;
        // c=c*i
        c*=i;
	// c를 출력
    print("%d", c);
}

- c는 c에 i를 곱한 값 인데, i가 1씩 증가되지만, c가 0이므로 i를 곱해도 c는 계속 0이다

 

 

2. C

#include
int r1() {
	return 4;
}
int r10() {
	return(30+r1());
}
int r100() {
	return(200+r10());
}
int main() {
	printf("%d", r100());
	return 0;
}

정답

234

 

해설

#include
// r1이라는 정수형 함수를 선언
int r1() {
	// 함수 실행 시 4를 반환한다.
	return 4;
}
// r10이라는 정수형 함수를 선언
int r10() {
	// 함수 실행 시 30에 r1의 반환값을 더한 값을 반환한다.
	return(30+r1());
}
// r100이라는 정수형 함수를 선언
int r100() {
	// 함수 실행 시 200에 r10의 반환값을 더한 값을 반환한다.
	return(200+r10());
}

int main() {
	// r100 함수의 반환 값을 출력한다.
	printf("%d", r100());
	return 0;
}

 

 

3. 자바

public class Bebsae {
	public static void main(String[] args) {
		int i=0;
		int sum=0;
		while(i<10) {
			i++;
			if(i%2==1)
				continue;
			sum+=i;
		}
	System.out.println(sum);
	}
}

정답

30

 

해설

public class Bebsae {
	public static void main(String[] args) {
		// 정수형 변수 i를 선언 후 0을 대입
		int i=0;
		// 정수형 변수 sum을 선언 후 0을 대입
		int sum=0;
		// i=9까지 명령문 반복
		while(i<10) {
			// i에 1을 더한다
			i++;
			// 만약 i를 2로 나눈 나머지가 1이라면 아래 명령문 실행
			if(i%2==1)
				// 아무것도 하지않고 while문 재실행
				continue;
			// sum은 sum+i이다
			sum+=i;
		}
	// sum을 출력한다.
	System.out.println(sum);
	}
}

- i=0, 1, 2, 3, 4, 5, 6, 7, 8, 9일때, while문 실행 시 i=1, 2, 3, 4, 5, 6, 7, 8,9, 10이 된다.

- while문 안에서 i=2, 4, 6, 8, 10일때 sum에 더해진다.

- sum은 2, 6, 12, 20, 30이 된다.

 

 

4. 자바

abstact class Vehicle {
	String name;
	abstract public String getName(String val);

	public String getName() {
		return "Vehicle name:" + name;
	}
}

class Car extends Vehicle {
	public Car(String val) {
		name=super.name=val;
	}
	public String getName(String val) {
		return "Car name:" + val;
	}
	public String getName(byte val[]) {
		return "Car name:" + val;
	}
}

public class Test {
	public static void main(String[] args) {
	Vehicle obj = new Car("Spark");
	System.out.println(obj.getName());
	}
}

 

정답

Vehicle name : Spark

해설

// Vehicle이라는 이름의 추상 클래스를 선언함
abstact class Vehicle {

	// 문자형태의 변수 name을 선언
	String name;
    
	// getNames라는 함수를 선언. 매개변수는 문자형태의 변수 val
	abstract public String getName(String val);

	// getName 메소드를 선언
	public String getName() {
    
		// Vehicle name : 이라는 메시지와 name 변수값 반환
		return "Vehicle name : " + name;
	}
}

// Vehicle 클래스를 상속받는 Car 클래스 선언
class Car extends Vehicle {

	// Car 메소드를 선언
	public Car(String val) {
    
		// val 변수의 값을 부모 클래스인 Vehicle의 name 변수에 대입
		// Vehicle의 name 변수에 있는 값을 자식 클래스인 Car의 name 변수에 대입 
		name=super.name=val;
	}
    	
	// getName 메소드를 선언
	public String getName(String val) {
    
		// Car name : 이라는 메시지와 val 변수값 반환
		return "Car name : " + val;
	}
    
	// getName 메소드를 선언
	public String getName(byte val[]) {
    
		// Car name : 이라는 메시지와 val 변수값 반환
		return "Car name : " + val;
	}
}

// Test라는 클래스를 선언함
public class Test {
	public static void main(String[] args) {
    
	// 자료형은 부모 클래스지만 인스턴스 생성 시 하위클래스 생성자로 객체 변수 생성
	// new연산자를 통해 객체 생성 시 생성자 함수 public Car(String val)실행
	Vehicle obj = new Car("Spark");
    
	// obj 객체의 getName()메서드 호출
	// 오버로딩 한다.
	// 메서드 호출 시 매개변수가 없으니, 매개변수 없는 Vehicle 클래스의 getName()메서드 호출
	// Vehicle name : Spark 출력 
	System.out.println(obj.getName());
	}
}

- 오버로딩 : 같은 이름을 가진 함수를 매개변수 유형과 갯수는 다르게 정의하는 것.

반응형