[عزف الموسيقى] DAN AMRMENDARIZ: الجميع، مرحبا بكم في الندوة CS50، دائرة الرقابة الداخلية تطوير التطبيق مع سويفت. أنا دان ارمينداريز، وأنا مؤدب علم الحاسوب هنا في جامعة هارفارد. وساعة القادمة ستكون جولة مكوكية في الكثير من الاشياء حول هذا الموضوع ونحن يمكن أن يصلح. سأقوم كافة التعليمات البرمجية المصدر التي سوف ترى اليوم على الانترنت. ونحن قد لا تكون قادرة على يذهب في الواقع على كل شيء أنني أنني يظهر لك في هذه الساعة. ولكن على الأقل نأمل من خلال تعليقات شفرة المصدر، عليك أن تكون قادرا على محاولة معرفة ما بالضبط ما يحدث لتلك الأشياء أننا لا تحصل تماما. وعموما، فإن هيكل سوف نتحدث اليوم على النحو التالي. سنبدأ من القيام ببعض الأساسية جملة مع اللغة سويفت، الخوض في بعض من أكثر تقدما بناء جملة لغة سويفت. لأن اللغة هو حديث حقا، وأنه لديه الكثير من مستوى عال ميزات، والأشياء التي ليس لدينا ينظر في جميع أنحاء C CS50، أو حتى بعض اللغات الأخرى أننا قد بدأت ل استخدام في CS50 مثل PHP، لذلك أنا ذاهب لديك في محاولة ل يعرض أيضا بعض الموضوعات التي ترتبط اللغات عالية المستوى أنك قد لا ترى في العمق في CS50، لكن سترون في وقت لاحق دروس علوم الكمبيوتر. لذلك سيكون ل معبأة بإحكام ساعة. وتتردد في اسمحوا لي معرفة ما إذا كان لديك أي أسئلة. لذلك إذا كنت مهتما في القيام التطوير مع سويفت، أو حقا أي تطوير التطبيق دائرة الرقابة الداخلية، هناك اثنين من المتطلبات. أولا وقبل كل شيء، عليك أن تستخدم ماك، على التوالي في الأمثلة أننا ذاهبون إلى استخدام اليوم، نسخة جديدة نسبيا من OS X. وفي هذه الحالة، أنا تشغيل X 10.5. يمكنك أن تشغل 10.11 إذا كنت تريد. ولكن كل ما كنت ذاهب ل رؤية بإشراك كسكودي 7 و في وقت لاحق، الذي يحتوي على أحدث نسخة من سويفت، وهو سويفت 2.0. هذا هو في الواقع جميلة تمييز مهم. وهناك الكثير من بناء الجملة ديه تغيرت بشكل كبير جدا في بعض الحالات من سويفت 1.0، الذي صدر في العام الماضي، لسويفت 2.0، والتي خرج للتو في خريف هذا العام. لذلك نحن ذاهبون لاظهار سويفت 2.0. وهناك الكثير من الأشياء التي كنت ابحث عن الانترنت عندما كنت في محاولة للحصول على إضافية معلومات عن مجموعة متنوعة من الأشياء، قد تحتاج إلى صراحة البحث عن سويفت 2 بدلا من مجرد سويفت القديم سهل لجعل تأكد من أنك تحصل على بناء الجملة الصحيح. في الواقع، وهذا صحيح بشكل عام. هناك كمية السريع للتنمية يحدث في لغة سويفت منذ أصدرت أبل ذلك، وأعتقد ما، لقد كان ما يزيد قليلا عن العام الآن. وتغيرت الأمور بشكل كبير في ذلك الوقت. وحتى لا تكون محبطة إذا، عندما كنت أبحث في جميع أنحاء لالموضوعات المدرجة على سويفت أو كيفية تحقيق شيء باستخدام بعض رمز المثال أو شيء من هذا أنه لا فعلا العمل على سويفت 2.0. تأكد من أنك تبحث خصيصا لهذا الإصدار في محاولة للحد من آثار مختلفة إصدارات وتلك الأنواع من الأشياء. سأحاول أن أشير فقط بعض الأشياء التي تختلف عن الإصدارات القديمة. ولكن هذا شيء لمشاهدة ل. وهذا ربما سيكون واحدة من أكبر الصداع أنه سيكون لديك مع سويفت هو العثور على رمز المثال أن أقدم، حتى مجرد قبل بضعة أشهر، في محاولة لاستخدام في المزيد من المشاريع الحديثة الخاصة بك. وببساطة لا يعمل. كنت تحصل أخطاء مترجم، جملة أخطاء، وجميع أنواع الأشياء المجنونة. لذلك يكون مجرد المريض مع هذا، وسوف نأمل لدينا تجربة جميلة جدا مع عموما سويفت. يمكنك الآن فعلا join-- وآمل ونحن في الواقع لا تزال لديها هذا هذا year-- CS 50 آبل التطبيق فريق التطوير، التي سوف يسمح لك لتثبيت أي تطبيقات التي تقوم بإنشائها على أجهزة دائرة الرقابة الداخلية الخاصة بك. حتى تأخذ نظرة على هذا URL إذا كنت مهتما في القيام بذلك. حتى مجرد بضع أشياء عن سويفت نفسها. إنها لغة المترجمة. ولكن سوف نرى أن بعض من الميزات التي نستخدمها تسمح لها أن تستخدم أيضا في بعض الشيء مثل تفسير الطريقة أيضا. وهناك الكثير من بناء الجملة هو استعار من C. انها تقوم وكتب في C. ولذا فإننا سوف نرى أن هناك الكثير من الوجبات السريعة من المعرفة الموجودة لديك من C ما في وسعنا لميناء سويفت. ولكن هناك أشياء جعلها مختلفة جدا من C. يتم كتابتها بقوة جدا عليه. هناك إدارة الذاكرة التلقائية. كنت لا تسير لدينا ل استخدام malloc أو في أي مكان مجانا. انها مصممة للعموم. لذلك وبعبارة أخرى، يمكن استخدامه في كل أنواع السياقات، من شركة أبل ووتش الى اي فون كل وسيلة تصل إلى OS X، و حتى بعض الخوادم، وحتى بعض البرمجة. ولكن سنرى أن دعم للبرمجة ليس هناك تماما حتى الآن كما فمن بلغات أخرى. لذلك على الأرجح أنك سوف تكون باستخدام هذا على وجه الحصر من أجل التنمية على ماك أو اي فون الخاص بك. وأنه يحتوي على الكثير من الميزات الحديثة. والكثير من هذه الأمور الاشياء التي ونحن في طريقنا لمحاولة التصدي اليوم، ولكن أيضا لدينا الموضوعات التي بصراحة، يمكننا تخصيص دورات بأكملها. في الواقع، CS 51، وهو عرضت الفصل الدراسي المقبل، يركز كثيرا على هذه المواضيع الموضحة أدناه. حتى تتمكن من قضاء فصل دراسي كامل فهم هذه الأمور. لكننا سنحاول للحصول على خلالهم على الأقل بما يكفي أنك يمكن أن نفهم ما هو يحدث عندما نظرتم في برنامج سويفت وتكون قادرة على الإختراق طريقك من خلال ذلك للمشروع النهائي. الآن واحدة من أفضل الطرق التي يمكنك الحصول على معلومات إضافية عن هذا هو بصراحة للتو من أبل قدمت وثائق للسويفت. هناك الكثير من واجهات برمجة التطبيقات المتوفرة. وهذا هو قاعدة المنزل جيدة بالنسبة لك للبحث عن الأمور المحددة التي تريد أن تفعل مع API التي تنطوي على دائرة الرقابة الداخلية. إذا كنت ترغب في استخدام الكاميرا ل سبيل المثال، يمكنك البدء في النظر هنا، وأيضا استخدام غوغل والمكدس تجاوز كما تفعل عادة. أي أسئلة حول هذا قبل أن الحق في القفز؟ حسنا. دعنا ننتقل. لذلك أولا، ولدي عدد الملفات سبيل المثال. وانا ذاهب الى محاولة للتدخل من خلال عليها بسرعة نسبيا. هذا هو الملف مرحبا العالمي للسويفت. الأمر في غاية البساطة. هناك طريقة والمزيد من التعليقات من هناك الرمز الفعلي. لاحظ الرمز الفعلي هو في أسفل جدا على خط 14. تقول الطباعة. ثم انها استدعاء دالة. نحن يمر فيه ل ودعا سلسلة مرحبا cs50. لاحظ أنه لا يوجد منقوطة. لاحظ أنه لا يوجد كثافة العمليات الرئيسية. هناك أيا من الغبار المتراكم تحت السرير التي أجريناها مع C. عندما نستخدم سويفت في هذا السبيل، الذي هو مكتوب فقط في ملف نصي وتخزينها على جهاز الكمبيوتر الخاص بي، ثم يمكنني ترجمة عليه وتشغيله. لاحظ أن هنا أنا لا تستخدم IDE CS50. هذا يفترض أنني تعمل، وأنا على OS X، وبأنني كسكودي المثبتة مسبقا على هذا الجهاز من أجل هذا إلى وظيفة في الواقع. ولكن هذا هو مجرد ملف نص عادي أننا يمكن بعد ذلك تجميع وتحرير. لذلك دعونا نرى كيف يعمل هذا الواقع. ماذا لو أريد لتجميع ذلك؟ 1.swift swiftc. بعد لحظة أو اثنتين، فإنه سوف نرى أن لدينا الآن جمعت هذا إلى ملف يسمى 1. والآن لدينا طبع CS50 لدينا، لدينا تطبيق مرحبا العالمي إلى حد ما. لاحظ الشيء الآخر كما كذلك هو أن افتراضيا، لم يكن لدينا لإدخال و/ ن لطباعة سطر جديد. بشكل افتراضي، وظيفة الطباعة في سوف سويفت طباعة سطر جديد بالنسبة لك. يمكنك تمرير اختياري إضافي المعلمة ليقول لا للقيام بذلك. ولكن جوجل لمزيد من المعلومات حول ذلك. افتراضيا، انها لن تفعل خط الطباعة. كل الحق، لذلك دعونا ننتقل ثم إلى بعض الأشياء الأخرى. فكيف نحدد فعلا المتغيرات؟ يمكننا أن نفعل ذلك باستخدام واحدة من طريقتين. واحد أريد أن اقول لكم حول الأول هو هذا التعريف اسمحوا. وهذا هو المهم لأن فعال ما نقوم به هو تعريف ثابت. نحن بصدد إنشاء متغير، أو بالأحرى دعا اسم ثابت، تقدم إليه بعض data-- في هذه الحالة، سلسلة دان. ولكن باستخدام هذا اسمحوا الكلمة، ما نقوله أن هذا variable-- أو مرة أخرى constant-- يسمى اسم أبدا على وشك أن يتغير. انها سوف يكون غير قابل للتغيير في جميع أنحاء مدة هذا البرنامج أو في جميع أنحاء مدة السياق أن هذا المتغير هو متاح. هذا هو المهم حقا أنه عندما لديك بعض البيانات غير الذهاب الى تغيير في البرنامج، وسترى مجموعة متنوعة من الأمثلة حول عندما نريد استخدام دعونا مقابل بناء الجملة الأخرى، من المهم أن استخدامك السماح حيثما كان ذلك ممكنا لأن هذا بإعلام اللغة التي هو لن يتم تغيير، ويمكن أن تؤدي في الواقع الكثير من التحسينات لتحسين سرعة و سلامة البرنامج. والسلامة، أعني عدم السماح ذلك الحادث مع وجود أخطاء مجنون أننا قد تكون اعتادوا على رؤية في C. ثم يمكننا استخدام سلسلة الاستيفاء لتغليف ذلك ضمن سلسلة. حتى يمكننا أن نرى في هذا خط الطباعة، طباعة مرحبا، ثم استخدام مائل أقواس مفتوحة، ثم اسم المتغير بلدي، في هذه الحالة ثابتة، إغلاق الأقواس. أنا أساسا ثم وضع محتويات هذا المتغير يسمى اسم داخل السلسلة ومن ثم طباعة النتيجة هناك. هناك تغيير واحد آخر لهذا الملف وهي التي لدي، في أعلى جدا، وضعت في خط كوخ، الذي في الأساس يحدد فقط أريد أن استخدام مترجم السريع، الذي يعني أنني لم يعد لديك ل تجميع هذا البرنامج بالذات. يمكنني فقط تشغيله مثل السيناريو الخاص بها. ولكن هذا هو، في هذه الحالة، وراء مشاهد يجري تجميع ثم يتم تشغيل. انها مجرد غير مرئية بالنسبة لنا. كل الحق، لذلك دعونا المضي قدما. حتى لا يكون هناك قليلا من الخداع أن مجرد حدث من قبل. أنا أظهر لكم أنني يمكن تعريف ثابت. وأنا يمكن أن توفر بعض البيانات للقيام بذلك. ولكن في هذه الحالة، لاحظ أنني لم في الواقع تحديد نوع البيانات هذا هو عليه. وهذا لأن مترجم، يمكن سويفت نستنتج نوع البيانات تستند فقط على البيانات التي وضعت فيه. لأنه يعلم أن من خلال تقييم هذا متغير هنا، هذا الحق البيانات هنا، فهو يعرف أنه هو السلسلة. وحتى هذا اسم ثابت لذلك هو ستكون سلسلة كذلك. ولكن يمكننا أيضا أن يكون صريحا حول نوع هذا نحن نذهب لاستخدامها ل الثوابت أو المتغيرات باستخدام بناء الجملة هذا instead-- السماح يساوي سلسلة اسم القولون دان، وهو ما يعني في هذه الحالة نحن الذهاب الى تعريف دعا اسم ثابت. انها سوف تكون من نوع سلسلة. والقيمة ستكون دان. الآن الطريقة الأخرى التي يمكننا خلق variables-- وهذه هي متغيرات قابلة للتغيير، والتي يعني أننا، في الواقع، والذهاب لتغيير محتوياتها وقت في مدة سياق أن هذا المتغير هو defined-- نحن استخدام الكلمة فار بدلا من السماح. ولكن مرة أخرى، افتراضيا، إلا إذا كنت تعرف التي تحتاج إلى معالجة تلك البيانات، محاولة استخدام السماح ل تحسينات في الأداء. في هذه الحالة، لا يسعني ثم تحديد نوع البيانات أننا نتوقع أن تكون داخل هذا المتغير جديد يسمى التسمية. انها سوف تكون سلسلة. ونحن في طريقنا لسلسلة ثم سلسلتين معا، سلسلة مرحبا، والسلسلة التي يمثلها متغير، أو بالأحرى اسم ثابت. لذلك هذا هو لطيف لأن هذا وPHP نوعا ما مثل في أننا يكون من السهل جدا سلسلة سلسلة. ليس لدينا تلقائيا استخدام أي نوع من إدارة الذاكرة لزيادة حجم والقيام أي نوع من الأشياء مضحك هناك. هذا يعمل كما كنا نتوقع فعلا. كل الحق، أي أسئلة حول هذا؟ الآن السبب الآخر أن نحتاج لديك القدرة لتكون قادرة على تحديد ما نوع من المتغيرات والبيانات غير أنه في بعض الأحيان ونحن لا تريد تهيئة المتغيرات مع بعض البيانات في نقطة من الوضوح. حتى في هذه الحالة، دعنا نقول أن أريد أن أبدأ إدخال بعض الصفوف في كتاب الصف. وأنا أعلم جيدا أن واحدا من المتغيرات التي أريد أن أكون سيكون على درجة قابلة للتغيير. ونحن نعرف أيضا أننا تريد أن يكون صحيحا. ولكن ربما لم نفعل ذلك حتى الآن يكون هذا الصف المتاحة. في سويفت، لديك ل تحديد نوع البيانات مقترن مع متغير أو السماح ثابت قبل أن تتمكن الواقع استخدام هذا المتغير. لأن كتابته بقوة، لديك لربط نوع مع هذه المتغيرات. حتى في هذه الحالة، إذا كنت لم صحيح تهيئة الأول مع بعض القيمة، ثم أحتاج أن أقول ما سويفت أتوقع نوع البيانات إلى أن يكون. وانها تسير على البقاء أن نفس نوع البيانات طوال تاريخ هذا البرنامج. الآن كنت قد تميل في أقرب وقت لقد خلق هذا المتغير الصف وشريطة أن ل صحيح 100، والآن إذا أنا ترغب في محاولة لسلسلة سلسلة مع هذا صحيح، قد تميل إلى الاستمرار في استخدام أن المشغل سلسلة سلسلة كما فعلنا مجرد بضعة أسطر من قبل. لكن لسوء الحظ، هذا سوف فعلا لا العمل، لأنك أداء الأساس عملية على نوعين مختلفين. الآن وهذا يختلف تماما عن الآخر لغات مثل PHP التي هي في الحقيقة goosey loosey مع الفرز من أنواع. انهم مجرد مثل، نعم، أيا كان، لا يهمني. فقط أعطني نوع واحد، و ربما سأفعل الشيء الصحيح. في هذه الحالة، سويفت صارمة للغاية حول أنواع أنك تتعامل مع. هذا المشغل الجمع أو مشغل سلسلة لديها أساسا بضع الخيارات الممكنة المختلفة. يمكنك أن تفعل الجمع مع الأعداد الصحيحة، أو يمكن القيام به سلسلة سلسلة، و ربما بعض الأشياء الأخرى كذلك. ولكن إذا لم تعترف بأن المشغل ما هو على جانبي ذلك، أو بالأحرى مجموعة من تلك نوعين، ليست ما انها تتوقع، ثم انها سوف تتسبب في الفشل. حتى في هذه الحالة، ما الذي يعنيه لدينا سلسلة بالإضافة إلى عدد صحيح؟ كذلك في سياق هذا، ونحن ربما تريد للقيام بعملية سلسلة سلسلة. ولكن بالطبع الكمبيوتر لم يقم هذا النوع من السياق. ولذا فإننا بحاجة إلى توفير الحصول على معلومات إضافية السماح لها أعرف ما هو أننا نريد أن نفعل. لذلك وبعبارة أخرى، فإن حقيقة أن سويفت يتم كتابتها بقوة يعني ما عليك القيام به ل قليلا من العمل الإضافي للحصول عليه لتشغيل الطريقة التي تريد. ولكن نتيجة لذلك، وهو أكثر أمانا. وبمجرد الانتهاء من اتخاذ بعين الاعتبار تلك الأنواع، أشياء فقط تبدأ بصراحة للعمل بشكل جيد جدا. حتى في هذه الحالة، فإننا سوف ثم أداء سلسلة سلسلة قبل الصب صراحة عدد صحيح إلى سلسلة الاشارات في هذا عاصمة S سلسلة وظيفة، ثم باستخدام سلسلة سلسلة المشغل لتعديل متغير تسمية لدينا، ومن ثم طباعته. حتى الان جيدة جدا؟ كل الحق، دعنا ننتقل. الآن هناك مجموعة متنوعة من البيانات الأنواع التي يمكن أن نستخدمها في سويفت. كما كنت قد تعودت على، نحن يمكن أن تخلق مجموعة قابلة للتغيير. ويمكن أن مجموعة فقط تحتوي على نوع واحد. حتى في هذه الحالة، نحن ذاهبون الى خلق لصفائف قابلة للتغيير من الأعداد الصحيحة، التي سنطالب الدرجات، وسنتمكن لتخزين أنه في هذه قوس مربع الشكل الذي اعتدنا لفي مجموعة متنوعة من اللغات الأخرى. ولكن لاحظ أن هنا نحن تحديد بضعة أشياء. الدرجات هي variable-- قابلة للتغيير نحن لن تستخدم الكلمة هوادة. وهذا يعني أننا يمكن تعديل ثم محتويات هذه المجموعة. هو من نوع مصفوفة كثافة العمليات، ونستطيع أن نقول أن بناء على هذه الأقواس المربعة هنا. الآن واحدة من أشياء لطيفة في هذا هو أننا الحصول على الكثير من معلومات اضافية حول مجموعة فقط باستخدام بعض نقطة تدوين بسيط. هكذا على سبيل المثال، يوفر grades.count لنا عدد العناصر الموجودة في هذا مجموعة، التي يمكننا ثم الوصول جميلة بسهولة ببساطة باستخدام تلك نقطة تدوين. إذا كنت ترغب في إضافة إضافي البنود في هذه المجموعة، لا يمكنك أن تفعل النمط PHP حيث يمكنك فقط تحديد بشكل واضح، في مؤشر معين، بعض القيمة الذي تريد إدراجه. بدلا من ذلك، استخدم إلحاقي الأسلوب في نوع مصفوفة لإلحاق هذا البند، 95، إلى هذه القائمة. حتى الآن هذه المجموعة لديها ما يلي contents-- 100، 0، 90، 85. والآن لدينا إلحاق 95 لذلك أيضا. هناك طرق أخرى يمكننا إلحاق الأشياء. يمكنك استخدام الواقع مشغل الجمع، والتي سيتم تفسيره على أنه عملية مجموعة إلحاق. ويمكنك بعد ذلك إلحاق أخرى مجموعة، محتوياتها هي 70 و 80، إلى ذلك مجموعة. حتى الآن لدينا محتويات هذا المتغير grades-- 100، 0، 90، 85، 95، 70، و 80. هذا هو مجرد نحوي صغيرة لطيفة السكر الذي يوفر سويفت بالنسبة لنا. لذلك إذا أردنا أن ألخص لل الدرجات، نحن ربما تريد الذهاب الى تكرار على كل عنصر في هذه الحلقة. ولدينا، في سويفت، فكرة لحلقة for كما كنت تتوقع. لكن الطريقة التي تبين لنا مجموعة مختلفة قليلا. حتى في هذه الحالة، ل خلاصة كل شيء، وسوف نقوم الذهاب لخلق مؤقتة دعا مبلغ متغير من أجل بالنسبة لنا للحفاظ على هذا العدد. وتلاحظ لدينا بناء حلقة هنا. للمؤشر في 0 ..