



FAQ Frequently asked questions - Q&R Questions et réponses
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
Technique 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. Nous traitons maintenant la programmation en Delphi sous Windows.
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.
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 la plus actuelle
du cours?
Vous trouverez la version la plus actuelle du cours sur le serveur Web
du Lycée Technique des Arts et Métiers (Luxembourg):
Vous pouvez télécharger la version actuelle 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?
Actuellement 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.
Attention: Les versions actuelles du cours
(> novembre
1997) 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:
-
La structure de contrôle switch [case, default] (correspond
à case en Pascal)
-
Les instructions de contrôle break et continue
-
L'instruction goto et les marques
-
Les classes de mémorisation auto, static, register, extern
-
Le qualificateur volatile
-
Les types complexes union, enum, struct et la définition
de types par typedef
-
Les instructions du préprocesseur (à l'exception de #include)
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, comme par exemple:
-
Compilateur et IDE Turbo C Professional 2.01 - GRATUIT!
Le compilateur et l'environnement Turbo C version 2.01 (DOS) est disponible
gratuitement sur le site de BORLAND. Turbo C 2.01 respecte le standard
ANSI-C, et il est suffisant pour pouvoir suivre ce tutoriel. Le programme
est très compact et peut même être installé sur
une disquette. Le compilateur est très rapide.
Seul désavantage: L'éditeur est plutôt antique - a.d.
1989- et n'offre pas le confort des éditeurs actuels (pas de support
souris, pas de rehaussement de la syntaxe i.e. coloration des mots clefs,
etc.).
Avant pouvoir télécharger les fichiers du site de Borland
(section MUSEUM), il faut d'abord s'inscrire dans la communauté
Borland (BORLAND Community), ce qui ne prend que quelques minutes.
Voir: http://community.borland.com
-
GNU-C ('public domain') - GRATUIT!
Ce compilateur est disponible pour un très grand nombre de surfaces,
il est rapide et il est complet.
Le seul désavantage est qu'il est assez compliqué à
utiliser pour des débutants, ce qui commence déja par le
téléchargement et l'installation...
(Remèdes: RHIDE et DJGPP ZIP-Picker)
Le compilateur GNU-C (ou GNU-C++) peut être téléchargé
du serveur du MIT: ftp://prep.ai.mit.edu/pub/gnu/
Vous y trouverez aussi des informations supplémentaires sur
le compilateur. Il existe un grand nombre de sites 'miroirs' sur l'Internet
pour le compilateur GNU-C (et GNU-C++).
RHIDE: Il existe un éditeur (style Borland) gratuit et
confortable pour GNU-C et GNU-C++. Je vous conseille cet interface fortement.
La façon la plus confortable
pour télécharger GNU-C, GNU-C++, RHIDE avec tous les composants
nécessaires se trouve sur le serveur: DJGPP
Zip File Picker: http://www.delorie.com/djgpp/zip-picker.html
-
Autres:
-
Borland C (ou Borland C++)
-
Microsoft C (ou Microsoft C++)
-
Zortech C (ou Zortech C++)
-
Symantec C++
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é
sous 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.
Traduction en format HTML
Je remercie Chris Hector et Christian Bolik, les auteurs
de l'outil rtftohtml qui m'a servi à traduire mes documents
texte en format HTML.
Vous trouvez la version la plus récente de rtftohtml à
l'adresse: http://www.sunpack.com/RTF.
(Remarque: Si vous voulez vous servir de rtftohtm pour
traduire en HTML des documents contenant des codes source de programmes,
n'oubliez pas de définir dès le départ un style de
formatage du nom de 'Code' et de l'appliquer à tous les codes
source dans votre document.)
Comment peut-on lire une chaîne de caractères
contenant des blancs (espaces, tabulations, etc.)?
La commande associée a scanf pour pouvoir lire des chaînes
de caractères comportant des blancs est :
scanf("%[^\n]", ch);
Comment imprimer du texte sous DOS/ sous UNIX?
Une solution 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 */
Voir aussi le FAQ: 19.8
How can I direct output to the printer?
Comment utiliser le mode graphique (avec les produits
Borland) sous DOS?
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 utiliser le mode graphique (avec les produits
Borland) sous DOS?
Ceci n'a plus rien à faire avec le standard ANSI-C.
Tout ce dont on a besoin pour programmer graphiquement sous DJGPP est
contenu dans la librairie graphique gratuite ALLEGRO pour DJGPP,
téléchargeable à l'adresse :
http://www.talula.demon.co.uk/allegro
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/ 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:
Sur un PC (sous turbo-C), on peut utiliser la fonction 'bioskey()'
pour accéder directement au clavier, sans devoir attendre.
Pour des explications plus précises, consulter les fichiers
d'aide, les groupes news ou l'un des autres
sites Web.
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 Pascac, C++ ou JAVA sur
l'Internet. Je vous conseillerais de commencer votre recherche par l'un
des sites suivants:
Pour PASCAL:
Pour C++:
Pour JAVA:
Autres adresses sur l'Internet
Avant toute autre source, veuillez consulter le FAQ du groupe de
discussion comp.lang.c:
Autres tutoriels en langue française sur la programmation en C:
Quelques adresses intéressantes pour des programmeurs en C:
Groupes 'News' intéressants:
Pour des questions concernant les standards ANSI-C / K&R-C / ... :





Feedback
- Copyright © 1993,1996,1997 F.Faber