Articles :: Programmation :: Objective-C

Introduction à Objective-C (1 : Premier programme)

vendredi 18 novembre 2005 par beremeth

Sommaire

Ce petit tutoriel n’a rien d’original ni dans la forme ni dans le contenu, mais il permet de se familiariser un petit peu avec Xcode ou Project Builder avant d’aller plus loin. Un autre but, avoué, étant de poser quelques bases de la programmation Objective-C.

Cette première série d’articles sur le langage Objective-C n’a pas pour but de vous apprendre à écrire des programmes avec des fenêtres et des interfaces utilisateurs évoluées. Ce que je cherche à vous présenter est le langage en lui-même, dénué des compléments et extensions tels que Cocoa (qui est un ensemble de classes (que nous aborderons la prochaine fois) et de fonctions vous simplifiant le travail et vous épargnant de nombreuses lignes de code).

Trêve de bavardages, vérifions déjà les pré-requis :
-  MacOS X
-  Xcode ou Project Builder (les copies d’écran se feront depuis Xcode 1.5) installé sur votre ordinateur
-  Une connaissance minimale de l’informatique et de l’anglais technique
-  De la patience
-  Du café

Si vous avez déjà tout ça, vous pouvez aller directement au paragraphe suivant, sinon, pour XCode (MacOS X 10.3) ou Project Builder (MacOS X 10.0 jusqu’à 10.2) , vous pouvez télécharger la dernière version directement sur le site d’Apple : http://connect.apple.com après vous être créé un compte. Sinon, un petit pas à pas pour la configuration (les valeurs par défaut étant parfaites dans la plupart des cas) :

Doc:1 Xcode Welcome, 32.9 ko, 250x211

1 Xcode Welcome

(jpg, 32.9 ko)

Doc:Release Notes, 83 ko, 250x170

Release Notes

(jpg, 83 ko)

Doc:Build Options, 39.8 ko, 250x209

Build Options

(jpg, 39.8 ko)

Créer un nouveau projet

Dans Xcode/Project Builder, créez un nouveau projet (File > New Project ...).

Doc:Foundation Tool, 41 ko, 250x205

Foundation Tool

(jpg, 41 ko)

Choissisez comme type de projet "Foundation Tool" et nommez-le comme vous souhaitez, "HelloWorld" serait parfait (et c’est ce nom que j’ai utilisé).

Doc:Assistant FoundationTo, 36.6 ko, 250x209

Assistant FoundationTool

(jpg, 36.6 ko)

Vous voici enfin devant la chose. Double-cliquez sur le fichier HelloWorld.m, un éditeur apparaîtra avec le code ci-dessous :

Doc:HelloWorld original, 42 ko, 250x188

HelloWorld original

(jpg, 42 ko)


#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

   // insert code here...
   NSLog(@"Hello, World!");
   [pool release];
   return 0;
}

Supprimons tout ça, on en a pas grand chose à faire pour l’instant et remplaçons le par


#import <stdio.h>

int main ()                                               
{                                                       
        printf("hello world");                       
        return 0;                                       
}

Cliquez sur le marteau dans la barre d’outil de l’éditeur pour lancer la compilation [1], Xcode va être occupé quelques instants et normalement va afficher en haut à gauche de la fenêtre "built succeeded". Sinon, vérifiez ce que vous avez écrit, il doit y avoir une erreur quelque part.

Cliquez sur le rond vert avec la flèche et ça lance l’application dans une console. Votre première application fonctionne !

Mais que s’est-il passé ?

Petite analyse succinte des opérations, ligne par ligne :
-  #import <stdio.h> rajoute au programme les fonctions [2] nécessaires pour afficher des données à l’écran, ou en saisir d’autres. stdio signifiant Standard Input/Output.
-   int main () déclare la fonction principale et les accolades, ouvrantes et fermantes, définissent les limites du contenu de cette fonction.
-   printf("hello world"); nous permet d’inscrire à l’écran hello world. printf() est une fonction de stdio.
-  return 0; est une instruction spéciale qui signifie que désormais la fonction main est finie et qu’elle renvoie la valeur 0.

Et toute cette cabale, c’est pourquoi ?

Un langage de programmation est d’abord un langage et à ce titre nécessite une syntaxe et une grammaire. Nous avons rencontré dans les quelques lignes notre programme des éléments "universels", que vous rencontrerez souvent en Objective-C ainsi que dans d’autres langages.

-  ; : Le point-virgule détermine la fin d’une instruction. printf("hello world"); et return 0; sont des instructions.
-  () : Les parenthèses permettent de spécifier un paramètre. Par exemple, dans printf("hello world");, le paramètre est "hello world". Ces paramètres sont parfois optionnels. Notre fonction main() n’en demande pas aujourd’hui. Nous verrons plus tard que c’est très rarement le cas.
-  {} : Les accolades permettent de grouper un ensemble d’instructions.

Je vous laisse là pour l’instant. Bien que ce que nous ayons écrit n’est pas en soit très valorisant dans l’immédiat, il nous permettra d’aller plus vite quand les choses deviendront plus complexes.

Tout le monde n’a pas la même logique. Parfois telles explications sont instantanement comprises par certains et absolument pas par d’autres. Si vous avez du mal à comprendre quelque point, dites-le, j’essaierai de trouver une autre façon d’aborder le problème. Sinon, il existe d’autres tutoriels que je vous invite à aller lire, peut-être cela clarifiera pour vous les passages obscures.

[1] La compilation est le processus rendant votre code directement exécutable par le processeur. En effet, un processeur ne peut comprendre que les zéro et uns, mais écrire d’une telle façon un programme est inimaginable, c’est pourquoi, nous nous adressons indirectement à l’ordinateur grace à un langage de programmation.

[2] En Objective-C, l’une des structures de base d’un programme est la fonction. La fonction permet de déclarer et définir un sous-programme.

 

10-10-2006 12:02:07, par Clampin

Très bien.... la suite ? tongue

 

18-10-2006 16:53:18, par brageira

Pour la suite s'il y a des volontaires… la partie rédaction est ouverte.

Recherche

A propos — Site collaboratif édité sous licence GNU FDL [pourquoi ?] — © 2004-08 — Mentions légalesContact
Syndication RSS — Powered by SPIPstockbanddonné


Contenu édité sous licence GNU FDL sans sections invariantes
© MacTouch 2004-08 — Powered by SPIP
http://www.mactouch.com/.