본문 바로가기
자격증/정보처리기사

[정보처리기사 실기] 프로그래밍 언어 활용 정리

by char_lie 2023. 4. 20.
반응형

자격증 준비하면서 내가 이해하기 편하게, 다시 보기 좋게 정리하는 정보처리기사의 내용 (자격증 상세 내용은 아래)

http://www.q-net.or.kr/crf005.do?id=crf00505&gSite=Q&gId=

 

http://www.q-net.or.kr/crf005.do?gId=&gSite=Q&id=crf00505

 

www.q-net.or.kr

프로그래밍 언어 활용 부분을 정리한 것


데이터 입출력

// C언어 입출력
# include <stdio.h>
main(){
	int i, j, k;
	scanf("%d %d", &i, &j);
	k = i + j;
	printf("%d\\n",k);
}
// java 입출력
import java.util.Scanner;
public class Test
{
	public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		int a = scan.nextInt();
		System.out.printf("a*3 = %d\\n", a*3);
		System.out.println("a/2 =" + (a/2));
		System.out.print("a-1=" + (a-1));
		scan.close();
	}
}

주요 자료형

  • 정수형(int) : 4Byte (C언어) , 4Byte(Java)
  • 문자형(char) : 1Byte (C언어), 2Byte(Java)
  • 실수형 (float) : 4Byte (C언어), 4Byte(Java)
  • 실수형 (double) : 8Byte (C언어), 8Byte(Java)

주요 서식 문자열

  • %d : 정수형 10진수의 입출력에 사용
  • %o : 정수형 8진수의 입출력에 사용
  • %x : 정수형 16진수의 입출력에 사용
  • %c : 문자의 입출력에 사용
  • %s : 문자열의 입출력에 사용
  • %f : 소수점을 포함한 실수의 입출력에 사용

주요 제어문자

  • \n :커서를 다음줄의 처음으로 이동
  • \t : 커서를 일정 간격으로 띄움
  • \0 : 널 문자 출력

연산자 우선순위

  • 단항 연산자 : !, ~, ++, --, sizeof
  • 산술 연산자 : * / %, + -
  • 시프트 연산자 : << >>
  • 관계 연산자 : < <= >= >, == !=
  • 비트 연산자 : & ^ |
  • 논리 연산자 : && ||
  • 조건 연산자 : ?
  • 대입 연산자 : = += -= *- /= %= <<= >>=
  • 순서 연산자 : .
반응형

제어문

// C 언어 제어문
#include <stdio.h>
main(){
	int score[] = {86, 53, 95, 76, 61}; // 정수형 배열
	char grade;
	char str[] = "Rank";
	for (int i = 0; i < 5 ; i++) {
		switch(score[i] / 10) {
		case 10:
		case 9:
			grade = 'A';
			break;
		case 8;
			grade = 'B';
			break;
		case 7;
			grade = 'C';
			break;
		default:
			grade = 'F';
		}
	if (grade != 'F')
		printf("%d is %c %s\\n", i+1, grade, str);
	}
}
// Java 제어문
public class Test{
	public static void main(String[] args){
		String str = "agile";
		int x[] = {1, 2, 3, 4, 5};
		char y[] = new char[5];
		int i = 0;
		while (i < str.length()){
			y[i] = str.charAt(i); // str의 i번째에 있는 문자 저장
			i++;
		}
		for (int p : x){
			i--;
			System.out.print(y[i]);
			System.out.print(p + " ");
		}
	}
}

포인터

// C언어 포인터
#include<stdio.h>
main() {
	int a = 50;
	int *b = &a; // 포인터 변수 b를 선언하고 a의 주소로 초기화
	*b = *b + 20; // b가 가리키는 곳의 값에 20을 더함(a값도 변화)
	printf("%d, %d\\n", a, *b); // 70 70
	char *s;
	s = "banana"
	for (int i = 0; i < 6; i += 2) {
		printf("%c, ", s[i]);
		printf("%c, ", *(s+i));
		printf("%s\\n", s+i);
	}
}

구조체

// C언어 구조체
# incldue <stdio.h>
struct jsu{ // 구조체 정의
	char nae[12]; // 12개 요소를 갖는 문자열
	int os, db, hab, hhab; // 정수형 변수 선언
};

int main() {
	struct jsu st[3] = {{"데이터1",55,66}, {"데이터2",65,76}, {"데이터3",75,86}};
	// char nae[12]에 "데이터x\\0", os, db에 각각 숫자 저장
	struct jsu* p;
	p = &st[0];
	(p+1) -> hab = (p+1) -> os + (p+2) -> db; // &s[1]의 hab에 65 +86 = 151
	(p+1) -> hhab = (p+1) -> hab + p -> os + p ->db; // &s[1]의 hhab에 151+55+66 = 272 
	printf("%d", (p +1) ->hab + (p+1) -> hhab); // 272 + 151 = 423
}

사용자 정의 함수

// C언어 사용자 정의 함수
# include <stdio.h>
int factorial(int n);

main() {
	int (*pf) (int);
	pf = factorial;
	printf("%d", pf(3));
}

int factorial (int n) { // factorial 재귀함수
	if (n <= 1)
		return 1;
	else
		return n * factorial(n-1);
}

Java 클래스

// Java Class 예시 1
class ClassA{
	int a = 10;
	int funcAdd(int x, int y){
		return x + y + a;
	}
}
public class Test {
	public static void main(String[] args) {
		int x = 3, y =6, r;
		ClassA cal = new ClassA();
		r = cal.funcAdd(x,y); // x+y = 9 + a = 19
		System.out.print(r);
	}
}
// Java Class 예시 2
class ClassA {
	ClassA() {
		System.out.print('A');
		this.prn(); // 자신이 속한 ClassA 클래스의 prn() 메서드 호출
	}
	void prn() { // ClassB에서 재정의 됐으므로 동작하지 않음
		System.out.print('B');
	}
}
class ClassB extends ClassA{ // ClassB 를 클래스로 정의하고 부모 클래스로 ClassA를 지정
	ClassB(){
		super(); // 부모 클래스의 생성자 호출 -> A 출력
		System.out.print('D'); // D출력
	}
	void prn(){  
		System.out.print('E'); // E출력
	}
	void prn(int x) { // x값 출력
		System.out.print(x);
	}
}
public class Test {
	public static void main(String[] args){
		int x = 7;
		ClassB cal = new ClassB(); // Class B 실행
		cal.prn(x);
	}
} // ADE7 출력

Java 활용

// Java 활용
abstract class Animal {
	String a = "is animal"; 
	abstract void look();
	void show() {
		System.out.println("zoo");
	}
}
class Chicken extends Aniaml{
	Chicken() { // 동작
		look(); // look 동작
	}
	void look() {
		System.out.println("Chicken" + a); // Chicken is animal 출력
	}
	void display() {
		System.out.println("two wings");
	}
}
public class Test{
	public static void main(String[] args) {
		Animal a = new Chicken(); // Chicken Class 동작
		a.show(); // zoo 출력
	}
}

Python의 활용

  • 객체지향 기능을 지원하는 스크립트 언어
# Python 예시
x = input()
a = ['123abc', '456def', '789ghi']
a.append(x)
a.remove('456def')
print(a[1][-3:], a[2][:-3], sep =', ') # 789, xyz
for i in range(3, 6):
	print(i, end= ' ') # 3 4 5
# Python 예시2
a = {'apple', 'lemon', 'banana'}
a.update( {'kiwi', 'banana'})
a.remove('lemon')
a.add('apple')
for i in a :
	print(i) # apple \\n banana \\n kiwi

절차지향 프로그래밍 언어

  • 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술하는 언어
  • C
    • 1972년 미국 벨 연구소의 데니스 리치에 의해 개발
    • 시스템 프로그래밍 언어로 널리 사용
    • 고급 프로그래밍 언어이면서 저급 프로그램 언어의 특징을 모두 가짐
    • 이식성이 좋아 컴퓨터 기종에 관계없이 프로그램 작성 가능
  • ALGOL
    • 수치 계산이나 논리 연산을 위한 과학 기술 계산용 언어
    • PASCAL과 C언어의 모체
  • COBOL
    • 사무 처리용 언어로 영어 문장 형식으로 구성되어 있어 이해와 사용이 쉬움
    • 4개의 DIVISION으로 구성
  • FORTRAN 등이 있음
    • 과학 기술 계산용 언어
    • 수학과 공학 분야의 공식이나 수식과 같은 형태로 프로그래밍할 수 있음

객체지향 프로그래밍 언어

  • 현실 세계의 개체를 하나의 객체로 만들어 객체들을 조립해서 프로그램을 작성하는 기법
  • JAVA
    • 분산 네트워크 환경에 적용이 가능
    • 멀티스레드 기능을 제공하므로 여러 작업을 동시에 처리 가능
    • 운영체제 및 하드웨어에 독립적이며 이식성 강함
  • C++
    • C 언어에 객체지향 개념을 적용한 언어
    • 모든 문제를 객체로 모델링하여 표현
  • Smalltalk 등이 있음
    • 1세대 객체지향 프로그래밍 언어로, 순수한 객체지향 프로그래밍 언어
    • 최초로 GUI를 제공

스크립트 언어

  • HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 언어
  • 서버용 스크립트 언어 : 서버에서 해석되어 실행된 후 결과만 클라이언트로 보냄
  • 클라이언트용 스크립트 언어 : 클라이언트의 웹 브라우저에서 해석되어 실행

스크립트 언어 종류

  • 자바 스크립트
    • 웹 페이지의 동작을 제어하는 데 사용되는 클라이언트용 스크립트 언어
    • 클래스가 존재하지 않으며 변수 선언도 필요 없음
    • 서버에서 데이터를 전송할 때 아이디, 비밀번호, 수량 등의 입력 사항을 확인하기 위한 용도로 많이 사용
  • VB 스크립트
    • 마이크로소프트 사에서 자바 스크립트에 대응하기 위해 제작한 언어
    • Acitve X를 사용하여 마이크로소프트 사의 애플리케이션들을 컨트롤할 수 있음
  • ASP
    • 서버 측에서 동적으로 수행되는 페이지를 만들기 위한 언어
    • 마이크로소프트 사에서 제작하였음
  • JSP
    • Java로 만들어진 서버용 스크립트 언어
    • 다양한 운영체제에서 사용 가능함
  • PHP
    • Linus, Unix, Windows 운영체제에서 사용 가능한 서버용 스크립트 언어
    • C, Java 등과 문법이 유사하므로 배우기 쉬워 웹 페이지 제작에 많이 사용됨
  • 파이썬(Python)
    • 객체지향 기능을 지원하는 대화형 인터프리터 언어
    • 플랫폼에 독립적이고 문법이 간단하여 배우기 쉬움
  • 쉘 스크립트
    • 유닉스/리눅스 계열의 쉘(Shell)에서 사용되는 명령어들의 조합으로 구성된 스크립트 언어
    • 쉘 스크립트에서 사용되는 제어문
    • 선택형 : if, case, 반복형 : for, while, until
  • Basic
    • 절차지향 기능을 지원하는 대화형 인터프리터 언어
    • 초보자도 쉽게 사용할 수 있는 문법 구조를 가짐

선언형 언어

  • 프로그램이 수행해야 할 문제를 기술하는 언어
  • 함수형 언어
    • 수학적 함수를 조합하여 문제를 해결하는 언어
    • 알려진 값을 함수에 적용하는 것을 기반으로 함
    • 재귀호출 자주 사용
  • 논리형 언어
    • 기호 논리학에 기반을 둔 언어
    • 논리 문장을 이용하여 프로그램을 표현하고 계산을 수행함
    • 반복문이나 선택문을 사용하지 않음

명령형 언어

  • 문제를 해결하기 위한 방법을 기술하는 언어
  • HTML
    • 인터넷의 표준 문서인 하이퍼텍스트 문서를 만들기 위해 사용하는 언어
    • 특별한 데이터 타입이 없는 단순한 텍스트이므로 호환성이 좋고 사용이 편리함
  • LISP
    • 인공지능 분야에 사용되는 언어
    • 기본 자료 구조가 연결 리스트 구조임
    • 재귀 호출을 많이 사용
  • PROLOG
    • 논리학을 기초로 한 고급 언어
    • 인공 지능 분야에서의 논리적인 추론이나 리스트 처리 등에 주로 사용
  • XML
    • 기존 HTML의 단점을 보완하여 웹에서 구조화된 폭넓고 다양한 문서들을 상호 교환할 수 있도록 설계된 언어
    • HTML에 사용자가 새로운 태그를 정의할 수 있음
    • 문서의 내용과 이를 표현하는 방식이 독립적임
  • Haskell
    • 함수형 프로그래밍 언어로 부작용이 없음
    • 코드가 간결하고 에러 발생 가능성 낮음

라이브러리

  • 자주 사용하는 함수나 데이터들을 미리 만들어 모아 놓은 집합체
  • 표준 라이브러리
    • 프로그래밍 언어에 기본적으로 포함되어 있는 라이브러리
    • 여러 종류의 모듈이나 패키지 형태
  • 외부 라이브러리
    • 개발자들이 필요한 기능들을 만들어 인터넷 등에 공유해 놓은 라이브러리
    • 외부 라이브러리를 다운받아 설치한 후 사용함

C언어 표준 라이브러리

  • stdio.h : 데이터의 입출력에 사용되는 기능들을 제공 (printf, scanf, fprintf, fscanf, fclose, fopen 등)
  • math.h : 수학 함수들을 제공 (sqrt, pow, abs 등)
  • string.h : 문자열 처리에 사용되는 기능들을 제공 (strlen, strcpy, strcmp 등)
  • stdib.h : 자료형 변환, 난수 발생, 메모리 할당에 사용되는 기능들을 제공함 (atoi, atof, srand, rand, malloc, free 등)
  • lime.h : 시간 처리에 사용되는 기능들을 제공 (time, clock 등)

Java 표준 라이브러리

  • java.lang
    • 자바에 기본적으로 필요한 인터페이스, 자료형, 예외 처리 등에 관련된 기능을 제공함
    • import문 없이도 사용할 수 있음
    • String, System, Process, Runtime, Math, Error 등
  • java.util
    • 날짜 처리, 난수 발생, 복잡한 문자열처리 등에 관련된 기능을 제공
    • Data, Calender, Random, StringTokenizer 등
  • java.io
    • 파일 입출력과 관련된 기능 및 프로토콜을 제공
    • inputStream, OutputStream, Reader, Writer 등
  • java.net
    • 네트워크와 관련된 기능 제공
    • Socket, URL, inetAddress 등
  • java.awt
    • 사용자 인터페이스와 관련된 기능을 제공
    • Frame, Panel, Dialog, Button, Checobox 등

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()

뒤로 이어지는 내용

https://edder773.tistory.com/207

 

[정보처리기사 실기] 운영체제, 페이지 기법 및 환경변수 명령어 정리

자격증 준비하면서 내가 이해하기 편하게, 다시 보기 좋게 정리하는 정보처리기사의 내용 (자격증 상세 내용은 아래) http://www.q-net.or.kr/crf005.do?id=crf00505&gSite=Q&gId= http://www.q-net.or.kr/crf005.do?gId=&gSit

edder773.tistory.com

 

반응형

댓글