데브코스 웹풀스택 과정/TIL

1105 프로그래밍의 기본 원리 및 변수와 자료형

thinktank911 2025. 11. 5. 10:29

 

프로그래밍의 기본 원리

왜 컴파일 기반 언어를 이해해야 하는가

  • 컴파일언어 : 모든 코드를 한번에 해석하고 실행한다.
  • 인터프리터 언어 : 코드를 한줄씩 해석하고 실행한다.
  • 타입스크립트 공부하려면 컴파일 개념 이해해야 한다.
    ➡️ 타입스크립트가 자바스크립트로 변환하는 과정을 컴파일이라고 한다.

프로그래밍의 개념

  • 프로그래밍 : 소프트웨어가 소프트웨어를 개발하는 과정(PD가 TV프로그램 만들듯이. PD도 개발자)
  • 개발 3단계 : 구상 - 설계 - 구현
  • 프로그래밍 언어
    • 사람언어 - 컴퓨터 언어 - 기계어(0과 1로 이루어짐)
    • 컴퓨터 언어를 기계어로 변환해주는 과정이 컴파일
  • 프로그래밍 작성 과정
    1) 설계 : 구상한 것 기록
    2) 원시코드 작성 : 직접 요리
    3) 컴파일 : 소스코드를 이진코드로 변환하는 과정
    4) 링크 : 실행파일 만드는 과정

C언어로 Hello World 출력하기

C언어 테스트

  • 온라인C 컴파일러
  • 비쥬얼 스튜디오 커뮤니티

c언어에서의 함수 형태

    int main(void){

    }
  • 출력함수 : prinf
  • 엄격한 문법
    • 문장 끝 세미콜론
      • 컴파일 기반 언어는 문자을 마칠 때 반드시 세미콜론을 찍어주어야 한다.
        컴파일러는 세미콜론 단위로 문장을 해석하기 때문
    • 리턴값 return 0
      • 함수의 수행이 끝남을 의미
        리턴값 0 자체는 의미가 없다.

변수와 자료형

변수란 무엇인가

  • 데이터를 담는 용기
  • 자바스크립트는 어떤 타입의 데이터든 담을 수 있다.
  • 특정 타입을 보고 메모리의 크기를 결정

변수를 사용하는 이유

  • 메모리상 주소값을 기억하기 위해 이름 부여
  • 우리가 사용한 메모리 공간에 이름을 부여한 것이 변수

메모리 영역

메모리는 크게 코드 영역, 스택 영역, 힙 영역, 데이터 영역 4가지로 구분

  • 코드 영역 : 실행 명령어들 저장
  • 스택 : 지역변수 및 매개변수 저장
  • 힙(=큐 메모리) : 프로그래머가 직접 할당
  • 데이터 영역 : 전역변수, static 변수 저장

이벤트 메세지 저장소 ➡️ OS 시스템큐 ➡️어플리케이션 큐

콜스택 메모리의 적용

우리가 지금껏 사용한 지역변수 및 매개변수 등을 모두 스택 메모리를 사용

함수가 실행 종료되면 변수는 d - c - b - a 순으로 사라짐

 

 

※ new로 선언하는 것은 힙메모리 사용

 

콜스택 메모리 힙의 데이터 저장 구조

  • 원시 타입 변수 생성
  • int a = 10; int b = 20;
  • 원시 타입의 데이터 값은 콜스택에 저장되고, 데이터값이 저장된 콜스택의 주소값은 변수 a, b에 각각 저장됨
  • 원시타입 재할당
    : 변수 a에 20을 재할당하면 본인의 메모리에 있는 값을 변경하는 것이 아니라 20이 저자된 주소값을 a에 저장한다.
    : 변수 b에 30을 재할당하면 새로운 메모리 확보하여 30을 저장하고 b가 가리키는 주소값 교체
  • 주소값을 저장하는 변수를 포인터 변수, 이러한 구조가 포인터 구조
  • 가비지 컬렉터
    ➡️ 더이상 참조되지 않는 데이터는 가비지 컬렉터에 의해 적절한 시점에 메모리에서 해제

자료형이란

  • 선언한 변수가 얼만큼의 메모리 공간을 할당할 것인지 결정
  • 효율적인 메모리 공간을 활용하기 위해서 사용
- 정수형 사용 : int
- 실수형 사용 : float, double
- 문자형 사용 : 특정 숫자와 특정 문자를 대응시키는 방법 사용. 아스키코드 표준에 의거
#include <stdio.h>

int main() {
    char ch1 = 'A';

    printf("%d, %c", ch1, ch1);
    return 0;
}

상수란

  • 상수는 변하지 않는 수
  • const : 변수에 붙여주면 상수화
    • 주의점은 선언과 동시에 초기화 해줘야 한다.
#include <stdio.h>

int main() {
    const int TEN;
    TEN = 20;

    return 0;
}

➡️ 에러남

사용자로부터 데이터 입력

scanf

scanf("서식문자열", &변수);

#include <stdio.h>

int main() {
    int input = 0;
    scanf("%d", &input);
    printf("input: %d", input);

    return 0;
}

➡️  메모리 주소값 이용


<평가문제1>
사용자로부터 1개 정수 입력 받아 입력받은 수에 5 곱한 결과 출력

#include <stdio.h>

int main() {
    int input = 0;
    scanf("%d", &input);
    printf("input: %d", input*5);

    return 0;
}

<평가문제2>
사용자로부터 알파벳 문자 하나 입력 받아 이에 해당하는 숫자 출력

#include <stdio.h>

int main() {
    char input;
    scanf("%c", &input);
    printf("input: %d", input);

    return 0;
}