본문 바로가기
정보처리기사/정보처리기사 실기

[정처기 실기] 실무 알고리즘 응용_프로그래밍 언어의 기본

by sjs_2215 2019. 9. 16.

프로그래밍 언어의 기본


출처: 2019 시나공 정보처리기사 실기


c 언어

-> 함수 지향 언어

-> c언어에 내장되어 있는 내장 함수와 사용자가 만들어 사용하는 사용자 정의 함수가 있다.


변수명 작성 규칙

: 예약어는 사용할 수 없다. ex) int for;

: 숫자로 시작할 수 없다. ex) int 1abc;


기본 자료형

: 문자열 변수는 문자열의 끝을 알리기 위해 문자열의 맨 뒤에 항상 널 문자('\0')가 따라 다닌다. ex) char ab[6] ="korea"; 의 크기가 6인 이유

: 단정도 실수는 숫자 뒤에 f를 붙여 배정도 실수와 구분한다. ex) float x = 24.56f

4바이트(32비트) 단정도(Float) 실수형 : 부호부 1비트(bit) + 지수부 8비트(bit) + 가수부 23비트(bit)

8바이트(64비트) 배정도(Double) 실수형 : 부호부 1비트(bit) + 지수부 11비트(bit) + 가수부 52비트(bit)



출처: https://unlimitedpower.tistory.com/entry/DataStructure-고정-소수점-부동-소수점-형식-그리고-e [오늘도 공장은 돌아간다.]

연산자

전치: ++a, --a, 먼저 변수의 값을 증감시킨 후 변수를 연산에 사용한다.

후치: a++, a--, 먼저 변수를 연산에 사용한 후 변수의 값을 증감시킨다.



조건 연산자

조건 ? 수식1 : 수식2

= 조건의 수식이 참이면 수식1을 처리하고, 조건의 수식이 거짓이면 수식2를 처리한다.


반복문

while문: 조건이 참인 동안 정해진 문장을 반복 수행하다가 조건이 거짓이면 반복문을 벗어남.

do-while문: while문과 같은 동작을 하는데, 다른 점은 do~while문은 무조건 한 번 실행한 다음 조건을 판단하여 탈출 여부를 결정

break문: switch문이나 반복문 안에서 break가 나오면 블록을 벗어난다. =반복문 탈출

continue문: continue 직후의 문장들을 실행하지 않고 제어를 반복문의 처음으로 옮긴다.


포인터

포인터 변수: 주소를 저장할 수 있는 변수

*포인터 변수: 해당 포인터 변수가 가리키는 곳의 '값'

포인터 변수에 주소를 저장하기 위해 변수의 주소를 구할 때는 변수 앞에 &를 붙인다.


구조체

= 자료의 종류가 다른 변수의 모임


struct sawon {
    char name[10];
    char jikwi[10];
    int pay;
};

struct sawon ansan, *seoul;
//sawon 자료형으로 변수를 선언하는데 변수의 이름이 ansan
//*seoul은 구조체의 포인터 변수

//구조체 멤버의 지정
ansan.name="sarah";
seoul->name="saraaah";
(*seoul).name="saraahaha";

함수

사용자 정의 함수 예제


#include <stdio.h>

int add(int i, int j){
    return i+j;
}

main() {
    int i=10,j=5,result;

    int (*pf)(int, int);
    pf=add;
    result=pf(i,j);
    printf("%d", result);
}



JAVA


public class Problem
{
    public static void main(String[] args){
        int i=0;
        System.out.println(i);
    }
}

아래에 코드 설명


- JAVA는 아무리 작은 프로그램이라도 클래스 안에 속성(변수)와 메소드(함수)를 만들어서 실행한다.

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

Problem: 클래스 이름으로, 사용자가 원하는 이름을 임의로 지정하면 된다. 

- JAVA는 실행용으로 만든 클래스 안에 반드시 main()메소드가 있어야 여기서부터 실행이 시작된다. 이걸 프로그램 실행 진입점이라고 한다. 

public static: main()메소드 앞에 반드시 써야 한다는 것

void: 리턴 값이 없다는 의미

- JAVA는 프로그램에서 사용될 만한 것은 이미 다 클래스로 만들어져 있다. 이걸 API라고 하며, 사용자는 이것을 잘 골라서 사용하면 된다.

System.out.print(): System 클래스의 서브 클래스인 out클래스의 메소드 print()를 사용해서 출력한다는 의미.

문자열

c언어에서는 문자열을 배열에 넣고 배열의 이름을 이용/포인터 변수를 이용해 처리했지만,

java에서는 '주소를 컨트롤하는 기능이 없기 때문에' 불가능. 하지만, 문자열을 처리할 수 있도록 클래스를 제공한다. 클래스를 제공하므로 당연히 그에 따른 속성과 메소드도 지원한다.

메소드 ex)


//charAt() 메소드는 해당 문자열에서 인수에 해당하는 위치의 문자열을 반환한다.

public class example{
    public static void main(Strings[] args){
        String str ="information";
        string a;
        a=str.charAt(0);
    }
}

클래스와 함수

-클래스 = 객체 생성을 위한 속성과 메소드를 정의하는 설계도


[클래스를 만들어 사용하는 순서]

  1. 클래스 이름을 정하고 객체 생성을 위한 속성과 메소드를 정의 - class
  2. 객체 생성 - new

public class Example {
    static class A {
        int i;
        int j;
    }
    public static void main(String[] args){
    A myVal = new A();
    myVal.i=10;
    myVal.j=20;
    myVal=change(myVal);
    System.out.println(myVal.i +"와"+myVal.j);
}

static A change(A xx){
    int temp;
    temp=xx.i;
    xx.i=xx.j;
    xx.j=temp;
    return xx;
}
}

아래에 코드 설명


- class Example을 정의. 클래스 안에 클래스(class A)를 정의할 때는 static을 붙인다.
- 객체 변수 myVal을 생성
- change(myVal) : 객체 변수 myVal을 인수로 하여 change() 메소드를 호출한다. 객체의 모든 속성이 전달된다. 
- static A change(A xx)
: 실행 클래스(= main() 메소드가 속해있는 클래스를 말한다.) 안에 메소드를 정의할 때는 static을 붙여야 한다. 
: change() 메소드의 인수로 A 클래스의 객체 변수 xx를 받는다. 

Comments