Probleme avec un code.
Hi,
Je suis nouveau sur le forum, et aussi dans la programation.
J'espere que vous pourrez m'aider avec un code qui m'empeche de finire mon app.
Dans mon app il y a plusieurs calcul qui son effectuer, mes un seul me pose des problemes.
Le calcule fonctionne tres bien avec "Commande Line Tool" dans Xcode. Mes dans IOS application je me retrouve avec des messages d erreurs. La seul modification qui je pense me pose des problemes se sont les curly brase( { } ) que j ais mie aux debut et a la fin. Mes a la foie sans elle j ais quand meme des message d'erreurs.
J'ais fais des recherches mes je n arrive toujours pas a comprendre.
Merci pour votre aide
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Merci d'aller te présenter dans la section "Présentation des membres" pour nous en dire un peu + sur toi, en particulier ton niveau (années d'expérience en prog en général, en POO, en ObjC, formation, ...) histoire que l'on puisse adapter nos réponses à ton niveau.
Genre ton "Je suis nouveau dans la prog" ça ne nous dis pas depuis combien de temps tu apprends iOS, si tu as suivi une formation, un tuto, ou autre), donc ta présentation dans le forum dédié nous permettra de mieux cibler notre réponse.
Là par exemple vu ta question alors que l'erreur remontée ("Function definition is not allowed here") est parfaitement explicite, du coup notre réponse va être totalement différente selon ton niveau et ce que tu connais comme bases en ObjC
Merci également de choisir un meilleur titre pour le sujet de ton post. "Problème avec un code" c'est bien trop générique, ça pourrait être le titre de 99% des posts du forum. C'est pas comme ça que ça va donner envie aux gens de lire ta question, ni aider plus tard pour la recherche d'anciens sujets dans le forum par mots clés.
Pour répondre à ta question, une fonction ne peut pas être définie à l'intérieur d'une autre fonction en ObjC.
Sors les fonctions MyCos() et main() de la méthode -[Enter:] et ça devrait compiler.
Par ailleurs, il ne doit y avoir qu'une seule fonction main(), puisqu'il s'agit du point d'entrée dans le programme. Tu dois déjà en avoir une fonction main() ailleurs.
Ceci indique de grosses lacunes en programmation; j'ai bien compris que tu débutais, mais justement, la programmation iOS n'est pas pour les débutants. Je te conseille de faire tes armes avec d'autres langages pour commencer (par ex. Python).
Desoler pour mon manque de politesse.
Faite moi savoir si vous voulez que je recreer un nouveau topic car je n ais pas reussie a changer le titre de ce topic.
Ceroce, j ais essayer se que tu m as dit, mes sa ne marche pas vraiment.
la ligne avec "return cos" a besoin de la definition degrees qui se trouve avec "double Mycos"
J'ais bien regarder je n'ais pas vue d'autre ''int main()'' a l exception de celui de dans mon code.
1) définie par son prototype dans un fichier .h. Exemple:
2) implémentée dans un .m
Dans une appli iOS, la fonction main() se trouve dans le fichier main.m. Regarde à nouveau ;-)
Si je peux te donner quelques astuces...
1. Si tu voulais faire les calculs comme degreesToRadians et radiansToDegrees, il vaudrait mieux de nommer les fonctions plus convenablement que MyCos. Un tel nom ne dit rien de la vrai fonctionnalité et, en plus, en Objective-C, il y a les moyens d'écrire les petites fonctions, que l'on puisse réutiliser, comme macros.
Par ex.
Du coup, en les mettant dans un fichier commun, tu pourrais les appeler comme :
2. Dans ton code, essaies d'utiliser les noms plus convenable, même pour les variables temporaires.
Par ex.
3. Ne mélanges pas les types dans les calculs sans en tenant compte du manque de précision, surtout en assignant les doubles aux floats.
4. Essaies d'apprendre la syntaxe Objective-C 2.0 avec les propriétés que l'on puisse écrire sans les crochets - c'est plus facile a lire est il discrimine mieux entre les données et les méthodes.
Ok j ais trouver le mail (), donc j ais suprimer le int main() de mon calcul.
Tu parlais de "conversion.h and .m" je suppose que tu parlais de ViewController.h et .m? Si s est le cas je ne comprend pas trop qu'est ce que double MyCos (double degrees) fais dans VC.h . Pour moi cette partie etais reserver pour les objects de la Storyboard.
J'ais essayer d effectuer les modification que tu m as donner, mes je me retrouve avec deux autre problemes.
Premierement: Je ne sais pas vraiment comment organiser les curlyBraces, car je me retrouve avec deux set de {} et une function definition et undeclared identifier erreur. Donc j ais enlever les {} que tu as mies dans l'exemple.
La deuxieme; est j ais undeclared identifier pour "degrees". Je pense comprendre pourqu oi, mes je n arrive pas a reglet le probleme.
@Draken
Arrête le Perrier-Citron, tu ne supportes pas!
Swift n'est pas plus simple, sauf peut être pour notre référence documentaire (Aligator). Pour le commun des mortels, Swift c'est différent et c'est à apprendre. Ceux qui connaissent Objective-C apprendront probablement un peu plus vite, mais ça s'arrête là .
D'autre part et si j'ai bien compris, Swift n'est pas vraiment finalisé.
Vu son niveau débutant je lui conseillerai de prendre des cours et lire des bouquins spécialisés car là il manque les bases et ça le bloque toutes les 2 minutes. Tant qu'il n'aura pas les bases en programmation (Objective-C ou Swift ou C) il va galérer. On ne construit pas une maison si on n'a pas les bases en maçonnerie.
Tu donnes l'impression de vouloir dire: avec swift c'est l'avenir, rien à apprendre! Si c'est cela, c'est à mon avis une erreur.
Et il n'est pas forcément mauvais de savoir comment sont faites les briques, même si on les achète par palette et qu'on ne les fait pas soi-même.
Mais là Swift n'est pas encore mature, le langage lui-même change entre chaque beta, le compilateur n'est pas encore stable, et il y a encore assez intensivement besoin du bridging avant que toutes les APIs soient portées nativement, donc il faut quand même idéalement avoir un peu de connaissances ObjC.
Pour quelqu'un qui sait déjà programmer, et n'a pas peur du fait qu'il faut encore faire du bridging entre Swift et ObjC, pas de soucis. Pour quelqu'un qui n'y connais rien à la programmation et se mélange déjà avec les bases, comme le main, la syntaxe de base, les accolades, ... je ne suis pas sûr que ça soit une bonne idée. C'est prometteur, mais trop jeune pour que ça soit abordable pour un novice qui n'a aucun background POO alors qu'il y a encore quelques dépendances et notions liées à ObjC.
Car aujourd'hui faire une application 100% Swift, sans rien connaà®tre d'ObjC c'est encore un peu tôt. Le problème majeur étant que le compilateur, le langage et l'ABI n'étant toujours pas stable, s'il y a des erreurs le novice ne saura pas distinguer si c'est de sa faute ou si c'est parce que le compilateur est encore en beta. Il aurait le niveau je ne dis pas, mais là vu les questions, il faut déjà se faire aux bases avant d'essayer d'aller plus loin.
Alors que ça consiste toujours à construire une maison, juste avec des nouveaux matériaux, genre avec des briques différentes et pour lesquelles le ciment n'est pas encore parfaitement au point et un peu glissant. Si la maison s'écroule, le novice ne saura pas dire si c'est parce que le ciment est encore pas assez expérimenté et sûr ou si c'est parce qu'il a mal assemblé les briques. Et en plus à un moment il va falloir qu'il mélange les briques et le ciment Swift avec les briques et le ciment ObjC, donc double apprentissage.
Tant que Swift n'est pas autonome, sorti de sa beta, et mature, ce n'est pas le plus adapté pour un débutant que de lui conseiller qqch encore en Beta, pour lesquels il y a bien moins de tutos, et qui n'est pas encore stable. Certes c'est tentant, mais c'est aussi dangereux, c'est pas comme s'il savait déjà programmer en POO et avait déjà les bons réflexes, si tu rajoutes la difficulté du côté beta de Swift ça risque d'embrouiller les choses.
Nous sommes bien d'accord, mais franchement, je ne sais pas si tu as pu récupérer un Mac récent et te remettre à programmer. Parce que dans les faits, Swift, c'est surtout expérimental actuellement.