C/C++의 데이터 타입과 크기
- 문자형 (char): 1Byte
- 부호없는 문자형 (unsigned char): 1Byte
- 정수형 (short): 2Byte
- 정수형 (int): 4Byte
- 부호없는 정수형 (unsigned short): 2Byte
- 부호없는 정수형 (unsigned int): 4Byte
- 실수형 (float): 4Byte
- 실수형 (double): 8Byte
변수명 작성 규칙
- 첫 글자로 숫자는 올 수 없습니다.
- 공백이나 특수문자 사용 불가 (*, +, -, / 등).
- 예약어 사용 불가.
상수의 생성
- 상수는 const 또는 #define 예약어 사용.
외부변수
- 함수 종료 후에도 값이 소멸되지 않으며, 다른 함수에서도 참조 가능.
산술 연산자
- %: 나머지 연산자 (정수만 사용 가능).
- ++: 증가 연산자 (전치, 후치).
- --: 감소 연산자 (전치, 후치).
조건 연산자
- 조건에 따라 서로 다른 수식을 수행.
- 예: mx = a < b ? b : a;
scanf() 함수
- 키보드 입력을 받아 변수에 저장.
- 예: scanf("%d %f", &i, &j);
연산자 우선순위
- 단항 연산자: ! ~ ++ -- sizeof
- 이항 연산자: , /, %, +, -, <<, >>, <, <=, >=, >, ==, !=, &, ^, |, &&, ||, 조건 연산자 ?, :, 대입 연산자 (=, +=, -=, =, /=, %=, <<=, >>=), 순서 연산자 (,)
printf() 함수
- 인수로 주어진 값을 화면에 출력.
- 예: printf("%d, %c", a, b);
주요 서식 문자열
- %d: 정수형 10진수
- %o: 정수형 8진수
- %x: 정수형 16진수
- %c: 문자
- %s: 문자열
- %f: 소수점을 포함하는 실수
기타 표준 입·출력 함수
- getchar(): 한 문자를 입력받아 변수에 저장.
- gets(): 문자열을 입력받아 변수에 저장.
- putchar(): 한 문자를 화면에 출력.
- puts(): 문자열을 화면에 출력 후 줄 바꿈.
파일 입력 함수
- fscanf(): 파일 포인터에서 데이터를 가져와 변수에 저장.
- fgetc(): 파일에서 한 문자를 입력받아 변수에 저장.
- fgets(): 파일에서 문자열을 입력받아 변수에 저장.
주요 제어문자
- \n: 다음 줄로 이동.
- \b: 왼쪽으로 한 칸 이동.
- \t: 일정 간격 띄움.
- \r: 현재 줄의 처음으로 이동.
- \0: 널 문자 출력.
- \a: 벨 소리 출력.
- \\: 역 슬래시 출력.
- \f: 한 페이지 넘김.
제어문
단순 if문
- 조건이 참일 때 실행하는 제어문.
- 예: if (a > b) printf("Gilbut");
for문
- 초기값, 최종값, 증가값을 이용해 정해진 횟수를 반복.
- 예: for (i = 1; i <= 10; i++) sum += i;
while문
- 조건이 참인 동안 반복 수행.
- 예: while (i <= 10) i += 1;
do~while문
- 조건이 참인 동안 반복 수행, 최소 한 번은 실행.
- 예: do { i += 1; } while (i <= 10);
switch문
switch(a) {
case 1:
printf("바나나");
break;
case 2:
printf("딸기");
break;
default:
printf("없음");
}
배열
1차원 배열
- 예: char a[3] = {'A', 'B', 'C'};
2차원 배열
- 예: int b[2][3] = {{11, 22, 33}, {44, 55, 66}};
배열 형태의 문자열 변수
- 문자열 끝에 널 문자(\0) 자동 삽입.
- 예: char a[5] = "love";
포인터와 포인터 변수
- 포인터 변수 선언: int *a;
- 변수 주소 저장: a = &b;
- 포인터 값 접근: c = *a;
사용자 정의 함수
#include <stdio.h>
int func(int x, int y) {
return x + y;
}
int main() {
int r = func(3, 5);
printf("%d", r);
return 0;
}
Python의 기본 문법
- 코드 블록은 콜론(:)과 여백으로 구분.
- 예: 'She said "I like it"'
- 키보드 입력을 받아 변수에 저장.
- 예: a = input('입력하세요.')
Python의 print() 함수
- 예: print(82, 24, sep='-', end=',')
리스트(List)를 이용하는 방식
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in a:
sum += i
Range
a = list(range(5)) # [0, 1, 2, 3, 4]
b = list(range(4, 9)) # [4, 5, 6, 7, 8]
c = list(range(1, 15, 3)) # [1, 4, 7, 10, 13]
슬라이스(Slice)
a = ['a', 'b', 'c', 'd', 'e']
print(a[1:3]) # ['b', 'c']
print(a[0:5:2]) # ['a', 'c', 'e']
print(a[3:]) # ['d', 'e']
print(a[:3]) # ['a', 'b', 'c']
print(a[::3]) # ['a', 'd']
Python의 클래스
class Cls:
x = 10
def add(self, a):
return a + self.x
a = Cls()
a.x = 5
print(a.add(5)) # 10
JavaScript 주요 메소드
- pop(): 배열의 마지막 요소 제거.
- push(): 배열의 마지막에 요소 추가.
- join(): 배열의 모든 요소를 하나의 문자열로 변환.
- shift(): 배열의 첫 번째 요소 제거.
- splice(): 배열의 일부 요소 제거 및 추가.
프로그래밍 언어 종류
- JAVA: 분산 네트워크 환경에 적용 가능, 캡슐화와 재사용성.
- C++: C 언어에 객체지향 개념 적용.
- Smalltalk: 1세대 객체지향 프로그래밍 언어.
객체지향 프로그래밍
- 객체(Object): 데이터와 이를 처리하기 위한 연산의 결합.
- 클래스(Class): 유사한 객체들의 묶음.
- 캡슐화(Encapsulation): 데이터와 함수를 하나로 묶음.
- 상속성(Inheritance): 상위 클래스의 속성과 연산을 하위 클래스가 물려받음.
프레임워크 특성
- 모듈화(Modularity): 캡슐화를 통한 모듈화 강화.
- 재사용성(Reusability): 재사용 가능한 모듈 제공.
- 확장성(Extensibility): 다양한 형태와 기능의 애플리케이션 개발 가능.
- 제어의 역흐름(Inversion of Control): 객체 제어를 프레임워크에 넘김.
결합도
- 정의: 모듈 간의 상호 의존 정도.
- 종류: 자료 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도.
응집도
- 정의: 모듈 내부 요소들이 서로 관련되어 있는 정도.
- 종류:
- 우연적 응집도: 우연히 모여 있는 경우.
- 논리적 응집도: 논리적으로 관련 있는 요소들이 모인 경우.
- 시간적 응집도: 특정 시간에 실행되는 요소들이 모인 경우.
- 절차적 응집도: 순서대로 실행되는 요소들이 모인 경우.
- 교환적 응집도: 동일한 입력과 출력을 사용하는 요소들이 모인 경우.
- 순차적 응집도: 한 요소의 출력이 다른 요소의 입력으로 사용되는 경우.
- 기능적 응집도: 단일 기능을 수행하는 요소들이 모인 경우.
효과적인 모듈 설계 방안
- 결합도는 줄이고 응집도는 높여서 모듈의 독립성과 재사용성을 높입니다.
- 복잡도와 중복성을 줄이고 일관성을 유지시킵니다.
보안 3대 요소
- 기밀성 (Confidentiality): 정보와 자원에 접근할 수 있는 권한이 있는 사용자만 접근 가능.
- 무결성 (Integrity): 인가된 사용자만 정보 수정 가능.
- 가용성 (Availability): 인가된 사용자가 언제든지 시스템을 사용할 수 있음.
추가 내용
Python의 주요 문법 및 함수
if 문법
if a > b:
print("a is greater than b")
for문
for i in range(1, 11):
sum += i
while문
i = 1
while i <= 10:
i += 1
클래스
class MyClass:
def __init__(self, value):
self.value = value
def display(self):
print(self.value)
obj = MyClass(10)
obj.display() # 10
JavaScript
배열의 주요 메소드
- pop(): 배열의 마지막 요소를 제거함.
- push(): 배열의 마지막에 요소를 추가함.
- join(): 배열의 모든 요소를 하나의 문자열로 변환함.
- shift(): 배열의 첫 번째 요소를 제거함.
- splice(): 배열에서 지정한 범위의 요소를 제거한 후 지정한 값을 추가함.
프로그래밍 언어의 주요 특징
JAVA
- 특징: 분산 네트워크 환경에 적합, 캡슐화 및 재사용성 높음.
C++
- 특징: C 언어에 객체지향 개념을 추가한 언어.
Smalltalk
객체지향 프로그래밍 (OOP)
객체 (Object)
- 정의: 데이터와 이를 처리하는 메소드의 결합.
클래스 (Class)
- 정의: 유사한 객체들을 묶어서 하나의 공통된 특성을 표현.
캡슐화 (Encapsulation)
- 정의: 데이터와 메소드를 하나로 묶음으로써 외부로부터 데이터를 보호.
상속성 (Inheritance)
- 정의: 상위 클래스의 속성과 메소드를 하위 클래스가 물려받는 것.
프레임워크의 특성
모듈화 (Modularity)
- 정의: 캡슐화를 통해 모듈화 강화, 변경 영향 최소화.
재사용성 (Reusability)
- 정의: 재사용 가능한 모듈 제공으로 비용 절감, 생산성 향상.
확장성 (Extensibility)
제어의 역흐름 (Inversion of Control)
- 정의: 객체의 제어를 프레임워크가 관리하여 개발자의 부담을 줄임.
결합도 (Coupling)
- 정의: 모듈 간의 상호 의존성.
- 종류: 자료 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도.
응집도 (Cohesion)
- 정의: 모듈 내부의 요소들이 얼마나 밀접하게 관련되어 있는지.
- 종류: 우연적 응집도 < 논리적 응집도 < 시간적 응집도 < 절차적 응집도 < 교환적 응집도 < 순차적 응집도 < 기능적 응집도.
보안 3대 요소
기밀성 (Confidentiality)
- 정의: 정보에 대한 접근 권한이 있는 사용자만 접근 가능.
무결성 (Integrity)
가용성 (Availability)
- 정의: 인가된 사용자가 언제든지 시스템을 사용할 수 있음.