Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

ddodoi 님의 블로그

10주차-파트03: 프로그래밍의 개념, C언어 실습 본문

웹풀스택 일일정리

10주차-파트03: 프로그래밍의 개념, C언어 실습

ddodoi 2024. 10. 23. 15:14

CHAPTER 1. 프로그래밍의 개념

 

✔️프로그래밍

개발자가 소프트웨어를 개발하는 과정

 

🌱개발의 3단계 과정

구상 -> 설계 -> 구현

 

구상: 추상적

설계: 내 머릿속 추상적 내용을 문서화

구현: 설계된 걸 구현

 

🌱프로그래밍 언어란

사람과 컴퓨터 간의 통신 수단. 사람의 언어를 컴파일(사람의 언어를 컴퓨터가 이해할수 있는 언어로 바꿔줌)과정을 거쳐 기계어로 변환한다.

 

 

 

🌱프로그래밍 언어의 종류

  • 저급언어(기계 중심)      ex) 기계어, 어셈블리어
  • 고급언어(인간 중심)      ex) C언어, C++, 자바, 자바스크립트, C#, 기타등등.. 

 

 

🌱프로그래밍의 개념

 설계 -> 원시코드 -> 컴파일 -> 링크

 

설계

  • 머릿속으로 구상한 것을 기록
  • 요리의 레시피를 만든다

원시코드 작성

  • 머리속으로 구상한 것을 기록
  • 요리의 레시피대로 요리

컴파일

  • 원시코드는 사람이 이해하는 언어이지 컴퓨터 언어가 아님.
  • 컴파일은 소스코드를 이진코드로 변환하는 과정, 즉 컴퓨터가 이해할 수 있는 언어로 변환

링크

  • 실행파일을 만드는 과정
  • 주변 라이브러리들에 링크 걸어줌

컴파일 + 링크  => "빌드" 과정이라고 보기도 함

 

 

 

 

CHAPTER 2. C언어 실습

https://www.onlinegdb.com/online_c_compiler

 

Online C Compiler - online editor

OnlineGDB is online IDE with c compiler. Quick and easy way to compile c program online. It supports gcc compiler for c.

www.onlinegdb.com

 

 

 

✔️C언어의 엄격한 문법

 

- 문장의 끝에 세미콜론(;)

    컴파일 기반 언어는 문장을 마칠 때 반드시 세미콜론을 찍어주어야 한다. 왜냐하면 컴파일러는 세미콜론 단위로 문장을     해석하기 때문이다.

    ※ 자바스크립트는 인터프리터 기반 언어이기 때문에 세미콜론을 찍어주지 않아도 상관없다.

 

 

- 리턴값에 관하여

return 0;

 

     함수의 수행이 끝남을 의미한다.

     리턴값 0 자체는 의미가 없다.

 

 

- 주석문을 사용하자

주석문 사용 이유: 1) 어떤 단어나 문장에 대한 구체적인 부연 설명

                             2) 임시로 코드 수행 막음

// 주석이 짧은 문장일 경우

/*
주석이 
긴 문장일
경우
*/

 


사용자로부터 데이터 입력

 

// 정수를 입력받아 x5한 값 출력

#include <stdio.h>

int main() {
	int input = 0;
	scanf_s("%d", &input);
	int result = input * 5;
	printf("result : %d", result);
	return 0;
}

 

//문자열 한글자 입력받아(아스키코드 이용) 숫자로 출력

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	char c;
	scanf("%c", &c);   
	printf("%d", c); 
	return 0;
}

CHAPTER 3. 변수

 

✔️변수

변수란 변경이 가능한 수를 의미한다. 변수에는 어떤 값이 들어갈 지 예측할 수 없다.

우리가 사용할 메모리 공간에 이름을 부여한 것이 변수이다. 주소값을 기억하기보다는 의미있는 이름을 기억하는 것이 쉡기 때문.

 

 

✔️메모리 영역

 

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

  • 코드 영역 : 실행 명령어들 저장
  • 스택 영역 : 지역변수 및 매개변수 저장 (stack구조 - LIFO)
  • 힙 영역 : 프로그래머가 직접 할당(queue구조  - FIFO)
  • 데이터 영역 : 전역변수, static 변수 저장

 

 

 

✔️콜스택 메모리의 적용

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

 

 

 

 

 

<원시 타입 데이터>

변수 a에는 10이 저장된 콜스택 메모리의 주소값이 저장.

원시 타입의 데이터 값은 콜스택에 저장되고, 데이터 값이 저장된 콜스택의 주소값은 변수 a에 저장된다.

 

재할당을 할 경우 본인의 메모리에 있는 값을 변경하는 것이 아니라 기존에 20을 저장하고 있는 메모리의 주소값을 교체한다. 

 

<참조타입 데이터>

메모리 힙의 주소값이 저장된 콜스택의 주소값은 각각 b, c에 저장된다.

 

<가비지 컬렉터>

더이상 참조되지 않는 데이터는 가비지 컬렉터에 의해 적절한 시점에 메모리에서 해제한다.

 

 

 

 

CHAPTER 4. 자료형

 

효율적인 메모리 공간을 활용하기 위해 다양한 자료형을 사용한다.

기본 자료형

 

문자형 사용하기

char ch1 ='A';

 

숫자만 인식하는 컴퓨터는 문자를 표현하기 위해 특정 숫자와 특정 문자를 대응 시키는 방법을 사용한다=> 아스키코드

 

 

CHAPTER 5. 상수

 

✅상수

변하지 않는 수. 메모리 공간에 수가 존재하지만 그 값을 변경할 수 없다.

const int TEN = 10;

 

변수 선언에 const기호를 붙여주면 상수화된다. 단 주의할 점은 선언과 동시에 초기화해야 한다.