Présentation1 Swift Partie I
Présentation1 Swift Partie I
Présentation1 Swift Partie I
IOS
Media
Caméra
Audio
Vidéo
Géolocalisation
Le terminal mobile
Ordinateur miniature (Système embarqué)
• Impact sur les ressources
Système réactif
• Basé sur l’interface user
Smartphone ou tablette
• Taille de l’écran
Processeur
• ARM(basse consommation)
Disque
• Mémoire flash
Mémoire vive
• RAM
Périphériques
• Capteurs diverses
• Cartes réseaux
• …
iOS vs Android
Même principes
Java/Objective-C ou Swift
Eclipse+plug-in / Xcode
Brevets
L’écosystème
L’écosystème ?
Offre ? Nombre de développeurs? Nombre d’applications?
→ Attirer les développeurs
→ Générer de nouvelles utilisations
Apple Google
-Modèle MVC
Programmation réactive
Contraintes et enjeux en programmation
Mémoire
- Android : garbage collector
-iOS : ARC (Automatic Reference Counting)
Consommation d’ énergie
périphériques gourmands : GPS, caméra/HDR/Flash,..
CPU (lié à la consommation d’énergie)
-Algorithmes couteux (jeux)
Les événements urgents
- Appel téléphonique
Ergonomie
-Facilité d’utilisation
-Respecter le modèle de réactivité( look and feel)
Charte graphique
Mécanismes dédiés
Contraintes et enjeux en programmation
Fiabilité
- Problème de plantage et mémoire
Sécurité
- Protection des données personnelles
Accès contrôlé par des API à certains éléments
Rapidité
-aspects algorithmiques
Processus de réalisation d’une application iOS
Développement Exécution
(Terminal)
Exécution
(Simulation)
Déploiement
L’environnement de développement:
Xcode
Environnement de développement des applications
iOS et MacOs (version 10- 2018)
Evolue au même rythme que les versions des OS (Mac,
iOS)
Xcode propose un GUI + SDK
Graphic User Interface
Concevoir l’interface
Sogware Development Kit
Environnement intégré de développement
L’environnement de développement:
Xcode
Il existe toujours une possibilité de faire l’hybride
Titanium
Phonegap
Ionic
personnel.
une application pour les matériels d'un X X
A quoi ça sert ?
le playground dans lequel vous allez tester entre autre vos méthodes et vos classes.
Etapes de création d’un projet
Choix du langage
Sélection d’Identifiant
…
Partie I
LES BASES
DE LA PROGRAMMATION
SWIFT
Variables et constantes.
Variable :
Booléan: Bool.
Types de données
32
Typage dynamique :
Cela sera fait dès que l’on attribuera une valeur à notre
variable.
Spécificités du Swift.
Typage fort :
Remarques :
type(of :maVariable)
Affectation de variables et Constantes.
Exemple :
let nomConstante = 3.14
var nomVariable = 0
,
var x = 0.0 y = 0.0 , z = 0.0
var message: String
message = " Allo "
print(message)
print("La valeur actuelle du message est \(message)")
let π = 3.14159
var booleen3 : Bool
booleen3 = true
var booleen4 = false
Conversions de types.
Opérations de conversions :
Exemple :
let x = 666.6
let y = Int(x)
print(y) // 666
let base2 = Int("10101",radix:2)!
print(base2) // 21
print(String(y)) // 666
Les commentaires
print(_itemes:separator:terminator:)
Paramètres
Items : Zéro ou plusieurs éléments à imprimer.
Separator : Une chaîne à imprimer entre chaque élément. La
valeur par défaut est un espace unique ( " ").
Terminator : Chaîne à imprimer une fois tous les éléments
imprimés. La valeur par défaut est une nouvelle ligne ( "\n").
Affichage et saisie.
Exemple :
let age = 30
print("J'ai",age,"ans et dans deux ans
j'aurais",age+2,"ans")
//J'ai 30 ans et dans deux ans j'aurais 32 ans
Affichage et saisie.
Exemple : (suite)
print("des","traits","bas","pour","séparer",
separator: "_")
print("et","des","plus","à","la","suite",
separator:"_",terminator: "+++")
print("et la fin")
Affichage et saisie.
Remarque
• Les opérateurs :
• Opérateurs d'affectation
• Opérateurs arithmétiques
• Opérateurs arithmétiques
- Soustraction ou inversion Exemples
var var1 = 10, var2 = 15,result : int
de signe
• Opérateurs d'affectation
Précisions :
Q: Combien de lignes?
A: Deux lignes!
Strings basics
let greeting = "Dans la pg on commence par \" Bonjour tout le monde! \ ""
Escape Description
\\ Backslash
\t Tab
Characters:
let a = "a" // 'a' is a string
convertir un type
var nombre = 12
Let monTexte = "Mon nombre est : " + String(nombre)
Strings basics
Interpolation:
let name = “Alami"
let age = 30
print("\(name) a \(age) ans")
Alami a 30 ans
Strings basics
Interpolation
Expressions
let a = 8
let b = 5
print("Si = \(a) et b = \(b),alors a + b = \(a+b)")
Si a = 8 et b = 5,alors a + b = 13
Strings basics
Egalité et comparaison
let mois1 = "Janvier"
let mois2 = "Janvier"
let lowercaseMois= “janvier"
if mois1 == mois2 {
print(“Ils sont les mêmes")
}
if mois1 != lowercaseMois {
print(“Ils sont différents.")
}
Ils sont les mêmes
Ils sont différents.
Egalité et comparaison
Ignorer la casse.
let name = “Farah Ahmed"
if name.lowercased() == “farah aHmed".lowercased() {
print("Les deux noms sont égaux.")
print(greeting.hasPrefix("Hello"))
print(greeting.hasSuffix("world!"))
print(greeting.hasSuffix("World!"))
True
True
False
Egalité et comparaison
Recherche de sous-chaînes
. let greeting = “Salut, je m’appelle Ahmed."
if greeting.contains("my name is") {
print("Faire une introduction")
}
Vérification de la longueur.
let name = "Ryan Mears"
let count = name.count
let newPassword = "1234"
if newPassword.count < 8 {
print("Ce mot de passe est trop court. Les mots de passe doivent comporter au
moins 8 caractères.")
}
Ce mot de passe est trop court. Les mots de passe doivent comporter au
moins 8 caractères
Egalité et comparaison
Utilisation de Switch
let someCharacter: Character = "e"
switch someCharacter {
case "a", "e", "i", "o", "u":
print("\(someCharacter) est une voyelle")
default:
print("\(someCharacter) n’est pas une voyelle")
}
print("∞".characters.count)
Syntaxe :
• typealias newname = type
Exemple :
Typealias Entier = Int
Exemple :
let msg = (404, "Not Found")
Non !
Addition soustraction +, -
Et &&
Ou ||
Switch : plus de conditions
let note = 18
switch note {
case 10:
print(« Mention Passable.")
case 12 , 13:
print(« Mention assez bien.")
case 14…16:
print(« Mention bien.")
case 18…20:
print("Vous avez les félicitations du jury !")
default:
let yetAnotherPoint = (1, -1)
switch yetAnotherPoint {
let note = 12
var moyenne: Bool
if note < 10 { moyenne = false }
else { moyenne = true }
// Est identique à cette partie
moyenne = note < 10 ? false : true
Les boucles
Syntaxe :
var nbFois: Int = 1
while nbFois <= 10 { print(" La ligne numéro :\(nbFois) ")
nbFois += 1}
names[1] = "Karim"
print(names)
names.removeAll()
print(names)
[]
Utilisation des tableaux
scores["Oli"] = 399
400
if let henrysScore = scores["Henry"] {
print(henrysScore)
}
Les Tableaux
Syntaxe :
var noms = ["Alami", "Farah" , "Hadi", "Lotfi"]
Var tableauEntiers: [Int]
print(noms[2])
noms = noms + ["Talbi"] // ajout à la fin
print( noms)
noms = ["Talbi"] + noms // ajout au début
noms.append("Hatim")
noms.insert("Samadi",at : 2)
noms += ["Talbi"]
noms [2] = "Salami" // Modifier
noms.remove(at :1) // suprimer
Les Tableaux
Exemple :
Parcourir un dictionnaire :
Exercice:
Écrivez une fonction qui retourne le max, min et total d’un tableau.
func nomFonction(para1 : [Int] ) -> (min: Int, max: Int, total: Int) {
// Instructions
return (min,max,total)
}
Les Functions
Argument labels:
print("Hello, world!")
EstG: 100
EstG: 0
Les fonctions
func somme( nombres: Int... ) -> Int {
var somme = 0
for nombre in nombres {
somme += nombre
}
return somme
}
somme()
somme(nombres : 2, 5, 12)
Les fonctions
func fonctionMain() -> Int {
var y = 10
func ajouter() {
y += 5
}
ajouter()
return y
}
print( fonctionMain())
Les Functions
Une fonction comme paramètre :
func maFonction(maFonctionParametre: (Int, Int) -> Bool) {
maFonctionParametre(12, 123) // On peut utiliser la fonction passé
//en paramètre comme ceci
}
}
maFonction(max)
Les Functions
Exemple:
func premierPlusGrandQueDeuxieme(nb1: Int, nb2: Int) -> Bool {
return nb1 > nb2 // nb1 > nb2 retourne un booléen si c'est vrai ou
non
}
maFonction(premierPlusGrandQueDeuxieme)
func maFonction(param1: Int, param2: Bool) -> (Int, Int) -> Bool {
// ...
}
print(Bonjour(“H ello")(“World!"))
// Affichera "Hello World !"
Les Closures
Définition:
Une closure est une partie de code, avec paramètres et sorties, qui
peut être encapsulé dans une variable, et exécutée à la demande.
Syntaxe:
let maClosure = {
print( "Bonjour, Je suis une closure") }
maClosure() // le code est exécuté
print(tab.sorted{(b:Int,a:Int)->Bool in
return b<a
})
Partie II
LA PROGRAMMATION
ORIENTÉE OBJET EN SWIFT