JavaRush /Java Blog /Random-KO /CS50 강의 추가 자료: 0주차(강의 1 및 2)
Bender
레벨 1
Маунтин-Вью

CS50 강의 추가 자료: 0주차(강의 1 및 2)

Random-KO 그룹에 게시되었습니다
프로그래밍의 기초에 대한 하버드 강의를 아직 보지 않으신 분은 여기로 가세요: https://javarush.com/quests/QUEST_HARVARD_CS50 =)

소개. CS50 코스 구조

CS50 강의 추가 자료: 0주차(강의 1 및 2) - 1친구! 소개 부분에서 우리는 CS50의 구조에 대해 여러분에게 (또는 누구에게나) 알려줄 것입니다. 이 과정은 12주 동안 진행됩니다. 매주 2회 강의가 진행되며, 각종 세미나와 설명도 진행됩니다. 강의가 준비되는대로 이와 같은 기사를 게시하겠습니다. 여기에는 강의에 대한 간략한 설명, "단편"에 대한 메모, 추가 정보 및 실제 과제의 번역이 포함됩니다. 제로위크 강의에서는 다음과 같은 내용을 다루었습니다.
  • 이진수 시스템.
  • 아스키
  • 알고리즘과 알고리즘적 사고
  • 컴파일러
  • 스크래치 언어
  • 부울 표현식
  • 정황
  • 사이클
  • 변수
  • 기능
  • 배열
  • 스트림
  • 이벤트
0주차 목표:
  • 정보가 디지털 방식으로 표현되는 방식을 이해합니다.
  • 기본적인 소프트웨어 구성과 개념을 알아보세요.
  • 스크래치를 사용하여 자신만의 애니메이션, 게임 또는 대화형 활동을 만들어 보세요.
  • 친구에게 깊은 인상을 주세요 =).

CS50 0주차(강의 1-2): 노트

알고리즘

CS50 강의 추가 자료: 0주차(강의 1 및 2) - 2우리는 여러분이 이미 강의를 시청하고 알고리즘이 문제(다양한 문제, 수학적 문제 또는 "지하철 N 역에 가는 방법")의 해결책을 단계적으로 분류한다는 것을 이해하셨기를 바랍니다. 게다가 각 단계는 유한한 시간 내에 완료되어야 하며, 그 자체에도 일정한 수의 단계가 있어야 합니다. 또한 다음 단계는 이전 단계에 따라 달라집니다. 예를 들어 여기에서 알고리즘에 대한 자세한 내용을 읽을 수 있습니다 . 영어를 아신다면 여기 David Malan의 멋진 TED 애니메이션이 있습니다: https://youtu.be/6hfOvs8pY1k 일반적으로 비디오의 정보는 강의의 정보와 동일하지만 =).

이진수 체계

CS50 강의 추가 자료: 0주차(강의 1 및 2) - 3우리는 손가락이 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 입니다 . 갑자기 뭔가 불명확하게 남는다면 위키북에서 더 읽어보실 수 있고, 영어에 능숙하신 분이라면 여기에 강의에 대한 작은 추가사항을 올려드립니다.

아스키

CS50 강의 추가 자료: 0주차(강의 1 및 2) - 4컴퓨터는 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 값과 실제 숫자 값을 변환하는 방법을 다소 단순화합니다. 프로그래밍을 시작해볼까요?

할퀴다

CS50 강의 추가 자료: 0주차(강의 1 및 2) - 5그럼, 스크래치. 강의에서 이 시각적 프로그래밍 언어와 기본 명령에 대해 배웠습니다. 스크래치를 직접 사용해 보려면 링크를 따라가서 “가입”을 클릭하세요. 등록이 완료되면 온라인으로 프로그래밍을 시작할 수 있습니다. 네, 그런데 오늘날 스크래치는 부분적으로 러시아화되었습니다. 그러나 도움말은 여전히 ​​영어로 제공됩니다. 원한다면 강의에서 시연했던 학생 프로젝트의 코드를 플레이하고 볼 수도 있습니다. 피카츄 페스트리 캐치 입니다 . 또는 폐기물을 여러 용기에 분류하는 프로젝트: https://scratch.mit.edu/projects/71161586/ David와 회사는 그렇게 복잡한 프로젝트를 수행할 수 없다고 생각하더라도 걱정하지 말라고 요청합니다. 이 수준에는 이미 약간의 기술이 필요합니다. .

운동

  1. 스크래치에서 발생하는 프로세스를 더 잘 이해하려면 여기에서 여러 프로젝트의 소스 코드를 다운로드할 수 있습니다 . 놀면서 보세요. 다른 사람의 코드를 배우는 것은 매우 유용합니다. 이것은 자신이 아직 성숙하지 않은 프로그램 내부에 무엇이 있는지 알아내는 가장 좋은 방법 중 하나입니다. 이러한 애플리케이션의 작동 방식을 이해하기 시작하면 안전하게 진행할 수 있습니다.

  2. 이제 스스로 무언가를 할 시간입니다. 도전은 처음부터 작은 프로젝트를 구현하면서 재미있게 지내는 것입니다. 애니메이션, 게임, 대화형 액션이 될 수 있습니다.

프로젝트 요구사항:
  • 프로그램에는 최소한 두 개의 스프라이트(문자, 이미지)가 포함되어야 하며, 그 중 하나는 고양이가 아니어야 합니다 =).
  • 스크립트(작업)가 3개 이상 있어야 합니다.
  • 최소한 하나의 조건, 하나의 루프 및 하나의 변수를 실행해야 합니다.
  • 프로그램에는 최소한 하나의 사운드가 포함되어야 합니다.
즉, 본질적으로 귀하의 프로젝트는 강의에 작성된 것보다 더 복잡하지만 피카츄 및 쓰레기 수거에 대한 시연 장난감보다 간단합니다. 따라서 귀하의 프로젝트에서는 스크래치 코드를 구성하는 수십 개의 퍼즐을 사용할 것입니다. 문제가 해결되지 않으면 문제 해결에 대한 접근 방식을 변경해야 할 수도 있습니다. 가장 중요한 것은 두려움 없이 가는 것입니다! 댓글로 질문하고 프로젝트를 공유해 주세요.

스크래치: 빠른 실행 가이드

스프라이트는 프로젝트의 중심 개체입니다. 고양이, 비행기, 공 등 모든 캐릭터는 스프라이트입니다. 두 마리의 다른 고양이를 추가했다면 이는 두 개의 다른 스프라이트가 됩니다. CS50 강의 추가 자료: 0주차(강의 1 및 2) - 6각 스프라이트에는 해당 동작을 설명하는 스크립트가 있습니다. 액션 블록입니다. 의상은 사물의 모습입니다. 스프라이트 자체는 본질적으로 단지 그림일 뿐입니다. 각 스프라이트는 여러 의상을 가질 수 있습니다. 스프라이트를 만들려면 스크래치 라이브러리에서 원본 의상을 선택하거나, 내장 편집기에서 직접 그림을 그리거나, 이미지를 업로드하거나, 웹캠을 사용하여 사진을 찍어 업로드해야 합니다. 모든 스프라이트는 소위 무대에 배치됩니다. 무대는 본질적으로 프로그램의 배경이자 캔버스입니다. 라이브러리의 사운드를 스프라이트나 장면에 첨부할 수도 있고, 로드하거나 마이크를 사용하여 직접 녹음할 수도 있습니다. 프로그램 실행을 시작하려면 장면 창의 오른쪽 상단에 있는 녹색 플래그를 클릭해야 합니다. 하지만 이 작업을 수행하기 전에 프로그램에 다음 블록을 배치해야 합니다. CS50 강의 추가 자료: 0주차(강의 1 및 2) - 7그리고 디자이너 부분처럼 여기에 일부 블록을 연결해야 합니다. 예: CS50 강의 추가 자료: 0주차(강의 1 및 2) - 8이 경우 깃발을 클릭하면 액션이 연결된 스프라이트가 50걸음과 야옹 소리를 냅니다. 우리에게는 많은 블록이 있습니다. 스크립트, 의상, 사운드의 세 가지 탭으로 나누어져 있습니다. 조건을 갖는 간단한 프로그램을 만들어 봅시다. 그것이 이루어지면 고양이는 야옹거리고, 이루어지지 않으면 침묵을 지킨다. 연산자는 녹색으로 표시됩니다. 조건이 참인지 거짓인지 테스트하는 테스트에는 측면에 날카로운 모서리가 있습니다. 상태 테스트 구조와 루프는 주황색으로 표시됩니다. 여기에는 다른 블록을 배치할 수 있는 특별한 구멍이 있습니다.

주기:

무한 반복: CS50 강의 추가 자료: 0주차(강의 1 및 2) - 9특정 횟수만큼 반복: CS50 강의 추가 자료: 0주차(강의 1 및 2) - 10조건이 충족되면 작업 반복: CS50 강의 추가 자료: 0주차(강의 1 및 2) - 11데이터 블록에서 변수를 생성할 수 있습니다. 아래 예에서는 변수 x를 만들었고 즉시 이를 사용하여 수행할 수 있는 작업이 있었습니다. 모든 스프라이트 또는 하나의 변수 범위를 설정할 수 있습니다. CS50 강의 추가 자료: 0주차(강의 1 및 2) - 12녹색 깃발만이 유일한 행동은 아닙니다. 또한 이벤트 섹션에서는 다양한 제어 조건을 찾을 수 있습니다. 예를 들어, 마우스로 버튼을 클릭하거나 스프라이트 자체를 클릭할 때 수행할 작업을 선택할 수 있습니다. 추가 정보가 필요한 경우 여기에서 찾을 수 있습니다 .

또 뭐야?

인터넷 접속이 부족한 경우 https://scratch.mit.edu/scratch2download/ 에서 오프라인 스크래치 편집기를 다운로드하는 것이 좋습니다 . 그런 다음 파일 > 컴퓨터에서 업로드를 사용하여 프로젝트를 http://scratch.mit.edu/ 에 제출하는 것을 잊지 마세요 .
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION