PreviousNextUpTitleContents

[dernière modification le 10 novembre 2017]

FAQ - Frequently Asked Questions - Foire aux questions



 

A quel public cible s'adresse ce cours?

Ce cours a été élaboré originalement pour des élèves du niveau de treizième de la formation de technicien en informatique au Lycée des Arts et Métiers au Grand-Duché du Luxembourg.

Accompagné du recueil des solutions des exercices, il s'adresse aussi à des personnes qui veulent s'adonner à des études d'autodidacte de la programmation en C.
Il faut toutefois remarquer que C n'est pas un langage facile à utiliser pour des débutants en programmation. Pour cette raison, il est avantageux si vous possédez déjà quelques notions de base de la programmation en PASCAL (ou d'un autre langage de programmation structuré).

Remarque: Aujourd'hui, la programmation en ANSI-C ne se trouve plus au programme de la classe de 13e mentionnée ci-dessus. Pendant quelques années, nous avons traité la programmation en Delphi sous Windows (pour pouvoir intégrer la programmation avec des composants graphiques). Aujourd'hui, nous commençons tout de suite par enseigner la programmation orientée objet en nous basant sur Java. Pour cela, nous utilisons des environnements simples ( Unimozer et NetBeans). Si vous êtes intéressés, nos cours actuels se trouvent ici: java.cnpi.lu.


A quel standard de programmation s'oriente ce cours?

Le cours se comprend comme une introduction à la programmation en ANSI-C. (Ne pas à confondre avec le standard ANSI-C++)

Les notations du cours suivent celles de la 'bible' des programmeurs en C: "The C Programming Language" de Kernighan/Ritchie.

No Ansi

Quelques fonctions non-portables, spécifiques à MS-DOS sont introduites dans le cours et marquées par un symbole spécial:
 


Où se trouve la version originale / la plus actuelle du cours?

Vous trouverez la version originale du cours sur le serveur Web du Lycée Technique des Arts et Métiers (Luxembourg): Vous pouvez télécharger la version originale du cours (comprimée .ZIP) du serveur ftp du Lycée Technique des Arts et Métiers: Si le serveur ne répond pas, veuillez contacter l'administrateur du serveur:

Qu'est-ce que ce "langage algorithmique"?

La matière traitée se base en partie sur les cours d'informatique de la classe de technicien en informatique (Initiation à l'algorithmique, application en Pascal) et contient donc quelques explications utilisant les notations du langage algorithmique qui y ont été introduites.

Ceci ne devrait cependant pas empêcher les personnes possédant quelques notions de base de la programmation en PASCAL (ou d'un autre langage de programmation structuré) de pouvoir tirer profit de ce cours.

Il faut toutefois remarquer que C n'est pas un langage facile à utiliser pour des débutants en programmation.


Pourquoi n'y a-t-il pas de liens directs entre les énoncés et les solutions des exercices?

Je n'ai pas prévu d'établir des liens directs entre les questionnaires des exercices et les solutions respectives. Les solutions des exercices sont disponibles dans une série de documents à part:
voir: La page des solutions des exercices

(Bien que cette façon de procéder se laisserait facilement justifier par des arguments pédagogiques, la vérité est bien plus simple: environ 200 liens devraient être établis 'manuellement' pour relier les 165 fichiers du cours aux 201 fichiers des solutions ...)

Remarque: Pendant la lecture, il est pratique d'ouvrir deux fenêtres de votre 'WWW-Browser':
- une page pour feuilleter le manuel et
- une deuxième page pour afficher les solutions des exercices.

Les versions actuelles du cours ouvrent automatiquement une deuxième fenêtre pour la page des solutions des exercices.


Les sujets qui ne sont pas traîtés dans ce cours

Comme le cours a été rédigé comme introduction à la programmation en ANSI-C différents sujets ont été omis volontairement du cours: Pour des détails sur ces points, vous pouvez vous référencer au manuel "The C programming language" de Kernighan/Ritchie ou vous pouvez vous référencer à l'une des adresses sur l'Internet.


Compilateurs ANSI-C

Pour pouvoir suivre ce cours avec succès, vous avez besoin d'un compilateur ANSI-C. Il existe un grand nombre de compilateurs gratuits, avec ou sans environnement de programmation. En principe un simple éditeur de texte et un compilateur (GCC, MinGW, ...) suffisent, mais il existe aussi des environnements intégrés. Pour ANSI-C il existe quelques environnements simples (Borland C++ Compiler, Code::Blocks, dev c++, NetBeans, KDevelop, Anjuta) ainsi que des bolides super-sophistiqués comme Eclipse ou XCode.

Une bonne liste des compilateurs disponibles actuellement se trouve sur 'c.developpez.com',

plus précisément: c.developpez.com/compilateurs/


Linux/Unix/Mac OS-X: Comment faire tourner mon programme avec les moyens de bord (gcc) ?

Comme le compilateur gcc est installé d'office sur les systèmes Linux/Unix/MacOSX, on peut très simplement compiler et faire tourner un programme.

Est-ce vous pouvez m'envoyer votre cours sous forme de document RTF, DOC, PDF, PS, ...?

Au départ (en 1995) ce cours a été rédigé en format Winword. A un certain moment, j'ai converti le document en format HTML. Pour plusieurs raisons, je ne distribue pas la version 'originale' en format Word, la raison la plus importante étant la suivante: Depuis la conversion en HTML, je ne m'occupe plus du fichier original et la version complète, corrigée et actualisée existe uniquement sous format HTML, qui est alors distribuée sous forme d'un fichier ZIP.

Je n'ai donc pas de version imprimable en PDF/DOC et je ne connais pas d'outil qui me permette de convertir le cours en entier en un seul fichier PDF tout en gardant la structure, les liens et sans répéter des pages ou des chapitres entiers.


Comment peut-on lire une chaîne de caractères contenant des blancs (espaces, tabulations, etc.)?

La commande associée à scanf pour pouvoir lire des chaînes de caractères comportant des blancs est :
    scanf("%[^\n]", ch);


Comment imprimer du texte à partir de la ligne de commande sous Windows/UNIX/Linux/Mac OS-X?

Une solution en DOS/Windows-CLI peut être réalisée en utilisant les instructions suivantes:

        FILE *PRN;

    PRN = fopen("PRN", "w");     /* ouvrir l'imprimante en écriture */
    fprintf(PRN, "exemple\n");   /* imprimer ... */
    fclose(PRN);                 /* fermer l'imprimante */

Sous Mac OS-X / Linux:

    #include <stdio.h>
    int main(void){
      FILE *PRN;
      PRN = popen("/usr/bin/lp", "w");
      fprintf(PRN, "%s", "Hello World!\nBonjour tout le monde!\n");
      fflush(PRN);
      pclose(PRN);
      return 0;
    }

Remarque:

Les fonctions popen et pclose ne font pas partie du livre 'The C Programming Language', mais elles sont comprises dans le livre 'The Standard C Library'. En Unix/Linux/MacOSX, elles offrent la possibilité d'écrire et de lire dans une file (angl: pipe). Voir à ce sujet les pages d'aide (man-pages) : "man popen"



Comment utiliser le mode graphique (avec les produits Borland) sous DOS?

[Ce sujet a plutôt un intérèt historique que pratique...]

Ceci n'a plus rien à faire avec le standard ANSI-C, puisque c'est spécifique au DOS et même uniquement valable pour Borland-C(++):
Voici quand même l'exemple d'un petit test graphique:

#include <stdio.h>
#include <graphics.h>

int main(void)
{
   /* request auto detection */
   int gdriver = DETECT, gmode, errorcode;
   int i, maxx, maxy;

   /* initialize graphics, local variables */
   initgraph(&gdriver, &gmode, "");

   /* read result of initialization */
   errorcode = graphresult();
   if (errorcode != grOk)
   /* an error occurred */
   {
      printf("Graphics error: %s\n",  grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1);
      /* terminate with an error code */
   }

   /* DESSINER ... */
  . . .

   /* clean up */
   closegraph();
   return 0;
}
 

Condition: Les fichiers *.bgi nécessaires doivent se trouver dans le répertoire du programme *.exe ou bien il faut indiquer le répertoire où se trouvent ces fichiers comme dernier paramètre de l'instruction initgraph (p.ex: initgraph(&gdriver, &gmode, "C:\TC\BGI");.
Le désavantage de la deuxième solution est clair: Le programme n'est plus portable, puisqu'il tourne uniquement sur des machines où le répertoire indiqué existe et contient les fichiers .BGI.
En général, le fichier egavga.bgi devrait suffire pour les cartes graphiques actuelles si vous n'utilisez pas de polices (fontes) spéciales.

Voir aussi le FAQ:  19.10 How can I do graphics?


Comment contrôler quelle/si une touche a été pressée sans bloquer le programme sous DOS/Windows-CLI sous UNIX? remplacement pour getch sous Unix?

Le standard ANSI-C ne définit pas de fonction à cet effet. La solution n'est donc pas portable.

Sous DOS/Windows-CLI:

Sous UNIX:

Comment implémenter des listes chaînées/arbres binaires en C?

Vous trouverez une réponse à ces question sur les pages suivantes:

Où est-ce que je trouve un cours semblable au vôtre sur PASCAL/C++/JAVA?

Il existe un grand nombre de tutoriels traitant Pascal, C++ ou JAVA sur l'Internet. Je vous conseille de commencer votre recherche sur le site www.developpez.com.

Autres adresses sur l'Internet

Avant toute autre source, veuillez consulter le FAQ du groupe de discussion comp.lang.c:

Pour les ressources en français, je vous conseillerais encore une fois de commencer sur

Quelques adresses intéressantes pour des programmeurs en C: Pour des questions concernant les standards ANSI-C / K&R-C / ... :


PreviousNextUpTitleContents

Feedback - Copyright © 1993,1996,1997,2011 F.Faber - version du 17.6.2011 -