프로그래밍 언어 기초
언어 번역 프로그램
Assembler
일반적으로 하드웨어 제어
저급언어(어셈블리어)를 기계어로 변환
Compiler
고급언어를 목적 프로그램으로(기계어)
실행 시간 효율성 중시
한꺼번에 번역
Cross Compiler
다른 기종에 맞는 기계어로 번역
Interpreter 인터프리터
직접 실행
대화식
반복문 불리
PreProcessor
컴파일러가 처리하기 전에 먼저 처리\ 확장된 원시 프로그래밍 생성
매크로 프로세서 기본 수행
매크로 정의 인식 - 매크로 정의 저장 - 매크로 호출 인식 - 매크로 호출 확장
프로그램 언어 해독 순서
컴파일러 - 링커 - 로더
컴파일용 언어
COBOL, FORTRAN, PASCAL..
스크립트 언어
PHP, Basic, Python ...
인터프리터 사용’
BASIC, PROLOG, LISP, Python
고급언어
C, C++, Java, COBOL, FORTRAN ..
링커
모두 묶어 로드 모듈이라는 실행 가능한 한 개의 기계어로 통합
SLL : 실행되기 전
DLL : 프로그램이 실행되면서 동적으로 링크
Linkage Editor : 재배치 형태의 기계어로 묶어서 로드 모듈로
로더
주기억 장치로 적재
좁은 의미로의 로더는 적재만
절대 로더
할당 : 프로그래머
연결 : 프로그래머
재배치 : 어셈블러가 지원
적재 : 로더
컴파일 과정
어휘분석
일련의 토큰들로 분할해 내는 작업
구문 분석 Syntax
오류 확인
의미 분석 Semantic
중간 코드 생성
최적화
코드 생성
자료 객체
파일, 상수
컴퓨터 저장소의 정적 + 동적
실행 중에 여러 형의 다른 객체가 존재
가상 컴퓨터에서 실행 시 하나 이상의 객체 묶음
변수
하나의 기억 장치
컴파일 시간에 한 번 정해지면 그대로 유지
이름 값 속성 참조
정적인 것, 동적인 것 있다.
바인딩
프로그램에서 변수 명칭과 그 메모리 주소, 데이터 형 또는 실제 값 연결하는 것
정적 바인딩
프로그램 실행 시간 전에 속성을 연결
동적 바인딩
실행 시간
후기 바인딩
융통성 확보
프로그램 언어 활용
알고리즘
문제를 해결하기 위하여 잘 정의된 동작의 유한 집합
0개 이상 입력
1개 이상 출력
반드시 종료
실행 가능한 연산
요구조건
입력 출력
유한성 Finiteness
정확성 Definiteness
효과성
분석하는 판단 기준
정확성 Correctness
간결성 Simplicity
작업량 Amount of work done
최적성 Optimality
설계 기법
Divide and Conquer
Greedy
Backtracking
정적 분석 도구
pmd
cppcheck
checkstyle
SonarQube
동적 분석 도구
Avalanche
valgrind
이스케이프 시퀀스
\n : New line
\t : tab
\b : backspace
\r : Home, 처음으로
C 언어
“%7.3s” : 7칸 확보 , 오른쪽 부터, 3자리 끊어서
“%-7.1f” : 7칸 확보, 왼쪽부터, 소수점 이하 2번째 자리에서 반올림해서 1자리만
비트 논리 연산자
& : AND | : OR
^ : XOR
~ : NOT
상수는 문자열 끝에 “\0”
첫 글자 _ 사용 가능 : 영문 취급
문자열 상수 시작 번지는 포인터 상수
배열명은 그 배열의 시작 번지이며, 상수이다.
프로그램 연산자 순서
괄호 ()
산술 +
쉬프트 << . 연산순서 오ㅡ>왼
관계 ==
논리 &
()+<≤==& ( 이렇게 외우면 재밌음 )
'소프트웨어공학 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 필기] 프로그래밍 언어 활용 - 프로그램 개발 환경 구축과 명령어, 주소 지정 (0) | 2022.03.26 |
---|---|
[정보처리기사 필기] 프로그래밍 언어 활용 - 객체지향 기술 (0) | 2022.03.26 |
[정보처리기사 필기] 데이터베이스 구축 - 물리 데이터베이스 설계 (0) | 2022.03.25 |
[정보처리기사 필기] 데이터베이스 구축 - SQL (0) | 2022.03.25 |
[정보처리기사 필기] 데이터베이스 구축 - 논리 데이터베이스 설계 (0) | 2022.03.25 |
댓글