[음악 재생] DAN AMRMENDARIZ : 모두, CS50 세미나에 오신 것을 환영합니다, 스위프트와 아이폰 OS 앱 개발. 나는 댄 Armendariz 해요, 내가 훈계 해요 여기 하버드에서 컴퓨터 과학의. 그리고 다음 시간이 될 것입니다 많은 물건의 회오리 바람 투어 이 주제에 대해 우리가 들어갈 수있다. I는 모든 소스 코드를 작성한다 온라인 오늘 볼 수있다. 우리는하지 못할 수 있습니다 실제로 모든 가서 나는 난 것을 요하는 것이 이 시간에 당신을 게재합니다. 그러나 적어도 희망을 통해 소스 코드 코멘트 당신은 파악하려고 할 수 있습니다 무엇을 정확하게 그 일에 대해 무슨 일이 일어나고 우리는 아주에 도착하지 않습니다. 의 전반적 구조 다음과 같이 오늘의 이야기가 될 것입니다. 우리는 몇 가지 기본적인 일을 밖으로 시작합니다 스위프트의 언어와 문법, 고급의 일부에가는 스위프트 언어의 구문. 언어 때문에 정말 현대적이고 그 것이다 높은 수준을 많이 가지고 기능, 우리가하지 않은 일 , CS50에 걸쳐 C에서 볼 또는 심지어 일부 다른 언어 우리는 시작했는지 같은 PHP CS50에 사용, 그래서 나는 시도해야 할 것입니다 또한 몇 가지 주제를 소개하는 더 높은 레벨의 언어와 관련된 당신이 CS50에 깊이 볼 수 있음, 하지만 당신은 나중에 볼 수 있습니다 컴퓨터 과학 수업. 그래서이 될 것 단단히 시간을 포장. 그리고 나를 보자 주시기 바랍니다 당신은 질문이있는 경우에는 알고있다. 당신이 관심이 있다면 개발을하고있는 스위프트와, 또는 정말 모든 iOS 앱 개발, 요구 사항의 몇 가지 있습니다. 첫째, 당신이 사용되어야한다 맥, 예에서 실행 오늘날 우리가 사용하고있는 것으로려고하고있다, OS의 비교적 새로운 버전 이 경우 X를, 나는 X 10.5을 실행하고 있습니다. 당신이 원하는 경우 10.11을 실행 할 수 있습니다. 그러나 모든 것을 당신이 거라고 나중에 엑스 코드 7을 포함한다 참조 이는 최신 버전이 스위프트 2.0 스위프트,의. 이것은 실제로 꽤입니다 중요한 차이점. 구문의 많은있다 꽤 크게 변경 스위프트 1.0 어떤 경우에는, 작년에 출시 된, 스위프트 2.0에있는 바로 이번 가을에 나왔다. 그래서 우리는 스위프트 2.0을 보여줄 것입니다. 많은 것들이 그 온라인 검색 당신은 추가려고 할 때 다양한 물건에 대한 정보, 명시 적으로 수행 할 수 있습니다 스위프트 2를 검색 오히려 그냥 평범한 오래된 스위프트보다 만들기 위해 당신이 구문이 올 수 있는지 확인하십시오. 사실, 이는 일반적으로 사실이다. 개발의 빠른 양이있다 스위프트 언어에서 일어나는 애플은 출시 이후로, 나는 생각한다 무엇, 그것은 년 이상 조금이었다 지금. 그리고 일이 변경되었습니다 극적으로 그 시간에. 그래서 좌절하지 말라 경우에, 당신은 주위를 찾고있을 때 어떻게 달성하는 스위프트거나 주제에 대해 몇 가지 예제 코드를 사용하여 뭔가 또는 뭔가 그렇지 않습니다 그 실제로 스위프트 2.0에서 작동합니다. 당신이 찾고 확인 특히 해당 버전 다른 효과를 최소화하려고 버전과 사물의 그 종류. 난 그냥 몇 가지를 지적하려고합니다 이전 버전에 차이가있다. 하지만 조심하는 뭔가. 그건 아마 될 것 가장 큰 두통 중 하나 당신은 스위프트와 함께해야합니다 발견된다 , 다만 오래된 예제 코드 몇 개월, 사용하려고 그것은 당신의 더 현대적인 프로젝트. 그리고 그것은 단지 작동하지 않습니다. 당신은 컴파일러 오류를 받고있어, 구문 오류, 미친 것들의 모든 종류. 그러니 그냥 환자 수 즉, 당신은 희망 것 꽤 좋은 경험을 가지고 스위프트 전체와. 지금 당신은 join-- 실제로 할 수 있고 나는 희망 우리는 실제로 여전히이 연도 -이 CS (50)의 애플 앱 개발 팀, 어느 당신이 어떤 응용 프로그램을 설치할 수 이는 당신이 당신의 iOS 기기에서 만들 수 있습니다. 그래서이 URL의 경우를 살펴 당신은 그 일에 관심이 있습니다. 그렇게 단지 몇 스위프트 자체에 대한 것. 그것은 컴파일 된 언어입니다. 하지만 당신은 그 일부를 볼 수 있습니다 우리가 사용하는 기능 그것은 비트에서 사용할 수 있도록 이 방법으로도 해석처럼. 구문의 많은 빌려 C.에서 그것은 기반으로하고 C로 작성 그래서 우리는 그것을 볼 수 있습니다 테이크 아웃 많이있다 기존의 지식에서 C에서 우리는 스위프트에 포트 할 수 있습니다. 하지만 일이있다 그 C.에서 매우 다른 확인 그것은 매우 강력한 형식입니다. 자동 메모리 관리가있다. 당신은해야 할 것 아니에요 malloc에​​ 또는 무료로 어디를 사용합니다. 그것은 보편성을 위해 설계되었습니다. 그래서 다른 말로하면, 당신은 그것을 사용할 수 있습니다 애플 시계에서 컨텍스트의 모든 종류, 아이폰에있는 모든 방법 OS X 및 최대 심지어 일부 서버, 심지어 일부 스크립트. 그러나 우리는 그것을 볼 수 있습니다 스크립트에 대한 지원 확실히이 아직 그대로 그것은 다른 언어이다. 그래서 가장 가능성이 당신이 사용하고있을 것이다 이 독점적으로 개발 Mac 또는 아이폰에. 그리고 그것은 현대적인 기능이 많이 있습니다. 그리고이 많은 것들을 물건 것을 우리는 오늘 해결하기 위해 시도 할거야 뿐만 아니라 우리의 주제 솔직히 그, 우리는 전체 과정을 바칠 수 있습니다. 사실이며, CS (51), 제공되는 다음 학기, 이 주제에 많은 초점을 맞추고 그 아래에 설명되어 있습니다. 그래서 당신은 전체 학기를 보낼 수 있습니다 이러한 것들을 이해. 그러나 우리는 시도 할거야 그들을 통해 얻을 수 적어도 충분히 그 무엇을 이해할 수있다 당신이 보는 경우에가는 스위프트 프로그램에서 그리고 당신의 방법을 해킹 할 수 최종 프로젝트는을 통해. 가장 좋은 방법 중 하나 이제 당신이 할 수 이에 대한 자세한 정보를 얻을 수 다만 애플의를 통해 솔직히입니다 스위프트에 대한 설명서를 제공했다. API가 많이있다 사용할 수 있는지. 그리고 이것은 당신을위한 좋은 가정 기지 특정 물건을 찾기 위해 당신 아이폰 OS와 관련된 API를 수행 할. 당신이 카메라를 사용하려면 예를 들어, 당신은 여기에서 찾고 시작할 수 있습니다 또한 구글과 스택을 사용 평소 오버 플로우. 이에 대한 모든 질문 우리는 바로 뛰어 전에? 괜찮아. 이제 이동하자. 그래서 먼저 내가 가진 예를 들어, 파일 수. 그리고 단계하려고거야 상대적으로 빠르게 그들을 통해. 이 스위프트에 대한 안녕하세요 파일입니다. 그것은 매우 간단합니다. 방법이 더 의견이있다 실제 코드가보다. 실제 코드에있다 주목 라인 (14)의 맨 아래. 그것은 인쇄를 말한다. 그리고, 그것은 함수 호출이다. 우리는에 전달하고 문자열은 안녕하세요 CS50을했다. 더 세미콜론이 없다는 것을 알 수 있습니다. 더 INT 메인이 없다는 것을 알 수 있습니다. 아무도 없습니다 우리가 다 함께했던 cruft에 우리가 이러한 방식을 사용하여 신속한 때 단지 텍스트 파일에 기록되는 다음, 내 컴퓨터에 저장 나는 그것을 컴파일하고 실행할 수 있습니다. 난 여기에 알 수 있습니다 CS50의 IDE를 사용하지. 이것은 내가 있다고 가정 실행하고 나는 OS X에있어 것을, 내가 엑스 코드는 이미 설치되어 있는지 이 위해서는이 시스템 실제로 함수. 그러나 이것은 단지 일반 텍스트 파일 것을 우리는 컴파일하고 편집 할 수 있습니다. 그래서이 실제로 어떻게 작동하는지 살펴 보자. 내가 그것을 컴파일하려면? swiftc 1.swift. 순간 두 한 결과, 우리가 지금 가지고있는 것을 볼 수 있습니다 1이라는 파일에이 컴파일. 그리고 지금 우리는 우리의 CS50을 인쇄 한, 오히려 우리의 Hello World 응용 프로그램입니다. 하나 다른 일을 주목하라 물론, 그 기본입니다 우리는 입력하지 않았다 / n은 새로운 라인을 인쇄합니다. 기본적으로 인쇄 기능에 의해 스위프트는 당신을 위해 새로운 라인을 인쇄 할 수 있습니다. 당신은 선택 사항 추가를 전달할 수 있습니다 매개 변수는 그렇게하지를 말합니다. 그러나에 대한 자세한 내용은 구글. 기본적으로 인쇄 라인을 다할 것입니다. 좋아, 그래서 이동하자 다음 몇 가지 다른 것들. 어떻게 우리가 실제로 변수를 정의 할 수 있습니까? 우리는 그 사용의 할 수 두 가지 방법 중 하나. 그리고 내가 원하는 사람은 당신에게 처음에 관하여는이하자의 정의입니다. 그리고이 중요하다 효과적으로 때문에 우리가하는 일은 상수를 정의하는 것입니다. 우리는 변수를 만들려고하고있다, 또는 오히려 상수라는 이름, 일부 data--에서 그것을 제공 이 경우, 문자열 댄. 그러나 렛을​​ 이용하여 키워드, 우리가 말하는 이 variable-- 것을 또는 다시 호출 constant-- 이름은 결코 변경 될 것 없다. 그것은 걸쳐 불변 될 것 이 프로그램의 지속 기간 또는 전역 상황의 지속 시간 것을 그 변수를 사용할 수 있습니다. 이 때 정말 중요하다 당신이없는 일부 데이터가 프로그램에서 변경하려고, 당신은 다양한 예제를 볼 수 있습니다 우리가 사용하고자하는 경우에 대한 다른 구문을 대 보자, 당신이하게 사용하는 것이 중요 가능하면이 통지 때문에 그것이 언어 변경하지 않을, 그리고 실제로 수행 최적화의 많은 속도를 향상시키고, 프로그램의 안전. 그리고 안전, 나는 못하게 의미 미친 오류가 그것을 충돌 우리는 할 수 있음 C로 보는 것에 익숙해 그 다음 우리는 문자열 보간을 사용할 수 있습니다 문자열 내에서이 작업을 캡슐화합니다. 그래서 우리는이에 볼 수 있습니다 인쇄 라인, 안녕하세요 인쇄, 다음 백 슬래시 열린 괄호를 사용하여, 다음 내 변수의 이름, 이 경우에 상수, 괄호를 닫습니다. 나는 기본적으로 다음을 걸었습니다 이 변수라는 이름의 내용 문자열의 내부 다음 이 결과, 인쇄. 이 파일을 다른 하나의 변화가있다 이는 내가 맨 위에, 가지고있다, , 오두막 라인에 배치하는 기본적으로 그냥 지정 나는를 사용하도록 스위프트 통역, 어떤 내가 더 이상 할 필요가 없습니다 것을 의미합니다 이 특정 프로그램을 컴파일합니다. 그냥 자신의 스크립트처럼 실행할 수 있습니다. 그러나 이것은 뒤에,이 경우에 있어서는, 장면은 컴파일 후되고 실행되고. 그것은 우리에게 단지 눈에 보이지 않는입니다. 좋아, 그래서 이동하자. 그래서 약간의 꽁수가있다 그건 그냥 전에 일어났다. 난 당신이 내가을 보여 주었다 상수를 정의 할 수 있습니다. 그리고 나는 그것을 할 일부 데이터를 제공 할 수있다. 그러나이 경우, 내가하지 않았다 것을 알 수 실제 데이터의 종류를 지정 그것은이다. 그리고 그 때문이다 컴파일러, 스위프트 수 다만 기반 데이터의 타입을 추론 나는 그것을 넣어 데이터에. 그것은 이것을 평가 것을 알고 있기 때문에 변수 바로 여기,이 데이터 권리 여기에, 그것은 문자열 것을 알고있다. 그래서이 상수 이름은 그러므로 뿐만 아니라 문자열 될 것이다. 그러나 우리는 또한 명시 될 수 있습니다 의 종류에 대한 우리는을 위해 사용하려고 상수 또는 변수 이 구문을 사용하여 instead-- 이름 대장 문자열과 동일하게 이 경우 우리가있어 의미 댄, 상수라는 이름을 정의하는 것. 이 String 유형이 될거야. 그리고 값은 댄 될 것입니다. 이제 다른 방법으로 그 우리는 variables-- 만들 수 있습니다 이들 변수는 가변, 어느 우리가 있다는 사실을 의미하려고 언젠가 그 내용을 변경할 수 있습니다 상황의 지속 시간 그 변수는 우리를 defined--된다 var 키워드를 사용하는 대신하자. 그러나 다시, 기본적으로하지 않는 한 당신은 알고있다 그 데이터를 조작하는 데 필요한, 대한 수 있도록 사용하려고 성능 향상. 이 경우에, I는 수 데이터의 유형을 지정 우리는 내부 것으로 기대 레이블이라는 새로운 변수. 그것은 문자열이 될거야. 그리고 우리는 다음 연결하는거야 두 개의 문자열 함께, 문자열 안녕하세요, 그리고 문자열로 표시 변수, 또는 오히려 상수 이름. 그래서이 때문에 좋은 다소 그 우리처럼 PHP됩니다 아주 쉬운 문자열 연결이 있습니다. 우리는 자동으로 필요가 없습니다 메모리 관리의 어떤 종류를 사용 크기를 증가해야 할 일 이 재미있는 것들의 어떤 종류. 우리가 실제로 기대하는 것처럼이 작동합니다. 좋아,이에 대한 질문? 이제 다른 이유로 그 우리는 당신이 능력이 필요 무엇을 정의 할 수 변수의 데이터 타입은 때때로 우리가하지 않기 때문이다 변수를 초기화 할 에서 일부 데이터와 정의의 포인트. 이 경우 자, 가정 해 봅시다 내가 입력을 시작할지 학년 책에 어떤 성적. 잘 나는 알고 중 하나가 내가되고 싶은 변수 변경 가능한 수준이 될 것입니다. 그리고 우리는 또한 알고 우리가 이 정수가되고 싶어요. 하지만 어쩌면 우리는 아직 할 그 등급을 사용할 수 있습니다. 스위프트, 당신은해야 데이터의 유형을 정의 는 그와 연관된 변수 나 상수하자 당신이 실제로 할 수있는 전 그 변수를 사용합니다. 그것은 강력하게 형식화되어 있기 때문에, 당신은 유형을 연결해야 이러한 변수. 내가 제대로하지 경우에,이 경우에 따라서 일부 값이 처음으로 초기화, 그때 스위프트에게 필요 I는 데이터 타입이 될 것으로 예상된다. 그리고 남아있는 것 그 동일한 데이터 형식 이 프로그램의 역사를 통해. 지금 당신은 가능한 한 빨리 유혹 될 수 있습니다 나는이 등급의 변수를 만들었습니다 그리고 제공 내가 만약 지금 100의 정수, 연결하는 시도 할 그 정수와 문자열, 여전히 사용하고 싶은 유혹 될 수 있습니다 그 문자열 연결 연산자 같은 우리는 단지 몇 줄의 이전했다. 그러나 불행하게도, 이 사실은하지 않습니다 당신이 있기 때문에, 작업 기본적으로 수행 두 가지 유형에 대한 조작. 지금이 다른 매우 다르다 정말 PHP와 같은 언어 유형의 자신의 종류와 loosey 거위. 그들은 단지, 그래, 좋아하고 무엇이든, 난 상관 없어. 그냥 나에게 한 가지 유형을 제공하고, 어쩌면 내가 옳은 일을 할 것입니다. 이 경우, 스위프트는 유형에 대한 매우 엄격한 당신이 다루고있는 그. 이 요약 연산자 또는 연결 연산자 본질적으로 몇 가지가 있습니다 다른 가능한 옵션. 당신은 요약 할 수 있습니다 정수, 또는 당신과 함께 문자열 연결을 수행 할 수 있습니다 아마 다른 것들뿐만 아니라. 그러나 운영자는 인식하지 못하는 경우 그것의 양쪽에 무엇을, 또는 이들의 조합이 아니라 두 가지 유형이 예상 무슨 아니다 다음은 고장의 원인이하는 것입니다. 이 경우에 그래서, 그것은 무엇을 의미 하는가 문자열 플러스의 정수를 가지고 있습니까? 음의 맥락에서 이, 우리는 아마 원하는 문자열 연결 작업을 수행합니다. 그러나 물론 컴퓨터 문맥의 종류가 없습니다. 그래서 우리는 제공해야 이 추가 정보 그것이 무엇을 알려 우리가하고 싶은 것입니다. 즉, 실제로 그렇게 스위프트는 강력하게 형식화되어 당신이 할 필요가 의미 추가 작업의 약간 이 조작에 도착 당신이 원하는 것이 방법. 하지만, 그 결과, 안전하다. 그리고 당신은 일단 받아 이러한 유형의 계정에, 물건은 솔직히 시작 꽤 잘 작동합니다. 이 경우에, 우리는 다음 것일 정도로 문자열 연결을 수행 명시 적으로 변환하여 문자열로 정수 이것에 싸서 자본 S 문자열 함수, 다음 문자열 연결을 사용하여 운영자는, 우리의 레이블 변수를 수정합니다 다음 그것을 밖으로 인쇄 할 수 있습니다. 여태까지는 그런대로 잘됐다? 좋아, 이제 이동하자. 이제 다양한 데이터 존재 우리는 스위프트에서 사용할 수있는 유형. 당신이 익숙해 해짐에 따라, 우리는 변경 가능한 배열을 만들 수 있습니다. 그리고 그 배열은 수 하나의 유형을 포함한다. 이 경우, 우리가 만들거야 정수의 변경 가능한 배열하는 우리는 성적을 호출, 우리는 할 수 있습니다 이 대괄호에서 그것을 저장하기 당신과 같은 형식은 익숙한 성장했습니다 다른 언어의 다양한에. 하지만 우리가있어 여기에 통지 몇 가지를 정의. 등급은 변경 가능한 variable--입니다 우리는하자 키워드를 사용하지 마십시오. 그 의미 그래서 우리는 수정할 수 있습니다 이 배열의 내용. 그것은 형 배열 지능이다 우리는 말할 수 여기에이 대괄호를 기반으로. 좋은 것들을 이제 하나 이것에 대해 그 우리는 많은 액세스를 가질 추가 정보 배열에 대해 바로 사용 몇 가지 간단한 점 표기법. 그래서 예를 들면, grades.count 우리에게 제공 그 존재 항목 개수 우리는 그 다음 꽤 액세스 할 수 있습니다 배열, 쉽게 단순히 점 표기법을 사용하여. 당신은 추가 추가하려면 이 배열에 항목, 당신은 PHP 스타일을 할 수 없습니다 어디 그냥 명시 적으로 정의, 지정된 인덱스, 일부 값 당신은 삽입 할 것을. 대신, APPEND를 사용 배열 형의 메소드 이 목록에 해당 항목, 95을 추가합니다. 그래서 지금이 배열에는 다음이 100, 0, 90, 85 contents--. 그리고 지금 우리가 추가 한 그 95도. 다른 방법이 있습니다 우리는 일을 추가 할 수 있습니다. 당신은 실제로 사용할 수 있습니다 요약 연산자 어느 것으로 해석 될 배열 추가 작업. 그리고 당신은 다른를 추가 할 수 있습니다 그 내용 (70, 80) 배열되어, 그 배열. 그래서 지금 우리가 가지고있는 이 변수의 내용 100, 0, 90, 85, 95, 70, 및 80 grades--. 이것은 단지 좋은 작은 구문입니다 스위프트가 우리에게 제공 설탕. 우리는 합계 싶다면 등급, 우리는 아마있어 반복 할 것 이 루프의 모든 항목을 통해. 그리고 우리는 스위프트의, 개념,해야합니까 의 루프 당신이 예상하는대로. 그러나 우리는 표시 방법 범위는 약간 다릅니다. 이 경우에 따라서 모든 것을 정리해 보면, 우리는거야 임시을 만들 것 우리를 위해 변수라고 합 이 수를 유지합니다. 그리고 우리에 대한 통지 여기에 루프 구조. 0에서 인덱스를 들어 ..