Apple Swift kurzus 3. gyakorlat

Hasonló dokumentumok
Informatika terméktervezőknek

A C# programozási nyelv alapjai

Szoftvertechnológia alapjai Java előadások

Smalltalk 2. Készítette: Szabó Éva

A C# PROGRAMOZÁSI NYELV

Algoritmizálás + kódolás C++ nyelven és Pascalban

Programozás I. Első ZH segédlet

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

A JavaScript főbb tulajdonságai

PHP gyorstalpaló, avagy a Hello World-től az űrlapellenőrzésig

Java II. I A Java programozási nyelv alapelemei

Felhasználó által definiált adattípus

Java programozási nyelv

BASH script programozás II. Vezérlési szerkezetek

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Java II. I A Java programozási nyelv alapelemei

Programozási nyelvek Python

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Programozási nyelvek JAVA EA+GY 1. gyakolat

OOP #14 (referencia-elv)

Szoftvertervezés és -fejlesztés I.

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Vezérlési szerkezetek

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Osztályok. 4. gyakorlat

Maximum kiválasztás tömbben

Programozás alapjai. 5. előadás

Generikus Típusok, Kollekciók

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

A Python programozási nyelv

Komputeralgebra Rendszerek

Internet programozása. 3. előadás

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Algoritmizálás és adatmodellezés tanítása 1. előadás

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

1. Jelölje meg az összes igaz állítást a következők közül!

S z á m í t ó g é p e s a l a p i s m e r e t e k

3D-s technológiák a játékfejlesztésben UDK bevezetés

Funkcionális Nyelvek 2 (MSc)

AWK programozás, minták, vezérlési szerkezetek

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

A C programozási nyelv II. Utasítások. A függvény.

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

Programozás II. 2. Dr. Iványi Péter

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Bevezetés a C++ programozási nyelvbe

Webprogramozás szakkör

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 15. Széchenyi István Egyetem, Gy r

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

AWK programozás, minták, vezérlési szerkezetek

Occam 1. Készítette: Szabó Éva

Programozás II. 4. Dr. Iványi Péter

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Bevezetés a programozásba I.

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

A programozás alapjai

Imperatív programozás

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Programozás C és C++ -ban

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Fordítás Kódoptimalizálás

.Net adatstruktúrák. Készítette: Major Péter

1. Alapok. #!/bin/bash

2018, Funkcionális programozás

Web-technológia PHP-vel

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 3. előadás

3. Gyakorlat Ismerkedés a Java nyelvvel

Mintavételes szabályozás mikrovezérlő segítségével

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Programozási segédlet

Szkriptnyelvek. 1. UNIX shell

Felvételi tematika INFORMATIKA

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Pénzügyi algoritmusok

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

A Python programozási nyelv

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Imperatív programozás

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

2016, Funkcionális programozás

Java programozási nyelv 4. rész Osztályok II.

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Átírás:

Készítette: Jánki Zoltán Richárd Dátum: 2016.09.20. Apple Swift kurzus 3. gyakorlat Kollekciók: Tömb: - let array = [] - üres konstans tömb - var array = [] - üres változó tömb - var array = [String]() - üres sztringtömb definiálása inicializáló függvénnyel pl.: let todolist = [ "Reggeli", "Ebed", "Vacsora" ] var todolist2 = [ "Reggeli", "Ebed", "Vacsora" ] todolist2.append("uzsonna") - elem hozzáfűzése todolist2.count - a tömb elemeinek megszámlálása Halmaz: - var set = Set<String>() - üres sztringhalmaz definiálása inicializáló függvénnyel pl.: var listset: Set<String> = [ "Kenyer", "Tej", "Szalami" ] listset.insert("gorogdinnye") Szótár: kulcs-érték párokkal definiált kollekció - var intstrdictionary = [Int: String]() - üres szótár létrehozása inicializáló függvénnyel, ahol a kulcs Int, az érték String pl.: var pricelist = [ "Kenyer" : 250, "Tej" : 220, "Szalami" : 350 ] Tuple: - több érték együttes használata (átadás, visszatérés, összehasonlítás, stb...) - kvázi vektor formájában használjuk pl.: let tuple1 = (10, 20, 30, 40) let tuple2 = (20, 10, 30, 40) Függvények: - alap függvény szintaxis: func funcname(param1:param1type, param2:param2type) -> returntype { funcname: a függvény neve param1, param2: a paraméterek neve param1type, param2type: a paraméterek típusai -> returntype: a függvény visszatérési értéke pl.: func greeting(str: String) String { return str //egy sztring paraméterrel rendelkező függvény, mely String-gel tér vissza let hellostring = "Hello World!" greeting(hellostring) 1

- függvény külső hivatkozási névvel: func funcname(extparam intparam: paramtype) -> returntype { extparam: külső paraméter név (scope-on kívüli hivatkozásra) intparam: belső paraméter név (scope-on belüli hivatkozásra) pl.: func multiply(extint intint: Int) -> Int { return intint * 10 //a belső névvel hivatkozunk (intint) multiply(extint: 10) //meghíváskor a külső névvel hivatkozunk (extint) - függvény default paraméterrel: func funcname(param: paramtype = defaultvalue) -> returntype { pl.: func multiply(myint: Int = 100) -> Int { return myint * 10 //a myint default értéke 100 multiply(200) //a visszatérési érték 2000 lesz multiply() //a visszatérési érték 1000 lesz (default 100 miatt) - függvény változó számú paraméterrel: func funcname(param: paramtype...) -> returntype { pl.: func varparam(numbers: Double...) -> Int { return numbers.count varparam(10.0,20.1,0.5,2.66665) //visszatérési érték: 4 - egymásba ágyazott függvények: func funcname(param: paramtype) -> (nestedparam: paramtype) -> returntype { pl.: func nestedincrease(myint: Int) -> (Int) -> Int { func increase(number: Int) -> Int { return number + 1 func decrease(number: Int) -> Int { return number - 1 if (myint > 20) { return increase else { return decrease //egy függvénnyel térünk vissza //egy függvénnyel térünk vissza var myscore = 500 let increaser = nestedincrease(21) increaser(myscore) //21 > 20, tehát az increase a visszatérési érték //500 + 1 = 501 a visszatérési érték 2

- in-out paraméterrel ellátott függvények: - változtatható a paraméter értéke func funcname(param: inout paramtype) -> returntype { pl.: var myint = 10 func inoutfunc(int: Int) -> Int { return int *= 10 inoutfunc(myint) //visszatérési érték: 100 Closure: - az egymásba ágyazott függvények egy speciális esete - olyan egymásba ágyazott függvények, amelyek értéket adnak át - nincsenek névvel ellátva - closure szintaxis: {(param1: param1type, param2: param2type) -> returntype in return returnstatement pl.: var names = ["Abel", "Karoly", "Bela", "Istvan"] var reversednames = names.sort({(str1: String, str2: String) -> Bool in return str1 > str2) //csökkenő sorba rendezés - closure, amely felcseréli az első és utolsó elemet: pl.: var changeorder: () -> [String] = { if let a = names.first { names[0] = names[names.count-1] names[names.count-1] = a return names Vezérlési szerkezetek: if: if (állítás) { utasítás1 else { utasítás2 for: let ten = 10 for i in 1...ten { // az i változó kizárólag ebben a ciklusban létezik print(i) // típusa megegyezik a bejárandó objektumok típusával for index in 1...5 { print(index) //index változó 1-től 5-ig megy 3

for index in 1..<5 { print(index) //index változó 1-től 4-ig megy (csak.. írandó, ha nincs egyenlőség!) for index in 1..<5.reverse() { print(index) //fordított ciklus (4-től 1-ig megy az index változó) for index in 0.stride(to: 10, by: 2) { print(index) //az index változó 0-tól 10-ig megy 2-es léptékkel for (figyelmen kívül hagyott változóval): var solution = 1 for _ in 1...ten { solution += 1 while: var solution = 0 while(solution < 10) { solution += 10 print("\(solution)") repeat-while: var solution = 0 repeat { solution += 10 print("\(solution)") while (solution < 0) //ha a ciklusváltozóra nincs szükség //jelölhetjük _ jellel //egyszerű while-ciklus //az utasítás előtt történik vizsgálat!!! //a jól ismert do-while ciklus megfelelője Swift-ben //előbb történik meg a végrehajtás //utólagos kiértékelés!!! (solution értéke 10 lesz) switch: var solution = 10 switch solution { case let x where x < 50: print("kisebb") case let x where x > 50: print("nagyobb") default: print("pontosan 50") //az egyes esetek közé nem kell break utasítás //létrehozhatóak új változók a cikluson belül (x) //az új változót a where feltétellel vizsgálhatjuk guard (early exit): let x = 10 guard x == 10 else { return print("it was ten.") //amennyiben a guard mögötti feltétel nem teljesül, //az else ág végrehajtódik, és a scope-on belül semmi más 4

Operátorok: Értékadás = Összeadás + Kivonás - Szorzás * Osztás / Maradékos osztás % Egyenlő == Nemegyenlő!= ÉS && VAGY Tagadás! Nil-coalescing?? If-then-else (ternary)? : - A logikai operátorok kiértékelése balról jobbra történik - Az Optional értékátadására elegáns megoldást nyújt a Nil-coalescing operátor (??) pl.: var e: Int? var f = 20 e!= nil? e! : f var sol = e?? f //hagyományos megoldás //elegáns megoldás Swift-ben (ha e nem nil, akkor átadható, //különben f kerül átadásra) Struktúrák: - struct kulcsszóval definiáljuk őket pl.: struct mystruct { Struct vs. Class Hasonlóságok Különbözőségek Lehetnek attribútumaik (értékek tárolása) Struct Class Lehetnek függvényeik (funkcionalitás) Nincs öröklődés Öröklődés biztosított Van inicializáló függvényük (inicializálás) Nincs deinit() függvény deinit() függvény Kiterjeszthetőek (extension) Nincs referenciaszámlálás (nincs ARC) ARC egynél több hivatkozást is lehetővé tesz Protokollok írhatóak hozzájuk (protocol) Másolásra kerül, ha átadásra kerül a kódban Inicializálás: - init() függvény segítségével osztályoknál és struktúráknál - tetszőlegesen paraméterezhető - a nem Optional adattagoknak mindig kezdőértéket kell adni - akár több init() függvénye is lehet egy osztálynak - ha nem kerül definiálásra init() függvény, akkor példányosításkor paraméter nélkül hívódik meg 5

Enumeráció: - enum kulcsszóval kerül definiálásra - case kulcsszóval definiáljuk az eseteket pl.: enum Compass { case north case south case east case west - hivatkozás: EnumName.enumCase pl.: var mydirection = Compass.north - amennyiben a típus ismert, a hivatkozás rövidíthető pl.: mydirection =.east //mydirection már Compass-ként lett deklarálva 6