본문 바로가기

자격증/정보처리기사 - 필기

프로그래밍 언어 활용 - 프로그래밍 언어 활용

728x90

변수

< 작성 규칙 >

● 영문자, 숫자, _ 사용 가능  ● 첫 글자 숫자 X  ● 글자 수 제한 X  ● 공백, 특수문자 사용 X

● 대/소문자 구분  ● 문장 끝에 세미콜론 붙임

 

예약어 : 이미 용도가 정해져 있는 단어, 변수 이름이나 다른 목적으로 사용 X

 

기억 클래스

- 자동 변수( auto ) : 함수나 블록이 실행되는 동안에만 존재, 벗어나면 자동 소멸

● 초기화하지 않으면 쓰레기값 저장

- 외부 변수( extern ) : 현재 파일이나 다른 파일에서 선언된 변수나 함수 참조

● 초기화하지 않으면 자동으로 0

- 정적 변수( static )

-> 내부 정적 변수 : 선언한 함수나 블록 내에서만 사용

-> 외부 정적 변수 : 모든 함수에서 사용

● 함수나 블록이 종료된 뒤에도 값 소멸 X

● 변수 선언 시 한번만 초기화 가능

- 레지스터 변수( register ) : CPU 내부의 레지스터에 기억영역을 할당받는 변수

● 자주 사용되는 변수를 레지스터에 저장

● 함수나 블록이 실행되는 동안에만 존재

 

상수 : 고정된 값  변수 : 변하는 값

 

연산자

● 산술 연산자

- 종류 : +, -, *, /, %( 나머지 ), ++, --

● 관계 연산자 : 거짓은 0, 참은 1로 표현

- 종류 : ==, !=, >, >=, <, <=

● 비트 연산자 : 비트별로 연산하여 결과 얻음

- 종류 : &( 모든 비트가 1일 때 1 ), ^( 모든 비트가 같으면 0, 하나라도 다르면 1 ), |( 모든 비트 중 하나라도 1이면 1 ), ~( 각 비트 부정 ), <<( 비트를 왼쪽으로 이동 ), >>

● 논리 연산자

- 종류 : !( 부정 ), &&( 모두 1이면 1 ), ||( 하나라도 1이면 1 )

● 대입 연산자

- 종류 : +=, -=, *=, /=, %=, <<=, >>=

● 조건 연산자 : ( 조건 ? 수식1 : 수식2 )의 형식이면 조건의 수식이 참이면 수식1을, 거짓이면 수식 2 실행

 

제어문

● 단순 if문

● switch문

-> break문은 생략이 가능하지만 break문이 생략되면 수식과 레이블이 일치 시 실행할 문장부터 break문/switch문이 종료될 때까지 모든 문장이 실행된다.

 

반복문

● for문

- 형식 : for( 식1; 식2; 식3 )

● while문 : 조건이 참인동안 실행할 문장 반복 수행

- 형식 : while( 조건 )

● do ~ while문 : while과 같은 동작이지만, 실행할 문장을 무조건 한 번 실행한 다음 조건은 판단하여 탈출 여부 결정

 

배열 : 동일한 데이터 유형을 여러 개 사용해야 할 경우 사용

● 1차원 배열

형식 : a[]

● 2차원 배열

형식 : a[][]

ex. a[3][2] = 행3 열 2

□□

□□

□□

< 배열의 초기화 >

ex. 1차원 배열 초기화 : char a[3] = { ‘A’, ‘B’, ‘C’ }; or char a[] = { ‘A’, ‘B’, ‘C’ };

2차원 배열 초기화 : int a[2][2] = { { ‘10’, 20’ }, { ‘30’, ‘40’ } };

< 배열 형태의 문자열 변수 >

-형식 : char 배열이름[ 크기 ] = “문자열”;

 

포인터 : 변수의 주소

● 포인터 변수 : C언어에서 변수의 주소를 저장할 때 사용하는 변수

● 포인터 변수 선언 시 자료형 먼저 쓴 후 변수명 앞에 간접 연산자를 붙임

-> 간접 연산자 : *

● 실행문에서 포인터 변수에 간접 연산자를 붙이면 해당 포인터 변수가 가리키는 곳의 값을 말함

● 힙 영역 에 접근하는 동적 변수

 

포인터와 배열

ex. 배열 a[1][2][3][4][5]

-> 배열 표기 방법 : a[0] = 1, a[1] =2, a[2] = 3, a[3] = 4, a[4] = 5

-> 포인터 표기 방법 : *(a+0) = 1, *(a+1) = 2, *(a+2) = 3, *(a+3) = 4, *(a+4) = 5

 

절차적 프로그래밍 언어 : 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술하는 언어

● 절차를 중요시 함  ● 데이터 중심 프로시저 구현, 프로그램 전체가 유기적으로 연결

● 자연어에 가까운 단어와 문장으로 구성  ● 과학 계산이나 하드웨어 제어에 사용

< 장/단점 >

● 실행 속도 빠름  ● 같은 코드 복사하지 않고 다른 위치에서 호출하여 사용 가능

● 모듈 구성 용이, 구조적인 프로그래밍 가능

● 프로그램 분석 어려움  ● 유지 보수나 코드 수정 어려움

< 종류 >

C, ALGOL, COBOL, FORTRAN

 

객체 지향 프로그래밍 언어 : SW 개발 시 객체들을 조립해서 프로그램 작성

< 장/단점 >

● 재사용과 시스템의 확장 용이 ● 코드 재활용성 높음

● 사용자와 개발자 사이의 이해를 쉽게 해줌 ● 대형 프로그램 작성 용이

● SW 개발/유지보수 용이 ● 구현 시 처리 시간 지연

< 종류 >

JAVA, C++, Smalltalk

< 특징 >

● 캡슐화 : 데이터와 함수를 하나로 묶음, 정보 은닉

● 정보 은닉 ● 추상화 : 불필요한 부분 생략, 중요한 것에 중점 두어 개략화

● 상속성 ● 다형성 : 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답

 

스크립트 언어 : HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용

< 종류 >

● 서버용 스크립트 언어

-> JSP : 다양한 OS에서 사용 가능

-> ASP : Windows 계열에서만 수행 가능

-> PHP : Linux, Unix, Windows OS에서 사용 가능

-> node.js : 서버에서 실행되는 자바스크립트

● 클라이언트용 스크립트 언어 : 자바 스크립트

< 장/단점 >

● 컴파일 없이 바로 결과 확인 ● 코딩 쉬움

● 개발 시간 짧음 ● 실행 속도 느림 ● 런타임 오류 많이 발생

 

1. 명령형 언어

● 폰 노이만 구조 기초

● 특정 구문의 연산을 이용하여 상태를 변경, 프로그램 동작

ex. C, JAVA, COBOL

2. 선언형 언어

ex. HTML, LISP, XML

3. 함수형 언어

● 알려진 값을 함수에 적용 ● 적용형 언어 ● 재귀호출 자주 이용 ● 병렬 처리 유리

ex. LISP

4. 논리형 언어

● 논리 문장 이용, 프로그램 표현/계산 수행 ● 선언형 언어 ● 반복문/선택문 X ● 비절차적 언어

ex. PROLOG

 

라이브러리 : 자주 사용하는 함수나 데이터들을 미리 만들어 모아 놓은 집합

-> 표준 라이브러리 : 프로그래밍 언어에 기본적으로 포함, 여러 종류의 모듈이나 패키지 형태

-> 외부 라이브러리 : 개발자들이 필요한 기능을 만들어 인터넷 등 공유한 것

< C언어 라이브러리 >

● stdio.h : 데이터의 입/출력

● math.h : 수학 함수 제공

● string.h : 문자열 처리에 사용

● stdlib.h : 자료형 변환, 난수 발생, 메모리 할당에 사용

● time.h : 시간 처리 사용

< JAVA 라이브러리 >

● java.lang : 자바에 기본적으로 필요한 인터페이스, 자료형, 예외 처리

● java.util : 날짜 처리, 난수 발생, 복잡한 문자열 처리 기능 제공

● java.io : 파일 입/출력 기능

● java.net : 네트워크 관련 기능 제공

● java.awt : UI와 관련 기능 제공

 

데이터 입/출력

< scanf() >

● 형식 : scanf(“%3d”, &a);

-> 3 : 입력 자릿수 3자리

-> d : 10진수로 입력

-> &a : 입력받은 데이터를 변수 a의 주소에 저장

< 예시 >

1. 코드 : scanf(“%2d”, &i);, 입력 데이터 : 123, 결과 : i = 12

2. 코드 : scanf(“%4f”, &j);, 입력 데이터 : 12.123, 결과 : j = 12.1

3. 코드 : scanf(“%c”, &b);, 입력 데이터 : SINNA, 결과 : b = S

-> %c는 문자 하나만 출력

4. 코드 : char b[8];, scanf(“%s”, b);, 입력 데이터 : GANG NAM, 결과 : b = GANG

-> 입력 데이터 중 빈 공백이 있으면 빈 공백 앞까지만 저장

5. 코드 : char b[8], c[8];, scanf(“%s %2s”, b, c);, 입력 데이터 : GANG NAM, 결과 : b = GANG, c = NAM

6. 코드 : char b[8], c[8];, scanf(“%c %5c”, b, c);, 입력 데이터 : LOVE ME, 결과 : b = L, c = OVE M

7. 코드 : scanf(“%3d$$%3f”, &i, &j);, 입력 데이터 : 123$$456789, 결과 : i = 123, j = 456

-> 입력데이터에 $$가 없으면 입력되지 않음

 

< printf() >

● 형식 : printf(“%-8.2f”, 200.2);

-> - : 왼쪽부터 출력

-> 8 : 출력 자릿수 8자리

-> .2 : 소수점 이하 2자리

-> f : 실수로 출력

< 예시 >

1. 코드 : print(“%3d”, 2543);, 결과 : 254

2. 코드 : print(“%6d”, 2543);, 결과 : (공백)(공백)2543

3. 코드 : print(“%-6d”, 2543);, 결과 : 2543(공백)(공백)

4. 코드 : print(“%06d”, 2543);, 결과 : 002543

-> 공백을 0으로 채워서 출력

5. 코드 : print(“%f”, 245.2555);, 결과 : 245.255500

-> %f는 기본적으로 정수 모두 출력, 소수점 이하는 6자리 출력

6. 코드 : print(“%.3f”, 245.2555);, 결과 : 245.256

-> 소수점이하 자릿수가 지정되면 마지막 다음 자릿수에서 반올림 계산

7. 코드 : print(“%8.6s”, “help me”);, 결과 : (공백)(공백)help m

-> 8자리의 공간 확보 후 오른쪽부터 6글자 출력

 

예외처리

● 예외 : 정상적인 실행을 방해하는 조건이나 상태

● 프로그래머가 해당 문제에 대비해 작성해 놓은 처리 루틴 수행

< Java에서 예외처리 >

try ~ catch ~ finally

try{

     예외가 발생할 가능성이 있는 코드;

}catch( 예외객체1 매개변수 ){

     예외객체1에 해당하는 예외 발생 시 처리 코드;

}catch( Exception 매개변수 ){

     예외객체 1~n에 해당하지 않는 예외 발생 시 처리 코드;

}finally{

     예외 발생 여부와 관계없이 무조건 처리되는 코드;

}