모두를 위한 컴퓨터 과학🧐_기초내용
⏰ 최종 업데이트 : @2020년 1월 18일
🧐2진법
컴퓨터 과학
컴퓨터 과학은 문제 해결에 대한 학문이다. 문제 해결은 입력(input) → 컴퓨터 과학 → 출력(output) 의 단계로 이루어진다.
입출력을 표현하기 위해서는 약속(표준)이 필요하며, 컴퓨터가 사용하는 표현 방법에는 2진법이 있다.
이진법
표현 방법에는 2진법, 8진법, 10진법, 16진법 등이 있다. 이 중 10진법이 우리가 일상에서 사용하는 것이며, 2진법이 컴퓨터가 사용하는 표현 방법이다.
2진법은 0과 1로만 데이터를 표현하며, 이 두가지의 숫자를 이용해서 글자, 사진, 영상, 소리 등을 저장할 수 있다. 10진법은 각 자리수를 10의 거듭제곱으로 표현하고, 2진법은 각 자리수를 2의 거듭제곱으로 표현한다.
- 10진법
3
을 2진법으로 표현하면11
로 표현할 수 있다. - 10진법
7
을 2진법으로 표현하면111
로 표현할 수 있다. - 10진법
8
을 2진법으로 표현하면1000
로 표현할 수 있다.
2진법은 on/off 상태를 통해 0과 1을 표현하며, 2진법에서 하나의 자릿수를 표현하는 단위를 비트(bit)라고 한다.
비트(bit)
정보의 저장, 연산 및 수행을 위해 컴퓨터는 비트라는 측정 단위를 쓴다. 이는 binary digit(이진숫자)의 줄임말로, 0과 1 두가지 값만 가질 수 있는 측정 단위이다.
비트열(=바이트(byte))
비트 한 개는 많은 양의 데이터를 표현하기에는 많이 부족하다. 때문에 비트열을 사용하는데, 이는 즉 바이트(byte)로 8개의 bit가 모여 만들어진 것이다. 즉 1byte에 8bit가 있고, 1bit에는 0과 1로 표현 가능하므로 총 256종류의 표현을 할 수 있다.
데이터의 표현
🧐정보의 표현
문자의 표현
컴퓨터는 문자를 숫자로 표현할 수 있다. 이 때 정해진 약속(표준)이 있고, 이것이 바로 ASCII(아스키코드, American Standard Code for Information Interchange)이다. 이는 총 128개(0~127)의 부호로 정의되어 있다.
2진법으로 A
를 표현하면, 10진법 기준으로 65
이므로, 2^6x1 + 2^5x0 + 2^4x0 + 2^3x0 + 2^2x0 + 2^1x0 + 2^0(=1) = (64+1) 로 나타내어 1000001
로 표현할 수 있다.
ASCII 코드 외에도 Unicode라는 표준에서는 더 많은 비트를 사용해서 보다 다양한 문자들뿐만 아니라 이모티콘 까지도 표현할 수 있다.
그림, 영상, 음악의 표현
스크린 속 작은 점들은 R(Red)
, G(Green)
, B(Blue)
총 3가지로 이루어져 있다. 이 작은 점 하나를 픽셀(pixel)이라고 부르고 각각의 픽셀은 3가지 색을 서로 다른 비율로 조합해서 특정 색을 갖는다. 이 숫자들을 표현하는 방식을 RGB(Red, Green, Blue)라고 하며, RGB로 표현된 그림 여러 개가 연속적으로 이어지면 영상이 된다.
🧐알고리즘
어떻게 입력에서 출력을 얻을 수 있을까? 컴퓨팅은 입력을 받아 그 입력을 처리한 후, 출력하는 과정이다. 알고리즘 입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열을 말한다.
→ 일련의 순서적 규칙들을 나열하는 방법에 따라 알고리즘의 종류가 달라지며, 출력값이 같아도 출력까지의 시간이 다를 수도 있다.
정확한 알고리즘
연락처에서 minsik이를 찾는다고 해보자. 연락처 공책의 첫 페이지를 펴서 찾는 것을 시작으로 minsik이가 나올때까지 or 연락처가 끝날 때 까지 이를 반복한다.
→ 알고리즘 평가 시 정확성도 중요하지만, 효율성도 중요하다. 즉 작업 완료까지 얼마나 시간과 노력을 덜 들일 수 있는지에 대한 것이다.
앞에서부터 한 페이지씩 찾는 방법은 정확성은 높아도 효율성은 떨어지는 알고리즘일 것이다.
⇒ 한 장을 넘긴 다음 또 다른 한 장을 넘기는 규칙들의 순서적 나열
정확하고 효율적인 알고리즘
우선 연락처의 가운데를 펴본다. 펼친 이 가운데에서 minsik를 찾으면 알고리즘은 끝이 나지만, 만약 찾지 못한다면 연락처는 이름순으로 정렬되어 있으므로 minsik는 이 중간 페이지를 기준으로 앞에 있는지 뒤에 있는지를 알 수 있다. 만약 뒷부분에 있다면 그 뒷부분에서 또 나머지 절반에 대해 이와 같은 알고리즘을 계속 수행해나가면 훨씬 효율적인 알고리즘이 된다.
⇒ 반을 줄이고, 다음 또 반을 줄이는 규칙들의 순서적 나열
🧐C기초
#include <stdio.h>
int main (void)
{
printf("C언어를 다시 배우고 있어요...\n");
}
int main (void)
는 시작한다
의 의미를 가지고 있다. #include <stdio.h>
는 "stdio.h"라는 이름의 파일을 찾아서 "printf()"함수에 접근할 수 있도록 해준다.
🧐문자열
scanf 함수
scanf함수는 값을 입력받는 함수이다.
#define _CRT_SECURE_NO_WARNINGS // scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
int main(void) {
char name[10];
printf("이름을 입력하세요.\n");
scanf("%s", name);
printf("안녕하세요. 당신의 이름은 %s이군요?\n", name);
return 0;
}
위 코드는 크기가 10인 char형 배열을 선언한 후, scanf()를 통해 사용자가 입력한 값을 name에 저장한다. 그 후 내가 입력한 이름이 무엇인지 출력을 통해 알려주는 코드이다. 결과는 다음과 같이 출력됨을 확인할 수 있다.
🧐조건문과 루프
조건문 if
조건문의 대표적인 예로는 if문이 있다. if문은 if ~ else구문이나 if~ else if구문으로 표현할 수 있다. if ~ else if 구문은 조건이 여러개 일 때 사용한다. 작성 예시는 다음과 같다.
int x = 2;
int y = 5;
if(x < y) {
printf("x is less than y\n");
} else if(x = y) {
printf("x is equal to y\n");
} else { //x > y
printf("x is more than y\n");
}
x<y이면 if구문이, x=y이면 else if 구문이, x>y이면 else 구문이 실행된다.
루프(반복문) while, for
루프는 무언가를 계속 반복하는 것을 의미한다. 보통 while문을 이용하여 루프문을 구현하고자 할 때에는 while문의 조건 안에 (true)를 넣어주면 된다. 그럼 코드에서 항상 참이 되는 조건을 통해 while문이 영원히 수행되게끔 한다.
특정 횟수만큼 반복할 수 있게 값을 정해줄 수 있다. 조건 횟수를 알아보기 위해 i를 선언한 후 i가 50보다 커지면 종료하는 코드를 작성해보자.
int i = 0;
while(i < 50) {
printf("hello, world\n");
i = i + 1; // i++와 같음
while문은 for문으로도 나타낼 수 있다. for문은 ()안에 변수 초기화
; 변수 조건
; 변수 증감
)을 넣어주면 된다. 위의 while문과 똑같은 코드를 작성해보자. for문은 while문에 비해 더 간단하게 코드를 표현할 수 있다.
for (int i = 0; i < 50; i++) {
printf("%d번째 반복중! \n", i);
🧐자료형, 형식 지정자, 연산자
데이터 타입
변수의 데이터 타입으로 사용할 수 있는 것들은 다음과 같다.
- bool : 불리언 표현ex). T or F, 1 or 0, yes, no)
- char : 문자 하나 ex). 'a', 'Q' '?'
- string : 문자열
- int : 특정 크기 or 특정 비트까지의 정수 ex). 100, 34.15
- float : 부동 소수점을 갖는 실수 ex). 3.141592...
- double : 부동소수점을 포함한 더 큰 실수
형식 지정자
printf함수에서는 각 데이터 타입을 위한 '형'을 사용할 수 있다.
- %c : char
- %f : float, double
- %i : int
- %li : long
- %s : string
- 이진법이미지 <출처. boostcourse <모두를 위한 컴퓨터 과학>>
- 데이터의 표현 이미지 <출처. boostcourse <모두를 위한 컴퓨터 과학>>
- 아스키코드 이미지 <출처. https://shaeod.tistory.com/228>
Author And Source
이 문제에 관하여(모두를 위한 컴퓨터 과학🧐_기초내용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@muz/SB저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)