살콤아내 자기계발/파이썬

POSTECH 컴퓨터공학 입문 1 (1-4주차 요약)

살콤아내 2021. 4. 6. 15:34
728x90
반응형

 

컴퓨터의 자료표현

2진수(binary)체계 사용

BIT: 전기신호 ON(1), OFF(0)의 두 개의 정보를 표현하는 정보의 최소 단위

BYTE: 연속된 8개의 비트(256개), 문자를 표현하는 단위

(*ASCII 7bit/ UNICODE 16bit)

출처: POSTECH 컴퓨터공학 입문 1-2W 12분

 

 

프로그래밍언어의 종류

- 저급언어: 기계어, 어셈블리어

- 고급언어: C, C++, Java, Python

 

- 컴파일러: (에디터를 통해) 고급언어로 작성된 프로그램을 기계어로 번역하는 프로그램

- 어셈블러: 어셈블리언어로 작성된 프로그램을 기계어로 번역

 

 

프로그래밍: 컴퓨터에게 어떤 일의 수행을 지시하는 명령어들의 집합 (실행파일) 프로그래밍

 

프로그래밍 개발도구

에디터(소스코드로 구성된 소스파일), 컴파일러, 링커(번역된 여러 목적코드를 하나로 묶어주는 역할), 디버거(명령을 줄 단위로 실행하고 점검)

 

소스파일.c>>[컴파일러]>>목적파일.obj>>[링커]>>실행파일.exe>>[로더]>>메모리>>실행

  

- 통합개발환경: 에디터, 컴파일러, 링커, 디버거 기능을 모두 제공하는 프로그램 (DevC++, VS)

- 웹기반컴파일러 (http://ideone.com)

 

 

C언어

UNIX 운영체제를 위한 언어로 데니스리치가 개발

 

모듈(Module): 문제해결(Problem solving)에서 큰 문제를 기능별 작은단위로 나눈 것으로 독립적으로 수행할 수 있는 프로그램 단위. (예: 데이터입력, 데이터처리, 데이터출력 모듈) C언어에서는 이를 '함수'라고 부른다.

 

출처: POSTECH 컴퓨터공학 입문 1 2-1, 22분

 

C 프로그래밍 언어

- 주석(Comment): 프로그램의 이해를 돕기 위한 문장 (C: /*  */, C++://)

- 예약어(Keyword): 약속된 의미의 단어로 사용자가 임의로 재정의할 수 없음 (auto, do, goto, ... void, volatile, wile)

 

출처: POSTECH 컴퓨터공학 입문 1 2-2, 2분

- 식별자(Identifier): 변수명, 함수명 등 사용자가 만든 이름으로 영문대소문자, 밑줄(_), 숫자를 혼합하여 만듦. 첫자는 숫자가 올 수 없음.

- 상수(Constant): 프로그램내에서 항상 고정된 값. 

- 변수 (Variable): 변할 수 있는 수로 데이터를 RAM 메모리에 (임시로) 저장하는 공간 (데이터처리를 위해 데이터타입을 이용해 변수를 선언) 변수명은 자료값을 저장하는 저장장소의 이름, 같은 데이터타입 변수를 여러개 선언시 , 사용

- 연산자(Operator): 산술, 관계, 대입, 논리, 증감, 조건, 비트, size of, 형변환 연산자

- 표현식(Expression): 상수, 변수, 연산자, 함수, 호출 등으로 구성된 의미있는 식으로 항상 평가값을 가진다

문장(Statement): 하나의 처리 단위(문장)는 반드시 ; 로 끝나야 함, 복합문은 { } 로 이용

- 대입문(Assignment Statement): =(대입연산자)는 오른쪽의 표현식의 평가값을 왼쪽 변수에 저장

 

 

 

C프로그래밍 언어 데이터타입

- 기본자료형 (basic type): int, char, float ..

- 유도자료형 (derived type): 배열, 구조체, 공용체

 

출처: POSTECH 컴퓨터공학 입문 1 2-3, 4분

 

정수형은 큰 의미에서 문자형을 포함 (좁은 의미에서는 문자를 제외한 순수한 정수형을 저장하는 자료형)

- 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이 아닌 모든 값을 참으로 간주한다.

 

 

 

 

728x90
반응형