프로그래밍의 기초에 대한 하버드 강의를 아직 보지 않으신 분은 여기로 가세요: https://javarush.com/quests/QUEST_HARVARD_CS50 =)
소개. CS50 코스 구조
친구! 소개 부분에서 우리는 CS50의 구조에 대해 여러분에게 (또는 누구에게나) 알려줄 것입니다. 이 과정은 12주 동안 진행됩니다. 매주 2회 강의가 진행되며, 각종 세미나와 설명도 진행됩니다. 강의가 준비되는대로 이와 같은 기사를 게시하겠습니다. 여기에는 강의에 대한 간략한 설명, "단편"에 대한 메모, 추가 정보 및 실제 과제의 번역이 포함됩니다. 제로위크 강의에서는 다음과 같은 내용을 다루었습니다.- 이진수 시스템.
- 아스키
- 알고리즘과 알고리즘적 사고
- 컴파일러
- 스크래치 언어
- 부울 표현식
- 정황
- 사이클
- 변수
- 기능
- 배열
- 스트림
- 이벤트
- 정보가 디지털 방식으로 표현되는 방식을 이해합니다.
- 기본적인 소프트웨어 구성과 개념을 알아보세요.
- 스크래치를 사용하여 자신만의 애니메이션, 게임 또는 대화형 활동을 만들어 보세요.
- 친구에게 깊은 인상을 주세요 =).
CS50 0주차(강의 1-2): 노트
알고리즘
우리는 여러분이 이미 강의를 시청하고 알고리즘이 문제(다양한 문제, 수학적 문제 또는 "지하철 N 역에 가는 방법")의 해결책을 단계적으로 분류한다는 것을 이해하셨기를 바랍니다. 게다가 각 단계는 유한한 시간 내에 완료되어야 하며, 그 자체에도 일정한 수의 단계가 있어야 합니다. 또한 다음 단계는 이전 단계에 따라 달라집니다. 예를 들어 여기에서 알고리즘에 대한 자세한 내용을 읽을 수 있습니다 . 영어를 아신다면 여기 David Malan의 멋진 TED 애니메이션이 있습니다: https://youtu.be/6hfOvs8pY1k 일반적으로 비디오의 정보는 강의의 정보와 동일하지만 =).이진수 체계
우리는 손가락이 10개이고 시스템은 십진수입니다. 즉, 숫자 0, 1, 2, 3, 4, 5, 6, 7, 8, 9를 사용하여 아무리 큰 숫자라도 표현할 수 있습니다. 숫자에서 숫자가 어디에 있는지에 따라 다음을 의미할 수 있습니다. 다른 점: 이 숫자가 마지막이면 단위 자리에 있고, 끝에서 두 번째 숫자는 10의 자리에 있고, 더 왼쪽에 있으면 백의 자리에 있는 식입니다. 기본적으로 모든 숫자는 숫자의 합으로 쓸 수 있으며 각 숫자에 10을 곱하여 특정 거듭제곱을 곱합니다. 단위의 경우 - 0입니다. 예를 들어 1573 = 3*10 0 + 7*10 1 +5*10 2 +1*10 3 입니다. 숫자에 곱해지는 숫자를 숫자 체계의 밑수라고 합니다. 십진법의 경우 밑은 논리적으로 10입니다. 컴퓨터에는 손가락이 없지만 조건부로 "전류가 흐르고 있습니다"와 "전류가 흐르지 않습니다", 0과 1의 두 가지 상태가 있습니다. 따라서 컴퓨터 메모리의 모든 숫자(및 일반적인 정보)는 0과 1이라는 두 자리 숫자로만 구성됩니다. 십진수 체계의 경우와 마찬가지로 해당 위치는 숫자를 나타냅니다. 이제 숫자는 10의 거듭제곱이 아닌 2의 거듭제곱을 곱한 숫자의 합으로 분해될 수 있습니다. 0 이진수 = 0 1 이진수 = 1 2 이진수 = 10 7 10 =111 2 이진수를 십진수로 변환하는 방법을 알아보세요. 아마도 여러분은 이것이 어떻게 수행되는지 이미 이해하고 있을 것입니다. 가장 오른쪽 숫자부터 시작하여 숫자의 숫자에 해당 숫자에 해당하는 거듭제곱을 곱하고 각 숫자에 모든 것을 더하면 됩니다. 예: 이진수 101101의 십진수 아날로그를 찾아보겠습니다. 2 가장 오른쪽의 숫자 = 1*2 0 다음 0 = 0*2 1 오른쪽에서 세 번째 = 1*2 2 네 번째 = 1*2 3 .. 등등 101101 2 = 1*2 0 + 0*2 1 + 1*2 2 + 1*2 3 + 0*2 4 + 1*2 5 = 1 + 0 + 4 + 8 + 0 + 32 = 45 10 8개의 전구가 일렬로 배열되어 있다고 상상해 보십시오. 그들 각각에는 자체 스위치가 있습니다. 각 전구는 방전입니다. 무엇을 상상할 수 있습니까? 첫 번째 강의를 기억하거나(그러한 장치가 있음) 여기에 위젯이 있습니다: http://cdn.cs50.net/2016/x/pset/0/pset0/bulbs.html 재생 그것으로 이진 시스템을 "느끼는" 연습을 하세요. 10진수를 2진수로 변환합니다. 본질을 이해한다면 여기에서도 모든 것이 매우 간단합니다. 여기에 숫자 57 10 이 있습니다 . 이진법으로 변환하려면 이 숫자를 초과하지 않는 최대 2의 거듭제곱이 무엇인지 결정해야 합니다. 2 6 = 64. 이것은 분명히 너무 많은 것입니다. 그러나 2 5 = 32. 이제 우리는 최대 유효 숫자를 결정했습니다. 32 10= 100000 2 . 이제 우리는 다음 숫자를 찾고 있습니다. 57-32 = 25. 이제 25에 대해 우리는 25를 초과하지 않는 2의 거듭제곱을 찾고 있습니다. 2 4 = 16. 이는 다음 숫자도 1과 같다는 것을 의미합니다. 32+16 = 48 10 = 110000 2 . 57 – 48 = 9. 2 3 = 8, 이는 9보다 작습니다. 이는 다음 숫자도 1이 된다는 것을 의미합니다. 32 + 16 + 8 = 56 10 = 111000 2 . 57-56 = 1, 즉 2 0 의 거듭제곱만 남습니다 . 따라서 57 10 = 111001 2 입니다 . 갑자기 뭔가 불명확하게 남는다면 위키북에서 더 읽어보실 수 있고, 영어에 능숙하신 분이라면 여기에 강의에 대한 작은 추가사항을 올려드립니다.아스키
컴퓨터는 0과 1만 이해하며 컴퓨터의 메모리는 위에서 본 것처럼 스위치가 있는 매우 긴 전구 문자열로 표시될 수 있습니다. 우리는 이미 컴퓨터에서 숫자를 표현하는 방법을 알고 있습니다. 나머지 정보는 어떻습니까? 편지, 그림? 영어 알파벳에는 26개의 글자가 있다고 가정해 보겠습니다. 즉, 이론적으로는 이진법으로만 0부터 25까지의 숫자로 문자를 표현할 수 있습니다. 다음과 같은 질문이 생깁니다. 소문자인지 대문자인지 어떻게 알 수 있습니까? 구두점은 어떻습니까? 공백과 같은 보이지 않는 기호? 간단히 말해서 코딩 시스템이 필요합니다, 캡! 1960년대에는 문자를 인코딩하는 다양한 방식이 있었습니다. 균일성의 부족이 문제로 판명되었고, 1963년에 미국 표준 협회(ANSI)가 ASCII(정보 교환을 위한 미국 표준 코드) 인코딩 방식을 개발하여 도입했습니다. 각 ASCII 문자는 7비트 또는 7비트로 구성되며 각 비트는 0 또는 1의 값을 가질 수 있습니다. 7비트는 0부터 127까지의 숫자를 이진수로 저장할 수 있습니다. 즉, 문자를 인코딩하는 데 사용할 수 있는 숫자는 128개입니다. 이 정도면 영어로 된 음성을 인코딩하기에 충분할 것 같나요? 계산해 봅시다: az - 26개 옵션 AZ - 26개 더 0-9 - 10 ,;:~& 및 기타 구두점 - 32 그리고 공백이 하나 더 있습니다. 총계 - 95자. 나머지 33개의 빈 옵션은 라인 피드 또는 캐리지 리턴과 같은 소위 제어 문자에 사용됩니다 : https://ru.wikipedia.org/wiki/ASCII#/media/File:ASCII_Code_Chart.svg 문자 0-9 및 숫자 값 0-9. 문자 0-9는 ASCII 값 48-57로 표시됩니다. 이러한 ASCII 값의 가장 오른쪽 4비트가 숫자 값 0-9의 이진 표현이라는 점은 흥미롭습니다. 이는 ASCII 값과 실제 숫자 값을 변환하는 방법을 다소 단순화합니다. 프로그래밍을 시작해볼까요?할퀴다
그럼, 스크래치. 강의에서 이 시각적 프로그래밍 언어와 기본 명령에 대해 배웠습니다. 스크래치를 직접 사용해 보려면 링크를 따라가서 “가입”을 클릭하세요. 등록이 완료되면 온라인으로 프로그래밍을 시작할 수 있습니다. 네, 그런데 오늘날 스크래치는 부분적으로 러시아화되었습니다. 그러나 도움말은 여전히 영어로 제공됩니다. 원한다면 강의에서 시연했던 학생 프로젝트의 코드를 플레이하고 볼 수도 있습니다. 피카츄 페스트리 캐치 입니다 . 또는 폐기물을 여러 용기에 분류하는 프로젝트: https://scratch.mit.edu/projects/71161586/ David와 회사는 그렇게 복잡한 프로젝트를 수행할 수 없다고 생각하더라도 걱정하지 말라고 요청합니다. 이 수준에는 이미 약간의 기술이 필요합니다. .운동
-
스크래치에서 발생하는 프로세스를 더 잘 이해하려면 여기에서 여러 프로젝트의 소스 코드를 다운로드할 수 있습니다 . 놀면서 보세요. 다른 사람의 코드를 배우는 것은 매우 유용합니다. 이것은 자신이 아직 성숙하지 않은 프로그램 내부에 무엇이 있는지 알아내는 가장 좋은 방법 중 하나입니다. 이러한 애플리케이션의 작동 방식을 이해하기 시작하면 안전하게 진행할 수 있습니다.
-
이제 스스로 무언가를 할 시간입니다. 도전은 처음부터 작은 프로젝트를 구현하면서 재미있게 지내는 것입니다. 애니메이션, 게임, 대화형 액션이 될 수 있습니다.
- 프로그램에는 최소한 두 개의 스프라이트(문자, 이미지)가 포함되어야 하며, 그 중 하나는 고양이가 아니어야 합니다 =).
- 스크립트(작업)가 3개 이상 있어야 합니다.
- 최소한 하나의 조건, 하나의 루프 및 하나의 변수를 실행해야 합니다.
- 프로그램에는 최소한 하나의 사운드가 포함되어야 합니다.
GO TO FULL VERSION