반응형
자격증 준비하면서 내가 이해하기 편하게, 다시 보기 좋게 정리하는 정보처리기사의 내용 (자격증 상세 내용은 아래)
http://www.q-net.or.kr/crf005.do?id=crf00505&gSite=Q&gId=
프로그래밍 언어 활용 부분을 정리한 것
데이터 입출력
// 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
반응형
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 프로토콜 및 IT 신기술 정리 (0) | 2023.04.20 |
---|---|
[정보처리기사 실기] 운영체제, 페이지 기법 및 환경변수 명령어 정리 (0) | 2023.04.20 |
[정보처리기사 실기] 소프트웨어 보안과 공격 종류 정리 (0) | 2023.04.19 |
[정보처리기사 실기] 프로시저, 트리거 및 ORM 정리 (0) | 2023.04.18 |
[정보처리기사 실기] DDL, DCL, DML 정리 (0) | 2023.04.18 |
댓글