변수
< 작성 규칙 >
● 영문자, 숫자, _ 사용 가능 ● 첫 글자 숫자 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{
예외 발생 여부와 관계없이 무조건 처리되는 코드;
}
'자격증 > 정보처리기사 - 필기' 카테고리의 다른 글
정보시스템 구축 관리 - SW 개발 방법론 활용 (0) | 2020.02.27 |
---|---|
프로그래밍 언어 활용 - 응용 SW 기초 기술 활용 (0) | 2020.02.26 |
프로그래밍 언어 활용 - 서버 프로그램 구현 (0) | 2020.02.21 |
데이터베이스 구축 - 데이터 전환 (0) | 2020.02.21 |
데이터베이스 구축 - SQL 활용 (0) | 2020.02.20 |