SWIFT. Aplikacje Mobilne i Multimedialne

Podobne dokumenty
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

SWIFT. Zaawansowane Programowanie Obiektowe

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

SpriteKit. Biblioteka do tworzenia gier wbudowana w SDK. Wspiera grafikę 2D w oparciu o sprite y

Wprowadzenie do Objective-C

Programowanie dla ios

Programowanie dla ios

KOTLIN. Język programowania dla Androida

Programowanie w języku Swift : Big Nerd Ranch guide / Matthew Mathias, John Gallagher. Gliwice, cop Spis treści

Programowanie dla ios

Programowanie dla ios

Podstawy Programowania C++

1 Podstawy c++ w pigułce.

Programowanie dla ios

4. Funkcje. Przykłady

Temat 3. Projektowanie interfejsu użytkonwnika Kalkulator pierwszy program dla IOS

Podstawy Programowania Podstawowa składnia języka C++

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

1 Podstawy c++ w pigułce.

Języki skryptowe w programie Plans

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Wykład 8: klasy cz. 4

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

MATERIAŁY DO ZAJĘĆ II

Wykład 5: Klasy cz. 3

Java Język programowania

Programowanie obiektowe

Programowanie w środowiskach graficznych. Wykład 3 Język C#

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Wykład 2 Składnia języka C# (cz. 1)

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Oczywiście plik musi mieć rozszerzenie *.php

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Materiały do laboratorium MS ACCESS BASIC

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

ZMIENNE. Podstawy PHP

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Programowanie obiektowe. Materiały przygotował: mgr inż. Wojciech Frohmberg

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Podstawy programowania skrót z wykładów:

Dokumentacja do API Javy.

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Programowanie obiektowe

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Klasy cd. Struktury Interfejsy Wyjątki

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Język ludzki kod maszynowy

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Kurs WWW. Paweł Rajba.

Programowanie (C++) NI 5

Modelowanie rynków finansowych z wykorzystaniem pakietu R

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Spis treści. Księgarnia PWN: Roland Zimek - SWiSH Max2 i SWiSH Max3. Wprowadzenie... 9

Pętla for. Wynik działania programu:

Podstawy programowania. Podstawy C# Tablice

Języki i techniki programowania Ćwiczenia 2

Programowanie robota mobilnego E-puck w języku Python

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

ROZDZIAŁ 2. Operatory

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

C-struktury wykład. Dorota Pylak

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Programowanie dla ios

Spis treści. Księgarnia PWN: Roland Zimek - Swish Max3

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 3

Unity. Platforma do tworzenia gier dla różnych systemów docelowych, m.in.: Windows, macos, ios, Android, Powstała w 2005 r., obecnie wersja 5.3.

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Umieszczanie kodu. kod skryptu

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Transkrypt:

SWIFT Aplikacje Mobilne i Multimedialne

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności z C

Podobieństwa do Objective-C typy podstawowe operatory użycie nawiasów klamrowych {} użycie nawiasów kwadratowych [] (tablice) operator przypisania =, porównania == podobne instrukcje (pętle, warunkowe) dziedziczenie metod klas i instancji słowo kluczowe self

Różnice vs Objective-C nie trzeba używać ; brak plików nagłówkowych silne typowanie przeciążanie operatorów nowy operator === porównujący obiekty pełne wsparcie Unicode w string brak obsługi wyjątków inferencja typów programowanie generyczne typy funkcyjne

Różnice vs Objective-C domyślnie nie ma wskaźników przypisanie nie zwraca wartości brak konieczności używania break w instrukcji switch (instrukcja fallthrough) zmienne i stałe są zawsze inicjalizowane przepełnienie zakresu jest wykrywane, chyba, że użyjemy specjalnych operatorów, np. &+, &-

Playground xcode 6 zawiera moduł Playground służy on do sprawdzania na żywo jak działa kod Swift

Playground Można na różne sposoby wizualizować działanie kodu

Playground Można korzystać z większości API, np. UIKit

Zmienne i stałe Słowa kluczowe let i var let definiuje stałą var definiuje zmienną podstawienie wartości określa typ zmiennej/stałej dzięki inferencji typów

Zmienne i stałe Nazwy zmiennych mogą zawierać dowolne znaki Unicode oprócz: spacji symboli matematycznych linii i prostokątów Nie mogą się zaczynać od cyfry

Typy podstawowe Int8 UInt8 Int (Int32, Int64) UInt (UInt32, UInt64) Double (64 bity - 15 cyfr) Float (32 bity - 6 cyfr) String Bool (true lub false)

Typy podstawowe Dla których ma to sens mają własności max i min Można stosować aliasy nazw typów

Operatory Podstawowe operatory: +,-,*,/,% (modulo) Operatory złożone: +=, -=, *=, /=, %=, &&, Operatory inkrementacyjne: ++, Operatory porównania: ==, >, <, >=, <=,!= Operatory zakresu: x..y, x..<y Operatory bitowe: &,, ^, <<, >>, &=, =, ^=, <<=, >>=

Operatory typów Operator is sprawdza, czy obiekt jest danego typu i ma wartość boolowską Operator as? rzutuje obiekt na typ opcjonalny, a gdy jest to niemożliwe podstawia nil Operator as! wymusza rzutowanie na typ, a jeżeli jest niemożliwe to występuje błąd wykonania Operator as można stosować przy rzutowaniu w górę

Zmienne i stałe wartości nigdy nie są domyślnie konwertowane do innych typów - trzeba stworzyć nową wartość wartości w stringach można osadzać łatwiej typy opcjonalne (nullowe) - dodajemy? wtedy zmienna może mieć wartość nil

Tablice i słowniki Deklaruje się je za pomocą nawiasów kwadratowych Dostęp do elementów też przez nawiasy Słowniki klucz:wartość Aby utworzyć puste korzystamy ze składni konstruktorów

Krotki Wartości można grupować w krotki (tuples) Krotka może zawierać dowolną kombinację typów Krotkę można zdekomponować na składowe

Krotki niepotrzebne wartości można zastąpić podkreśleniem do składowych można się odwołać przez indeks

Krotki składowe mogą mieć swoje etykiety

Instrukcje instrukcje warunkowe if i switch warunek musi być zawsze boolowski pętle for-in, for, while, do-while

Instrukcja warunkowa Jeżeli chcemy sprawdzić, czy zmienna ma wartość w instrukcji warunkowej można wykorzystać operator let

Instrukcja switch Nie jest ograniczona do typów prostych Nie jest ograniczona do równości Musi być wyczerpująca - klauzula default

Instrukcja switch W przeciwieństwie do innych języków Swift automatycznie kończy switch po znalezieniu pasującego przypadku Można użyć break, gdy tego potrzeba Można to zmienić instrukcją fallthrough

Instrukcja for-in Umożliwia iterowanie po tablicach i słownikach

Pętle while, do-while for..<

Pętle przerwanie pętli - break zakończenie bieżącego przebiegu - continue

Funkcje Do deklaracji funkcji służy słowo kluczowe func Argumenty oddzielone przecinkami, poprzedzone etykietami i dwukropkiem Typ funkcji po argumentach oddzielony ->

Funkcje Argumenty funkcji mogą mieć etykiety Trzeba z nich wtedy korzystać w trakcie wywołania Argumenty mogą mieć wartości domyślne

Funkcje Funkcja może mieć wiele wartości, identyfikowanych przez etykiety lub indeks

Funkcje Liczba argumentów funkcji może być zmienna pod warunkiem, że są tego samego typu

Funkcje Domyślnie argumenty są przekazywane jako stałe - nie można ich modyfikować Można to zmienić deklarując argument jako zmienną Nie zmienia to wartości poza funkcją

Funkcje Argumenty wyjściowe można uzyskać przez słowo kluczowe inout Przekazywany argument musi być wtedy poprzedzony &

Funkcje zagnieżdżone Funkcje mogą się zagnieżdżać Funkcja zagnieżdżona ma dostęp do zmiennych funkcji zewnętrznej

Funkcje są typem pierwszej klasy Funkcja może być traktowana jak inne typy Funkcje mogą przekazywać funkcję i być przekazywane jako argument

Funkcje i domknięcia Funkcje są szczególnymi przypadkami domknięć (closure) Domknięcia to segmenty kodu, które mogą być wywoływane wielokrotnie Domknięcie jest tworzone pomiędzy nawiasami klamrowymi { } wersja uproszczona

Obiekty i klasy Klasa jest deklarowana słowem kluczowym class Wszystko zdefiniowane wewnątrz klasy jest jej elementem składowym (pola, metody, własności)

Konstruktor klasy Metoda zaczynająca się od init, nie posiadająca typu Jeżeli obiekt jest kosztowny może posiadać destruktor deinit

Dziedziczenie Tylko pojedyncze Składnia jak w C++/C# - klasa nadrzędna po :

Przeciążanie metod Własności Tylko ze słowem kluczowym override Własności mogą mieć getter i setter klasa nadrzędna nowa wartość

Własności Jeżeli własność nie wymaga obliczania, ale wymaga sprawdzenia przed lub po zmianie, można wykorzystać sekcje willset i didset

Typy wyliczeniowe Deklarowane przez słowo kluczowe enum typ bazowy Typem bazowym może być Int, String lub typy zmiennoprzecinkowe

Typy wyliczeniowe Zmienną wyliczeniową można utworzyć z typu bazowego Typ wyliczeniowy może nie mieć typu bazowego

Typy wyliczeniowe składowe typu wyliczeniowego mogą mieć skojarzone ze sobą wartości mogą się one różnić w ramach jednego typu

Struktury Są podobne do klas Przekazywane zawsze przez wartość (klasy przez referencję) Słowo kluczowe struct

Protokoły metoda będzie zmieniać obiekt Odpowiednik interfejsów Słowo kluczowe protocol Mogą być adaptowane (implementowane) przez klasy struktury i wyliczenia

Protokoły Protokoły mogą być używane jak każdy inny typ

Rozszerzenia Dodawanie nowej funkcjonalności do istniejących klas Słowo kluczowe extension

Typy generyczne Podobnie jak w innych językach deklarowane za pomocą < > Generyczne mogą być funkcje, metody, klasy, typy wyliczeniowe i struktury

Typy generyczne Typ generyczny może stawiać wymagania, np. co do realizacji protokołów z użyciem słowa kluczowego where

Pierwsza aplikacja

Pierwsza aplikacja Prosty konwerter wartości ze stopni Celsjusza na Fahrenheita Szablon Single View Application

Konwerter Otwieramy scenorys Dodajemy pole tekstowe, guzik i etykietkę

Konwerter Ustawienia Auto Layout

Klasa AppDelegate

Klasa ViewController

Konwerter Tworzymy gniazdka

Konwerter Uzupełniamy metodę Dodajemy chowanie klawiatury

Konwerter

TouchID

TouchID Wykorzystywane do potwierdzania tożsamości za pomocą czytnika linii papilarnych Dane dotyczące skanów są poufne Dostępne na iphone 5s, 6, 6+, ipad Air 2, ipad mini 3 Może nie być skonfigurowane na urządzeniu

TouchID Nowy projekt z szablonu Single View

TouchID Dodajemy bilbiotekę

TouchID W scenorysie dodajemy przycisk na środku ekranu

TouchID Dodajemy wyrównanie do środka ekranu

TouchID Dodajemy akcję testtouchid

TouchID Dodajemy import biblioteki LocalAuthentication Dopisujemy metodę notifyuser

TouchID Sprawdzamy, czy urządzenie wspiera TouchID

TouchID Dopisujemy kod autoryzacji

TouchID Emulator nie obsługuje TouchID

SpriteKit

SpriteKit Biblioteka do tworzenia gier wbudowana w SDK Wspiera grafikę 2D w oparciu o sprite y

SpriteKit HelloWorld

SpriteKit HelloWorld

SpriteKit AppDelegate identyczny jak w innych szablonach Korzysta z mechanizmu scen (poziomy/ekrany) scena ma swoją klasę GameScene.swift i plik z projektem GameScene.sks kontroler klasy widoku ładujący scenę GameViewController.swift scenorys z projektem UI sprite znajduje się w Images.xcassets

SpriteKit - scenorys

SpriteKit - kontroler widoku

SpriteKit - kontroler widoku

SpriteKit - scena

Przerabiamy szablon Zmieniamy orientację ekranu na poziomą Wyrzucamy projekt sceny GameScene.sks Zmieniamy GameViewController.swift

Kontroler widoku

Sprite Dodajemy zasoby do projektu Edytujemy GameScene.swift Pokazujemy na ekranie naszego bohatera

Efekt

Dodajemy przeciwników Dodajemy metody do GameScene.swift

Dodajemy przeciwników Modyfikujemy metodę didmovetoview

Efekt

Strzelanie nasz bohater będzie strzelał w kierunku miejsca, w które stuknie gracz potrzebujemy do tego trochę matematyki SpriteKit niestety nie udostępnia funkcji operujących na wektorach i macierzach

Operatory wektorowe Dodajemy je przed klasą GameScene

Dotyk Dodajemy obsługę dotyku w klasie GameScene

Efekt

Wykrywanie kolizji SpriteKit zawiera obsługę fizyki, która znacząco ułatwi wykrywanie kolizji sprite y mogą należeć do jednej z 32 kategorii zdefiniujemy sobie strukturę

Wykrywanie kolizji nasz klasa będzie informowana o zdarzeniach fizycznych, gdy będzie realizować protokół SKPhysicsContactDelegate w metodzie didmovetoview dodajemy

Wykrywanie kolizji w metodzie addmonster dopisujemy kod po utworzeniu potwora 1.przypisujemy potworowi jego pole 2.potwór będzie poruszany przez nas, a nie przez fizykę 3.ustawiamy kategorię sprite a 4.ustawiamy kategorię sprite ów, dla których ma być wykrywana kolizja 5.tu by można ustawić np. odbijanie się obiektów

Wykrywanie kolizji Podobny kod dopisujemy w touchesended dla pocisków Dodajemy metodę obsługującą kolizję

Wykrywanie kolizji Dodajemy metodę wymaganą przez protokół

Efekt

Dźwięk SpriteKit nie ma dedykowanego mechanizmu do obsługi dźwięku Dźwięk można odtwarzać korzystając z normalnego API

Dźwięk Przed klasą GameScene dodajemy kod

Dźwięk Na początku metody didmovetoview dodajemy a na początku touchesended to

Efekt

Ekran GameOver Dodajemy nowy plik swift GameOverScene.swift Edytujemy kod

Warunek końca Gdy potwór nas ominie przegrywamy Zamieniamy ostatnią linię w metodzie addmonster na

Efekt

Wygrana Wygrywamy, gdy zabijemy 30 potworów Dodajemy pole w klasie GameScen modyfikujemy metodę didcolidewithmonster

Efekt

SceneKit

SceneKit podobna biblioteka do SpriteKit tyle, że do grafiki 3D

SceneKit Scenorys - obiekt GameViewController

SceneKit

SceneKit - kontroler widoku

SceneKit - kontroler widoku

SceneKit - kontroler widoku

Przykładowa aplikacja

Przykładowa aplikacja program do wizualizacji cząsteczek w 3D

Scenorys Na widok składa się etykietka, pole wyboru i SceneKit View

SceneKit operuje na hierarchicznej strukturze węzłów każda transformacja dotyczy węzła i jego dzieci

Przykładowa aplikacja Początkowy ViewController

Tworzenie sceny dodajemy metodę do klasy kontrolera i wywołujemy ją w viewdidappear

Dodamy oświetlenie

Gdy dodamy jeszcze

Dodamy dodatkowe oświetlenie

Ustawiamy kamerę

Ręczne sterowanie kamerą Usuwamy sterowanie automatyczne Dodajemy 2 pola w klasie kontrolera Dodajemy nową metodę

Ręczne sterowanie kamerą Dopisujemy kod do tworzenia sceny

Tworzymy atomy Tworzymy nową klasę Atoms.swift

Tworzymy atomy i kolejne atomy

Tworzymy atomy dodajemy kolejną metodę

Kontroler widoku usuwamy pudełko dodajemy tworzenie atomów

Tworzymy cząsteczki Dodajemy klasę Molecules.swift Dopisujemy metody tworzące cząsteczki

Tworzymy cząsteczki Dopisujemy akcję reagująca na zmianę cząsteczki

Tworzymy cząsteczki W Molecules dodajemy metodę pomocniczą I tworzymy prawdziwy metan CH4

SpriteKit i SceneKit wg strony http://www.raywenderlich.com

Inne technologie OpenGL Metal