Partage
  • Partager sur Facebook
  • Partager sur Twitter

MOOC Découvrez le langage Swift / Vos questions

    21 septembre 2016 à 9:23:51

    Bonjour tout le monde,

    Swift 3 étant maintenant sorti, ceux ayant installé Xcode 8 se retrouve avec quelques soucis et ne peuvent pas faire le premier TP (le deuxième aussi il me semble mais j'ai eu plusieurs retours sur le premier). Sachez que je met le cours à jour et que je mettrais à validation dès que possible.

    Voici le nouveau code de la fonction input() :

    // Fonction permettant de demander à l'utilisateur d'entrer un nombre et de le convertir en entier
    func input() -> Int {
    let strData = readLine();
    
    return Int(strData!)!
    }

    Avec ceci, vous devriez pouvoir réaliser le TP tranquillement.

    Rudy.

    Edit : Quelques chapitres ainsi que le TP sur la mini calculette ont été mis à jour

    -
    Edité par Spader 21 septembre 2016 à 15:09:51

    • Partager sur Facebook
    • Partager sur Twitter
      27 septembre 2016 à 11:28:50

      Bonjour j'en suis au chapitre "les fonctions et closures" et j'ai fait un copié collé sur le code noir et sur xcode il ne marche pas pourquoi? Merci

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        28 décembre 2016 à 14:07:34

        Bonjour,

        Tout d'abord merci pour ce cours qui est très agréable à suivre ! 

        Sur le premier TP de la mini-calculette, lorsque je veux tester la solution donnée, je rentre "2" pour "soustraction" mais il ne me propose pas de rentrer mes 2 nombres pour faire mon opération. Et lorsque je rentre "1" le phrase "Que voulez-vous ? (de 1 à 5)" est toujours affichée.

        Est-ce normal ? Que dois-je modifier pour que cela fonctionne ? 

        Je vous remercie. 

        • Partager sur Facebook
        • Partager sur Twitter
          30 décembre 2016 à 10:52:21

          Bonjour spader

          ce cours en français sur Swift m'a beaucoup aidé à comprendre les principes de base de la poo et de Swift.

          prévoies tu de continuer le cours avec d'autres modules? Ce serait super car tu es la seule source en français que j'ai trouvée et même si je suis fluent English, je n'arrive pas à intégrer de la même manière.

          j'espere sincerement que tu vas continuer. si oui, peux tu nous dire quand?

          par ailleurs, si tu as d'autres sources en français sur Swift , peux tu nous les communiquer?

          j'ai par exemple beaucoup de mal à manipulde les "superviewdidload" et leur init, les superinit , les "classes" entre elles, l'interface graphique, ... 

          merci en tout cas pour ce travail car il est très utile

          au plaisir de te lire

          • Partager sur Facebook
          • Partager sur Twitter
            18 février 2017 à 18:15:22

            PelletierMaxime a écrit:

            Bonjour,

            Tout d'abord merci pour ce cours qui est très agréable à suivre ! 

            Sur le premier TP de la mini-calculette, lorsque je veux tester la solution donnée, je rentre "2" pour "soustraction" mais il ne me propose pas de rentrer mes 2 nombres pour faire mon opération. Et lorsque je rentre "1" le phrase "Que voulez-vous ? (de 1 à 5)" est toujours affichée.

            Est-ce normal ? Que dois-je modifier pour que cela fonctionne ? 

            Je vous remercie. 

            Salut,

            Je pense que tu rentres pas les chiffres au bon endroit : tu dois rentrer ton choix directement dans la fenêtre et non dans le champs "Filter".

            -
            Edité par LaurentLiu 18 février 2017 à 18:49:05

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              21 février 2017 à 16:56:08

              Bonjour Laurent,

              Merci de ta réponse.

              Je rentre bien le chiffre dans le filter car il fonctionne pour certains chiffres mais pas pour d'autres.

              • Partager sur Facebook
              • Partager sur Twitter
                21 février 2017 à 17:54:28

                PelletierMaxime a écrit:

                Bonjour Laurent,

                Merci de ta réponse.

                Je rentre bien le chiffre dans le filter car il fonctionne pour certains chiffres mais pas pour d'autres.


                Salut,

                Justement, il ne faut pas rentrer le chiffre dans le "filter", ce champs sert à filtrer comme son nom l'indique.

                Je viens de tester la solution du TP et elle fonctionne. Il faut que tu rentres ton choix, par exemple "1"(comme sur le screenshot dans mon post précédent), et appuie sur la touche "Entrée" pour valider.

                Lorsque tu dis "il fonctionne pour certains chiffres mais pas pour d'autres", est-ce que tu aurais un screenshot pour voir ce que ça te donne?

                -
                Edité par LaurentLiu 21 février 2017 à 17:57:55

                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  23 février 2017 à 11:52:37

                  Problème résolu.

                  -
                  Edité par Anonyme 23 février 2017 à 11:59:55

                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 février 2017 à 15:14:19

                    Bonjour,

                    J'en suis au TP de la calculatrice améliorée, et je pense avoir bien réussi.

                    Cependant j'aimerais parfaire mon programme y ajoutant une condition que je n'arrive pas a faire...

                    Lors du Input du choix de l'opération à faire, j'aimerais que si l'utilisateur rentre un Type String (au lieu d'un Int, en faisant une erreur de touche pas exemple), le programme ne plante pas.

                    Pour cela je pensais faire un condition de la sorte :

                    var choix:Int

                    var go:Bool=false

                    If choix=String{

                           go=false

                    }

                    Mais cela ne fonction pas car swift ne veut pas combiner un Int avec un String....

                    Auriez vous une solution s'il vous plait?

                    Merci d'avance!!

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      25 février 2017 à 19:09:26

                      func inputNombre() -> Int {
                          var chiffre : Int = 0
                          var input : String
                          repeat{
                              print("Rentrez un nombre")
                              input = readLine()!
                              if(Int(input) != nil){
                                  chiffre = Int(input)!
                              }
                          }while chiffre != Int(input)
                          return chiffre
                      } 



                      Voila une option, tu peux remplacer la fonction input() du tp avec ça

                      -
                      Edité par Anonyme 25 février 2017 à 19:14:04

                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 février 2017 à 19:43:59

                        Merci! Ça fonctionne nikel!!
                        • Partager sur Facebook
                        • Partager sur Twitter
                          1 mars 2017 à 2:35:35

                          Bonjour à tous,

                          Je suis actuellement sur la première activité : réaliser une mini-calculette améliorée.

                          J'ai réussit à "relancer" la calculette après un calcul si l'utilisateur le souhaite et aussi à ajouter la fonction "carré". Cependant je bloque depuis plusieurs heures sur le "compteur".

                          J'ai bien réussit à l'ajouter mais cependant je n'arrive pas à le faire continuer après 1. C'est comme si il prenez bien en compte qu'un calcul avait été réalisé mais qu'après il était réinitialisé à zéro, et ce chaque après chaque "relance" du menu.

                          Anyone have an idea ? 

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            1 mars 2017 à 11:43:48

                            SylvainGdr a écrit:

                            Bonjour à tous,

                            Je suis actuellement sur la première activité : réaliser une mini-calculette améliorée.

                            J'ai réussit à "relancer" la calculette après un calcul si l'utilisateur le souhaite et aussi à ajouter la fonction "carré". Cependant je bloque depuis plusieurs heures sur le "compteur".

                            J'ai bien réussit à l'ajouter mais cependant je n'arrive pas à le faire continuer après 1. C'est comme si il prenez bien en compte qu'un calcul avait été réalisé mais qu'après il était réinitialisé à zéro, et ce chaque après chaque "relance" du menu.

                            Anyone have an idea ? 

                            Salut,

                            Es-tu bien sur d'avoir déclaré ton compteur hors de la boucle qui relance ta calculatrice?



                            -
                            Edité par Anonyme 1 mars 2017 à 11:44:05

                            • Partager sur Facebook
                            • Partager sur Twitter
                              1 mars 2017 à 15:03:46

                              Bonjour à tous,

                              Je n'arrive pas à bien comprendre l'utilité des protocoles si nous sommes de toutes façons obligé de définir une classe...

                              Quelqu'un pourrait m'éclairer ?

                              Val.

                              • Partager sur Facebook
                              • Partager sur Twitter
                                3 mars 2017 à 19:13:10

                                Ludo55 a écrit:

                                SylvainGdr a écrit:

                                Bonjour à tous,

                                Je suis actuellement sur la première activité : réaliser une mini-calculette améliorée.

                                J'ai réussit à "relancer" la calculette après un calcul si l'utilisateur le souhaite et aussi à ajouter la fonction "carré". Cependant je bloque depuis plusieurs heures sur le "compteur".

                                J'ai bien réussit à l'ajouter mais cependant je n'arrive pas à le faire continuer après 1. C'est comme si il prenez bien en compte qu'un calcul avait été réalisé mais qu'après il était réinitialisé à zéro, et ce chaque après chaque "relance" du menu.

                                Anyone have an idea ? 

                                Salut,

                                Es-tu bien sur d'avoir déclaré ton compteur hors de la boucle qui relance ta calculatrice?



                                -
                                Edité par Ludo55 1 mars 2017 à 11:44:05


                                Finalement j'ai réussit. Mon erreur se trouver au moment d'ajouter "1" au compteur.

                                J'avais tout simplement écrit "compteur = +1" alors qu'il fallait inscrire "compteur += 1"

                                Merci quand même.

                                -
                                Edité par SylvainGdr 3 mars 2017 à 19:50:14

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  10 mars 2017 à 18:42:31

                                  Bonjour, Je découvre ce cours sur Swift et je me dis que c'est le moment de découvrir ce qu'est la programmation. J'en suis au chapitre "Variables et opérateurs" et je bute sur la phrase : "Créez un nouveau projet "VariablesOpérateurs" et insérez ce code dans le main.swift". Pourriez-vous préciser. Merci d'avance. Pedro
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    12 mars 2017 à 16:53:53

                                    PierreMallet5 a écrit:

                                    Bonjour, Je découvre ce cours sur Swift et je me dis que c'est le moment de découvrir ce qu'est la programmation. J'en suis au chapitre "Variables et opérateurs" et je bute sur la phrase : "Créez un nouveau projet "VariablesOpérateurs" et insérez ce code dans le main.swift". Pourriez-vous préciser. Merci d'avance. Pedro


                                    Salut Pedro,

                                    Je pense que la consigne est assez explicite mais si tu n'as pas compris cette phrase, je te conseille de relire le chapitre précédent : Installation des outils de développement.

                                    Il suffit de reprendre les étapes de création du projet HelloWorld mais à la place de "HelloWorld" en Product Name, tu nommes le projet "VariablesOpérateurs".

                                    Ensuite, tu dois taper les deux lignes de code dans le fichier nommé main.swift.

                                    Voilà, j'espère que tu as compris, n'hésites pas si tu as d'autres questions.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      15 mars 2017 à 13:36:09

                                      Bonjour à tous. Je viens de commencer ce cours et malgré de bonnes explications je n'arrive pas en comprendre un des concepts qui à pourtant l'air d'être compris par tous. Dans ce code :

                                      https://openclassrooms.com/courses/decouvrez-le-langage-swift/les-fonctions-42#/id/r-2791554

                                      func premierPlusGrandQueDeuxieme(nb1: Int, nb2: Int) -> Bool {
                                          return nb1 > nb2 // nb1 > nb2 retourne un booléen si c'est vrai ou non
                                      }
                                      
                                      func maFonction(maFonctionParametre: (Int, Int) -> Bool) {
                                          if maFonctionParametre(4, 3) {
                                              print("Condition validée.")
                                          }
                                      }
                                      
                                      // On a juste à fournir le nom de notre fonction
                                      // A condition qu'elle respecte les paramètres et type de retour
                                      maFonction(maFonctionParametre: premierPlusGrandQueDeuxieme)
                                      
                                      // Affichera "Condition validée"



                                      Je n'arrive pas à comprendre dans quel ordre est lu le code... o_O

                                      Serait-il possible de le commenter de la sorte : 1- La fonction maFonction est appelées. 2- La fonction maFonction..... 

                                      Merci d'avance. 

                                      Après plusieurs lectures du chapitre j'ai compris. Je ne trouve pas comment supprimer mon message complètement alors je vous le précise ici. 

                                      -
                                      Edité par EstebanCarroy 15 mars 2017 à 14:15:25

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        11 mai 2017 à 10:25:37

                                        Bonjour,

                                        En ce qui me concerne je suis bloqué à l'exemple de la boucle For dont on veut incrémenter de deux.

                                        Le code renvoi à du swift 2 or d'après Xcode celui-ci n'est plus supporté.

                                        Serait-il possible d'apporter les modifications du code je suis encore débutant en la matière et donc je ne parviens pas à réaliser la fonction.

                                        Vous remerciant par avance.

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          11 mai 2017 à 13:50:03

                                          Salut !

                                          Peut tu nous montrer ton code afin de savoir quoi modifier ?

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Tutoriels sur GameplayKitSceneKit (iOS 3D game engine), ARKit (iOS réalité augmentée) en cours d'écriture
                                            15 mai 2017 à 22:23:33

                                            Bonsoir,

                                            Voici le code en Swift :

                                            
                                            var multiplesDeDeux: Int
                                            for multiplesDeDeux=0; multiplesDeDeux<=100; multiplesDeDeux=multiplesDeDeux+2 {
                                                print(multiplesDeDeux)
                                            }
                                            

                                            Nous obtenons un message de Xcode " C-style for statement has been removed in Xcode 3" sur la seconde ligne de code

                                            Pour info ce code Provient du livre de: Rudy de Visscher. « Découvrez le langage Swift. » iBooks.

                                            Vous remerciant par avance pour votre aide.

                                            -
                                            Edité par Alexandre Doyer 15 mai 2017 à 22:38:01

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              16 mai 2017 à 15:24:33

                                              Salut !

                                              Si tu suis le iBook, c'est qu'il n'est pas a jour, regarde le cours du site qui a l'ere d'etre plus d'actualitee !

                                              Le probleme est simple: Swift a enleve, depuis sa version 3.0, les boucles for du C ! Elle sont donc plus moderne et s'ecrivent de la sorte :

                                              for variable in debut ... fin {
                                                code
                                              }
                                              

                                              Les boucles for sont faites pour incrementer de 1, pour ecrire les multiples de 2, tu as plusieurs possibilite

                                              Soit tu veux garder une boucle for et donc tu dois ajouter un petit detail qui permet de prendre uniquement ta variable lors-ce que celle si est un multiple de 2 avec le mot cle "where" :

                                              for i in 0...100 where i % 2 == 0 {
                                                print(i)
                                              }

                                              tu peux utiliser une technique legerement plus optimise de la sorte :

                                              for i in 0...50 {
                                                print(2 * i)
                                              }
                                              

                                              ou alors tu peux faire avec une boucle while (qui est je pense le plus optimise) :

                                              var i = 0
                                              while i <= 100 {
                                                print(i)
                                                i += 2
                                              }

                                              Voila ! choisis comme tu veux ! :D



                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Tutoriels sur GameplayKitSceneKit (iOS 3D game engine), ARKit (iOS réalité augmentée) en cours d'écriture
                                                23 mai 2017 à 22:18:29

                                                bonsoir

                                                Le code de la fonction input() fournit en haut de la page de ce forum pour le 1er TP (celui de la mini-calculette) ne fonctionne pas ; il me renvoie une erreur.

                                                Un petit coup de pouce serait le bienvenu.

                                                merci

                                                -
                                                Edité par laurentlaurent2 23 mai 2017 à 22:19:05

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  24 mai 2017 à 1:12:10

                                                  Salut!

                                                  La fonction readLine() que tu as utilisée dans ta fonction renvoie une chaine de charactere optionnel, donc il est possible que nil soit retournée (c'est rare mais ca arrive)

                                                  Ensuite la facon de cast une chaine de characteres en Int peut aussi renvoyer nil ! et si c'est le cas, alors ta fonction va simplement faire crash ton programme ! (et c'est ce qui t'es arrive)

                                                  Voila comment tu pourrais corriger ceci :

                                                  func input() -> Int {
                                                    if let strData = readLine() {
                                                      return Int(strData) ?? 0
                                                    } else {
                                                      return 0
                                                    }
                                                  }
                                                  

                                                  Voila, ceci fera que si ton entree n'est pas convertible en nombre entier, ta fonction renvoie 0

                                                  -
                                                  Edité par giantwow 24 mai 2017 à 1:12:55

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  Tutoriels sur GameplayKitSceneKit (iOS 3D game engine), ARKit (iOS réalité augmentée) en cours d'écriture
                                                    24 mai 2017 à 18:20:40

                                                    Merci pour ton retour, mais j'ai toujours la même erreur :(
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      24 mai 2017 à 22:32:13

                                                      fais voir ton code, ton erreur et ce que tu as entre stp

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      Tutoriels sur GameplayKitSceneKit (iOS 3D game engine), ARKit (iOS réalité augmentée) en cours d'écriture
                                                        26 mai 2017 à 18:21:27

                                                        bonjour

                                                        C'est le code de la correction ; Xcode renvoie une erreur au niveau de la déclaration des variables. 

                                                        import UIKit
                                                        
                                                        class ViewController: UIViewController {
                                                        
                                                            override func viewDidLoad() {
                                                                super.viewDidLoad()
                                                                // Do any additional setup after loading the view, typically from a nib.
                                                            }
                                                        
                                                            override func didReceiveMemoryWarning() {
                                                                super.didReceiveMemoryWarning()
                                                                // Dispose of any resources that can be recreated.
                                                            }
                                                        
                                                        
                                                        }
                                                        func input() -> Int {
                                                            if let strData = readLine() {
                                                                return Int(strData) ?? 0
                                                            } else {
                                                                return 0
                                                            }
                                                        }
                                                        // Déclaration des variables utiles pour le TP
                                                        var nombre1: Int
                                                        var nombre2: Int
                                                        var operateur: Int // Comprendra un nombre correspondant au menu (par exemple 1 pour une Addition)
                                                        var resultat: Int
                                                        
                                                        // On boucle tant que l'utilisateur n'a pas rentré un nombre compris entre 1 et 5
                                                        repeat {
                                                            // On affiche tout d'abord le menu
                                                            print("--- Menu ---")
                                                            print("1. Addition")
                                                            print("2. Soustraction")
                                                            print("3. Multiplication")
                                                            print("4. Division")
                                                            print("5. Modulo")
                                                            print("")
                                                            
                                                            // On demande à l'utilisateur ce qu'il souhaite
                                                            print("Que voulez-vous ? (de 1 à 5) ")
                                                            operateur = input()
                                                            print("") // Permet de réaliser un saut de ligne
                                                            
                                                            // Pour réaliser l'opération, il est nécessaire d'avoir entré un nombre qui correspond au menu
                                                            if (operateur > 0 && operateur < 6) {
                                                                // L'utilisateur rentre le premier nombre
                                                                print("Entrez le premier nombre : ")
                                                                nombre1 = input()
                                                                
                                                                // L'utilisateur rentre le deuxième nombre
                                                                print("Entrez le deuxième nombre : ")
                                                                nombre2 = input()
                                                                
                                                                switch operateur {
                                                                case 1: // Addtion
                                                                    resultat = nombre1 + nombre2
                                                                    
                                                                case 2: // Soustraction
                                                                    resultat = nombre1 - nombre2
                                                                    
                                                                case 3: // Multiplication
                                                                    resultat = nombre1 * nombre2
                                                                    
                                                                case 4: // Division
                                                                    resultat = nombre1 / nombre2
                                                                    
                                                                case 5: // Modulo
                                                                    resultat = nombre1 % nombre2
                                                                    
                                                                default:
                                                                    resultat = 0 // On ne devrait pas entrer dans ce cas normalement, mais si jamais, on indique à 0 le résultat.
                                                                    print("Une erreur est survenue.")
                                                                }
                                                                
                                                                // Enfin, on affiche le résultat
                                                                print("")
                                                                print("Le résultat de l'opération est : \(resultat)")
                                                                print("")
                                                            }
                                                        } while (operateur < 1 || operateur > 5)

                                                        Les erreurs ici : 



                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          27 mai 2017 à 17:48:56

                                                          On dirait que ton fichier n'est pas le fichier main.swift mais un autre

                                                          *EDIT*

                                                          Ok ! En fait t'es surtout en train de creer un code destine a une utilisation en ligne de commande dans un projet destine a creer une application iPhone !

                                                          Fait plutot un nouveau projet en choisisant la template Command line tool dans l'onglet MacOS !

                                                          -
                                                          Edité par giantwow 27 mai 2017 à 17:52:09

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          Tutoriels sur GameplayKitSceneKit (iOS 3D game engine), ARKit (iOS réalité augmentée) en cours d'écriture
                                                            27 mai 2017 à 18:09:44

                                                            Oui, c'était ça. Maintenant ça marche parfaitement avec la template Command Line de l'onglet MacOS.

                                                            Merci beaucoup

                                                            -
                                                            Edité par laurentlaurent2 27 mai 2017 à 18:09:58

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              15 juin 2017 à 18:27:38

                                                              Bonjour

                                                              Je viens de terminer la première partie du cours et j'aborde la partie sur la poo.

                                                              Peut-être est-ce dû à un problème de mise à jour (j'ai xcode 8.2 sous mac OS X.11.6), mais je rencontre les problèmes suivants :

                                                              1) En définissant la classe Personne, j'ai un warning à chaque utilisation de self. (unresolved identifier).

                                                              2) Cela se confirme quand j'attaque la fonction main :

                                                              let Personne = Personne() provoque un warning (variable used whithin its initial value)

                                                              3) Et ensuite, tout usage de Personne. quelque chose provoque un warning (instance member "quelque chose" cannot be used on type Personne)

                                                              (j'ai collé le code du prof qui avait des p minuscule, j'avais erreur, après j'ai mis P majuscule, et là c'est warning.)

                                                              Qui peut m'aider ? Ce problème a peut-être déjà été évoqué, mais j'avoue que j'ai pas le courage de lire tout le fil depuis deux ans.

                                                              À part ça, merci à notre prof, et à vous tous.
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

                                                              MOOC Découvrez le langage Swift / Vos questions

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown