컴퓨터의 자료표현
2진수(binary)체계 사용
BIT: 전기신호 ON(1), OFF(0)의 두 개의 정보를 표현하는 정보의 최소 단위
BYTE: 연속된 8개의 비트(256개), 문자를 표현하는 단위
(*ASCII 7bit/ UNICODE 16bit)
프로그래밍언어의 종류
- 저급언어: 기계어, 어셈블리어
- 고급언어: C, C++, Java, Python
- 컴파일러: (에디터를 통해) 고급언어로 작성된 프로그램을 기계어로 번역하는 프로그램
- 어셈블러: 어셈블리언어로 작성된 프로그램을 기계어로 번역
프로그래밍: 컴퓨터에게 어떤 일의 수행을 지시하는 명령어들의 집합 (실행파일) 프로그래밍
프로그래밍 개발도구
에디터(소스코드로 구성된 소스파일), 컴파일러, 링커(번역된 여러 목적코드를 하나로 묶어주는 역할), 디버거(명령을 줄 단위로 실행하고 점검)
소스파일.c>>[컴파일러]>>목적파일.obj>>[링커]>>실행파일.exe>>[로더]>>메모리>>실행
- 통합개발환경: 에디터, 컴파일러, 링커, 디버거 기능을 모두 제공하는 프로그램 (DevC++, VS)
- 웹기반컴파일러 (http://ideone.com)
C언어
UNIX 운영체제를 위한 언어로 데니스리치가 개발
모듈(Module): 문제해결(Problem solving)에서 큰 문제를 기능별 작은단위로 나눈 것으로 독립적으로 수행할 수 있는 프로그램 단위. (예: 데이터입력, 데이터처리, 데이터출력 모듈) C언어에서는 이를 '함수'라고 부른다.
C 프로그래밍 언어
- 주석(Comment): 프로그램의 이해를 돕기 위한 문장 (C: /* */, C++://)
- 예약어(Keyword): 약속된 의미의 단어로 사용자가 임의로 재정의할 수 없음 (auto, do, goto, ... void, volatile, wile)
- 식별자(Identifier): 변수명, 함수명 등 사용자가 만든 이름으로 영문대소문자, 밑줄(_), 숫자를 혼합하여 만듦. 첫자는 숫자가 올 수 없음.
- 상수(Constant): 프로그램내에서 항상 고정된 값.
- 변수 (Variable): 변할 수 있는 수로 데이터를 RAM 메모리에 (임시로) 저장하는 공간 (데이터처리를 위해 데이터타입을 이용해 변수를 선언) 변수명은 자료값을 저장하는 저장장소의 이름, 같은 데이터타입 변수를 여러개 선언시 , 사용
- 연산자(Operator): 산술, 관계, 대입, 논리, 증감, 조건, 비트, size of, 형변환 연산자
- 표현식(Expression): 상수, 변수, 연산자, 함수, 호출 등으로 구성된 의미있는 식으로 항상 평가값을 가진다
- 문장(Statement): 하나의 처리 단위(문장)는 반드시 ; 로 끝나야 함, 복합문은 { } 로 이용
- 대입문(Assignment Statement): =(대입연산자)는 오른쪽의 표현식의 평가값을 왼쪽 변수에 저장
C프로그래밍 언어 데이터타입
- 기본자료형 (basic type): int, char, float ..
- 유도자료형 (derived type): 배열, 구조체, 공용체
정수형은 큰 의미에서 문자형을 포함 (좁은 의미에서는 문자를 제외한 순수한 정수형을 저장하는 자료형)
- signed int의 범위 (크기가 32비트, 즉 4바이트이면 음수수부터 양수까지 표현이 가능하므로 -2^31부터 2^31-1까지 표현이 가능.
- unsigned int의 범위 (0과 양수만 표현)
문자형 (char)은 왜 정수형일까? ASCII코드로 저장되는 문자는 정수값으로 연산가능하기 때문
Ex) char c1 = 'a' ;
c1 = c1+1;
printif("%c", c1); // 'b'
printif("%d", c1); // 98
부동소수형
- float 저장공간크기 32비트(4바이트)로 10^-38에서 10^38까지 표현가능하며 소수점이하 6자리까지 표현가능하다.
- double 저장공간크기 64비트(8바이트)로 10^-308에서 10^308까지 표현가능하며 소수점이하 15자리까지 표현가능하다. float보다 표현범위가 크고 보다 정밀하고 정확하게 표현가능하다.
- long double은 double보다 더 큰 저장공간을 할당하려는 의도에서 만들어졌으나 컴파일러마다 다르다
size of 연산자
저장공간의 크기*바이트)를 알 수 있는 연산자로 sizeof (변수), sizeof 변수, sizeof (자료형키워드) 로 이용가능하다.
Ex) printif("%d", sizeof(char)); //1)
Ex) printif("%d", sizeof(int)); //4)
Ex) printif("%d", sizeof(float)); //4)
Ex) printif("%d", sizeof(double)); //8)
전처리기(Preprocessor)
컴파일러가 프로그래밍 언어를 기계어로 바꾸기 전에 처리해야할 명령을 먼저 수행하는 것.
Ex) #include<studio.h> >>> 다양한 라이브러리를 작업 중인 소스파일에서 사용할 수 있도록 헤더파일을 포함.
Ex) #define 문자열1 문자열2 >>> 컴파일 전에 소스파일의 문자열1을 문자열2로 치환
printf 함수: 여러가지 다양한 데이터타입을 형식화시켜 출력하는 함수
Ex) printf("%d %f|n", a, b);
형식지정자 %d(정수를 10진수로 출력), %f(소수점이 있는 실수로 출력), %c(문자형태로 출력), %s(문자열형태로 출력)
scanf 함수: 여러개의 다양한 데이터타입을 한 번에 입력받을 수 있는 함수 (임의의 개수로 입력받을 수 있음)
Ex) int age;
float weight;
scanf("%d %f", &age, &weight);
&는 주소연산자로 age, weight방에 가서 지금 입력된 값을 넣어달라는 뜻
Ex) 함수 예시
C프로그램 함수의 종류
1. 주(main)함수: 프로그램의 시작과 종류를 나타내는 함수로 필수로 존재해야함. 사용자정의함수라 할 수 있음. main( )
2. 사용자정의함수: 사용자가 문제를 분석하여 필요한 기능으로 분류하여 기능별로 코딩하고자 할 때 만드는 함수. add( ), swap( )
3. 시스템 라이브러리 함수: 많이 사용하는 기능의 함수들을 시스템에서 미리 만들어 놓고 사용자가 사용할 수 있도록 제공하는 함수. scanf( ), printf( )
함수와 관련된 용어 정리
- 변수(variable): 프로그램에서 데이터터를 저장하는 공간 (지역변수: 함수 지역 안에서 선언된 변수는 다른 변수에서 그 내용을 보거나 수정할 수 없음)
- 변수명(variable name): 선언된 변수의 메모리에 붙여진 이름, 변수명에 다른 값을 대입하면 예전 값은 지워지고 새로운 값을 저장
- 데이터타입(data types): 변수를 선언할 때, 변수의 특성에 적합한 메모리를 할당하도록 만들어 놓은 예약어 (int, char, double)
- 함수(function, 모듈, 메소드): C++, Java에서 프로그램에서 기능별로 나누고 독립적으로 실행할 수 있는 프로그램 단위
- 함수 정의(function definition): 함수를 만드는 것
- 함수 원형(function prototype, 함수선언): 함수를 사용(호출)하기 이전에 함수의 머리(헤더)부분을 기술하는 단계
- 매개변수(parameter, 인자, argument): 함수와 함수 사이에 주고 받는 값 (변수값, 상수값 등)
매개변수 없는 함수 만들기
매개변수 있는 함수 만들기
(지역변수, 함수호출방법 call by value)
함수 호출 방법
- 값에 의한 호출 (call by value)
- 주소에 의한 호출 (call by address): main함수에 있는 변수의 주소값을 가지고 swap( ) 함수를 호출하면 swap( )함수에서 main함수의 변수값을 바꿀 수 있음 (포인터 변수 사용). 바꾸기 위해서는 역참조 연산자를 사용해야 함.
*포인터 변수: 주소를 값으로 가지는 변수, int*p, int*q >> P=&a
*역참조 연산자 (dereference operator): 포인터변수 선언 후에 문장 중에 포인터 변수 앞에 *가 오면 (*p)
포인터 변수가 가리키는 main 변수의 값을 변경할 수 있음
*관계연산자와 논리연산자처럼 참(1) 또는 거짓(0)으로 나오는 경우가 아닌 수식에서는 어떤 방법으로 참과 거짓을 구분할 수 있을까?
>> C언어에서는 참과 거짓이라는 상수는 없으며, 0, 0.0, '|0'는 거짓으로, 0이 아닌 모든 값을 참으로 간주한다.
'살콤아내 자기계발 > 파이썬' 카테고리의 다른 글
POSTECH 컴퓨터 공학 입문 2 (1-4주차 요약) (0) | 2021.04.07 |
---|---|
점프투파이썬 1주차 112pg. 연습문제풀이 (0) | 2021.04.07 |
POSTECH Python 프로그래밍 2 (요약 1-2주) (0) | 2021.04.05 |
점프투파이썬 1주차 정리 (0) | 2021.04.05 |
POSTECH Computational Thinking 2 (1-4주차 요약) (0) | 2021.04.04 |