본문 바로가기

CS 기초9

[C언어] 포인터 포인터의 정의와 연산자 정의 어느 변수에 대하여 메모리의 시작 주소를 값으로 담고 있는 변수 연산자 참조 연산자: *(asterisk)를 포인터 변수에 써서 해당 변수가 다른 변수를 참조하기 위해 쓴다. 이 연산자를 통해 해당 변수가 "포인터"임을 알린다. 주소 연산자: &(ampersand)를 실제 할당할 변수 앞에 써서 그 변수의 시작 주소를 할당하기 위해 쓴다. 코드와 결과 코드 #include int main(void) { int a; // a라는 변수를 초기화 int *ptr = &a; // a의 시작 주소(&)를 ptr이라는 포인터에 참조(*)한다. a = 10; // printf("a is %d\\n", a); printf("&a is %p\\n", &a); printf("&ptr is %p.. 2023. 6. 4.
[CS50 2019] (C언어) 문자열 머리말 참고 자료 모두를 위한 컴퓨터 과학 (CS50 2019) > 2) 문자열 : 부스트코스 get_string과 string get_string 함수 스크래치의 say의 기능은 c언어의 get_string과 유사하다 string 문자열(string)은 프로그래밍에서 단어나 구절, 문장을 말하는데 숫자와는 다른 형태를 갖고 있다 값 입력 타입 명시 c언어는 변수 이름 앞에 저장하고 하는 값의 종류가 적혀야 한다. string answer = get_string("What's your name?\\n"); = 연산자 수학에서 =는 동등하다는 뜻이지만, 프로그래밍에서는 우항을 좌항에 대입(할당)하는 의미이다. 값 출력 printf 함수와 형식 지정 문자(%) 출력 함수에서 원하는 변수를 출력하려면 형식 지.. 2023. 5. 27.
[CS50 2019] (C언어) C 기초 머리말 참고 자료 모두를 위한 컴퓨터 과학 (CS50 2019) > 1) C 기초 : 부스트코스 C언어에서 배울 내용 소개 functions conditions Boolean expressions loops C언어 작성 hello.c 파일 hello world 출력 코드 #include int main(void) { printf("hello, world!"); } printf printf에서 f는 format(형식)을 뜻한다 괄호 안의 문장을 출력하라는 뜻 include 작성한 함수가 어디서 저장되어 있는지를 알려주어야 한다 stdio.h 파일을 참고하라는 뜻 컴파일러와 파일 실행 컴파일러(compiler) 저번 시간에 배운 이진법에 의하면, 컴퓨터는 0과 1만 이해한다. C 언어 또한 이해하지 못함. .. 2023. 5. 27.
[CS Basics] 32비트의 주솟값과 메모리 크기 머리말 글을 쓰게 된 이유 슬랙에서 32비트에 관련된 질문이 올라와서 이에 대한 답변을 정리하면서 블로그를 올리게 되었다. 질문과 답변 질문 표현의 단위와 용량이 헷갈리고 잘 이해가 안갑니다. 32bit 는 4byte인데, 32bit 레지스터는 2^32로 42억개의 주소를 가질 수 있습니다. 그런데 4byte는 영문 4글자정도 표현이 고작인데 42억개의 주소를 가질 수 있는 용량인 게 무엇인가요? 나의 답변 CPU와 메모리의 구조 이건 컴퓨터 구조에 대해 좀 알아야 이해할 수 있을 것 같습니다. CPU와 메모리의 구조가 어떻게 작동하는지를 봐야할 것 같아요. 한번 그림을 그려봤는데 우선 32비트 아키텍처는, CPU의 레지스터가 처리하는 "주소값의 길이"가 32비트여서 $2^{32}$가지로 표현이 가능합니.. 2023. 5. 27.
[CS50 2019] (컴퓨팅 사고) 알고리즘 이전 강의에서는 이진법으로 컴퓨터에 정보를 표현하는 방식을 배웠다. 그 중에서도 문자나 색상을 표현하는 방식을 알아 보았다. 이번에는 이러한 정보를 어떠한 논리적인 과정을 통해 필요한 정보로 가공되는지 알아 보자. [CS50 2019] (컴퓨팅 사고) 정보의 표현 앞선 강의에서는 컴퓨터가 어떻게 정보를 표현하는 방법에 대해 알아 보았다. 이번에는 컴퓨터가 실제로 문자나 사진, 음악, 동영상 등의 다양한 정보를 처리하는 방식에 대해 알아 보자. 📌 문 andy-archive.tistory.com 📌 알고리즘(Algorithm) 알고리즘은 문제를 해결하기 위해 설계한 논리 과정이다. In a concept of problem solving, algorithm is just a step by step inst.. 2023. 4. 6.
컴퓨팅 사고) 정보의 표현 (in CS50 2019) 목차 앞선 포스팅에서는 컴퓨터가 이진법으로 정보를 표현하는 방법에 대해 알아 보았다. 이번에는 컴퓨터가 실제로 문자나 사진, 음악, 동영상 등의 다양한 정보를 처리하는 방식에 대해 알아 보자. 1. 문자의 표현 이진법(binary)를 통하여 컴퓨터로 문자를 표현할 수 있다. 예를 들어, Andy라는 단어를 표현하고 싶으면 십진법으로 65 110 100 121 로 표현할 수 있다. 그 중 $A$는 이진법으로 $1000001_{(2)}$로 표현할 수 있다. 어떻게 이렇게 표현할까? 바로 아스키(ASCII)를 이용하면 이렇게 표현이 가능하다. (1-1) 아스키/아스키 코드 미국 정보 교환 표준 부호(ASCII; American Standard Code for Information Interchange) 아스키.. 2023. 4. 5.
[논리 회로] NOT과 OR, AND, XOR의 구현 이진법에 대한 개념을 배워서 실제로 논리 게이트(logic gate)로 이진법이 컴퓨터에서 어떻게 실제로 계산되는지 알아 보았다. [CS50 2019] 컴퓨팅 사고 - 이진법 [CS50 2019] (컴퓨팅 사고) 이진법 컴퓨터 과학이 무엇인지 알아 보자. 사람이 정보를 어떻게 표현하는지 생각해 보고, 컴퓨터는 정보를 어떻게 표현할 수 있는지 그 방법에 대해 알아 보자. 📌 컴퓨터 과학(Computer Science) 강의에 andy-archive.tistory.com 📌 NOT $\mathrm{NOT}$은 입력 값이 $0$이면 $1$, $1$이면 $0$으로 바꿔 출력한다. +-----------+ | NOT table | +-----------+ | IN = OUT | +-----------+ | 0 =.. 2023. 3. 31.
[CS50 2019] (컴퓨팅 사고) 이진법 컴퓨터 과학이 무엇인지 알아 보자. 사람이 정보를 어떻게 표현하는지 생각해 보고, 컴퓨터는 정보를 어떻게 표현할 수 있는지 그 방법에 대해 알아 보자. 📌 컴퓨터 과학(Computer Science) 강의에서 교수님은 컴퓨터 과학에 대해 아래와 같이 설명했다. What is computer science? It's just a process of solving problem. 컴퓨터 과학은 무엇일까? 이것은 문제를 해결하는 과정일 뿐이다. 컴퓨터 과학이 문제를 해결하는 과정이라면, '문제를 해결하는 과정'은 과연 무엇일까? 어떠한 문제를 입력(input) 받아 적절한 답안의 출력(output)을 구하는 문제 해결 과정(a process of solving problem)이라 할 수 있다. Inputs a.. 2023. 3. 26.
[CS50 2019] 모두를 위한 컴퓨터 과학 OT 현재 자료구조와 알고리즘, 운영체제를 조금씩 공부하는데 틈틈이 막히는 부분이 있다. 비전공자로서 CS 과목을 공부하는 게 쉽지 않은데 적절한 강좌를 찾았다. 바로 하버드대학교 데이비드 맬런 교수의 '모두를 위한 컴퓨터 과학(CS50)'이다. 네이버 부스트코스에 한글 자막과 함께 무료로 공개되어 있으며, YouTube에도 원본 영상이 있다. 자세한 링크는 아래에 적어 두었다. 이왕 CS 과목 공부하는 김에 기초부터 확실히 해 보자는 생각에 수강하게 되었다. 이미 아는 내용도 있긴 하지만 복습의 기회로 삼기로 했다. 모두를 위한 컴퓨터 과학 (CS50 2019) 강좌소개: 부스트코스 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 부스트코스에서 Top3.. 2023. 3. 25.
반응형