Bonjour et bienvenue à nouveau.
Dans cette conférence, j'aimerais pour parler de ce qui se
passe lors de la création d'un programme c.
Il y a donc quatre tâches fondamentales dans la création de tout programme c.
Et quelles sont ces tâches incluent l'édition, la compilation, la liaison
et l'exécution.
Nous avons parlé des différentes étapes que vous utiliserez lorsque vous
écrivez un programme c en termes de pour comprendre les exigences, vous allez concevoir votre
code, vous allez écrire votre code, vous allez ensuite le tester
et le déboguer et ainsi de suite, puis maintenez-le.
Ce dont je parle ici, c'est de quoi vous devez en fait faire lorsque vous
commencez à écrire un programme. Nous avons en quelque sorte parlé sur l'édition, la compilation
mais la liaison et l'exécution sont également importantes.
Et de quoi je veux parler voici les détails de ceci.
Donc ces tâches vont devenir une seconde nature pour toi parce que tu
vas le faire chaque fois que vous écrivez un programme c.
Vous allez éditer votre code source, vous allez
compiler, vous allez créer un lien, et puis vous allez courir.
Tu vas faire ceci très, très souvent.
Donc les processus d'édition, la compilation, la liaison et l'exécution sont les
mêmes pour le développement programmes dans n'importe quel environnement avec n'importe
quel langage compilé.
Ce n'est pas unique à c.
Si vous écrivez java - un java programme, vous allez écrire le
code source, vous allez pour compiler le code source.
Lien - vous n'êtes peut-être pas aussi conscient de en java mais ça va faire une
sorte de lien et nous en parlerons sur ce qu'est la liaison, puis
vous allez exécuter le programme.
Vous allez faire tout cela.
Ce que je décris ici encore une fois, c'est comment c'est fait dans c.
Donc l'édition est exactement ce que vous penseriez que c'est.
C'est le processus de création et modifier le
code réel, le code source c.
Le code source c va être à l'intérieur d'un fichier.
Et ça va tout contenir les déclarations et toutes les
instructions que vous écrivez.
Tous les fichiers de code source c se terminent avec le . c, et c'est ainsi que vous pouvez
identifier qu'il s'agit d'un fichier de code source.
Avant ça . l'extension c va pour être appelé le nom
de base, vous voulez que vos noms de fichiers soient significatifs.
Si vous écrivez un programme c qui ajoute deux numéros, vous pouvez avoir un
fichier appelé add. c, qui contient un code source.
Et rappelez-vous que la plupart des c les programmes vont avoir de
nombreux fichiers différents.
Vos fichiers doivent donc avoir de bons noms.
Mais la façon dont vous pouvez identifier c le code source est le. extension c.
Ils contiennent tous le fichier. extension c.
Maintenant, lorsque nous éditons notre code pour cette classe, nous allons utiliser un
environnement de développement intégré.
Nous n'allons pas simplement pour utiliser un éditeur simple.
Un exemple d'éditeur simple serait quelque chose comme wordpad.
Nous allons utiliser quelque chose qui a un éditeur mais qui
a aussi beaucoup d'autres choses qui vous aident écrivez votre code plus efficacement.
L'IDE - et c'est ce qu'on appelle un IDE, environnement de développement intégré.
Celui que nous allons utiliser pour cette classe est
Code Blocks, je vais couvrir en détail, mais nous allons utiliser des
blocs de code pour la tâche d'édition.
Mais vous pouvez utiliser ce que vous voulez.
Si vous souhaitez utiliser le bloc-notes, si vous
voulez utiliser quelque chose d'encore plus minuscule, vous pouvez Atom, il y a IDE de studio visuel,
mais celui que nous allons couvrir ici est de savoir comment pour modifier votre code et vos blocs de code.
Et c'est une bonne idée et le raison pour laquelle je l'ai choisi,
nous parlerons plus en détail, mais c'est multi-plateforme et facile à utiliser.
L'édition est donc la base processus, en écrivant le code.
Compiler.
Nous savons ce que fait un compilateur.
Il faut juste ce haut niveau code de langue et et le
convertit en langage machine, et il détecte et trouve les erreurs dans votre code.
Après avoir modifié votre code, vous êtes va exécuter le compilateur.
Donc, l'entrée du compilateur est va être tout votre
code source, tout votre. fichiers c tout ce que vous éditez.
Et encore une fois, un programme c peut ont de nombreux fichiers source.
Mais les entrées du compilateur sont ces fichiers source, compilation elle-même
convertissant ce code est un processus en deux étapes.
La première étape s'appelle la phase de prétraitement.
Au cours de laquelle votre code peut être modifié ou ajouté à.
Et la deuxième étape est la compilation réelle, il génère le code
du langage assembleur.
Et nous en parlerons plus en détail détail, cette phase de pré-traitement.
Mais tu as juste besoin de savoir maintenant qu'il y a deux étapes
lorsque vous faites la compilation.
Celui sur lequel nous allons nous concentrer ou celui qui est facile à comprendre
est la génération du code objet.
Donc le compilateur va examinez chaque déclaration et vous
vous assurerez que le la syntaxe est correcte et que la sémantique
du langage est respectée.
La syntaxe est de s'assurer que le la structure du code est correcte, que vous avez
des points-virgules à la fin de la déclaration,
que vous utilisez des types de données, que vous êtes - vous êtes suivant les règles de la langue.
La sémantique est le sens des mots.
Donc, si vous utilisez un if mot-clé, c'est une condition.
La sémantique se produit dans le phase de compilation en créant une table de
symboles et ainsi de suite.
Mais le compilateur est important.
Ça va générer ce code objet.
Ça va te dire si tu avoir des erreurs dans votre syntaxe.
Il peut aussi parfois reconnaître si vous avez ou non du code
mort où le code n'est pas utilisé.
Il ne trouve pas d'erreurs logiques.
Il ne trouve que les erreurs de syntaxe.
Encore une fois, la syntaxe est le règles et langage.
Les erreurs de logique sont la signification.
Comme si tu as fait une erreur en logique, vous pouvez faire une
erreur dans la fonctionnalité.
Pour que votre code puisse fonctionner, il peut compiler, mais cela peut ne pas fonctionner comme prévu, et c'est
ce qu'on appelle une erreur logique.
Le compilateur ne le dira pas vous si vous avez une erreur de logique.
Si vous vouliez demander à l'utilisateur un nombre au lieu d'une chaîne de caractères ou vous demandez à l'utilisateur
son dernier nom avant leur prénom, c'est une
erreur de logique. Le compilateur ne va pas pour vous dire ces types d'erreurs.
Erreurs typiques signalées par le compilateur va être des
choses comme des variables non déclarées, une expression qui n'est pas
conforme à la syntaxe, vous n'avez pas le droit entre parenthèses, vous connaissez des blocs
qui n'ont pas de blocs de fin.
Tu vas devenir très, très familier avec les erreurs du
compilateur et leur signification.
J'espère qu'après avoir appris le langage c et vous exécutez le
compilateur, vous allez voir une erreur et
vous pourrez la corriger immédiatement.
Dites whoops oublié une syntaxe ou oups oublié un point-virgule,
oh, j'ai oublié de donner un droit crochet pour terminer ce bloc de code.
Cela va devenir une seconde nature.
Donc, après avoir réparé tous les erreurs et votre
compilation est réussie, ça va traduire en langage d'assemblage et générer
ce code objet.
Donc, l'objet réel le code est un. o fichier.
C'est le résumé réel code de langue qui est exécuté.
Il a une extension. obj ou. o. obj généralement sous windows sera l'extension. o sur un Linux ou un Macintosh le système sera l'extension.
Vous allez voir ce fichier généré après avoir compilé votre code.
Et ce n'est que la phase finale
de la compilation, c'est le véritable langage d'assemblage.
Ça va être binaire, ça ne ressemble pas à du texte que
vous ne pourrez pas voir.
Ça va juste avoir un . o, et c'est ce que le
compilateur génère.
La façon dont vous exécutez le compilateur en c, vous utilisez réellement une commande.
Vous n'aurez probablement pas
besoin de faire cela beaucoup parce que l'ide, l'éditeur dans le développement intégré est va le faire pour vous en cliquant
simplement sur une option de menu, mais c'est important de savoir ce qui se passe.
Ainsi, lorsque vous lancez le compilateur ,
il utilise généralement un compilateur GNU qui est une commande gcc.
Mais au niveau de base, tu viens de courir un programme de compilation cc ou gcc.
Vous exécutez ce programme et puis vous spécifiez l'entrée.
Rappelez-vous, le compilateur prend comme entrée les fichiers source.
Vous spécifiez l'entrée en utilisant un -c, puis en spécifiant
les fichiers source, l'un après l'autre.
Voici donc des exemples cc-cmyprog. c ou si vous utilisez le compilateur GNU, qui est
un compilateur populaire gcc-c.
Et si vous omettez le drapeau c, votre Le programme sera automatiquement lié,
ce qui est la prochaine étape.
Mais vraiment c'est facile d'exécuter ça compilateur si vous êtes à l'interface de
ligne de commande.
C'est encore plus facile si vous utilisez une option de menu que nous allons probablement
faire dans cette classe.
Mais encore une fois, il faut input, les fichiers source c.
Dans les blocs de code, comme je
l'ai mentionné, vous allez simplement cliquer sur une option de menu et il sera
compilez automatiquement un lien, puis vous pouvez cliquer sur un autre menu option, il s'exécutera automatiquement.
Mais encore une fois, qu'est-ce qui se passe sous le capot est que vous émettez en fait
la commande du compilateur avec le -c flag et les fichiers source d'entrée.
Après avoir compilé, vous créez un lien. Comme je l'ai dit, chaque langage de programmation a un
lien, mais beaucoup des fois c'est transparent, vous ne saurez même pas
ce qui se passe.
En c, le processus de liaison est important parce que ce n'est pas toujours transparent.
Mais avec la plupart des
IDE modernes d'aujourd'hui, c'est le cas, mais je dois souligner que c'est important en c.
Donc, après que le programme a été traduit en cela. ancien code son code objet, il alors est
prêt à être lié.
La raison pour laquelle nous établissons des liens est
si nous sommes en utilisant des bibliothèques externes, nous devons saisir toutes ces autres bibliothèques et mettez-les dans un seul programme.
Donc, créer des liens, c'est obtenir tout les dépendances en place
et la construction d'un fichier exécutable réel.
Alors le . o fichier est les objets.
Vous liez ensuite tous les . os dans un exécutable.
Et encore une fois, c'est
généralement transparent, se produit généralement automatiquement lorsque vous compilez.
Mais encore une fois, il se peut que non et vous devrez peut-être exécuter une commande
distincte, comme un -l ou quelque chose comme ça.
Mais il faut tous ces objets fichiers et construit un exécutable.
Et l'exécutable est ce que vous exécutez.
Alors ça va combiner tout ça.
Et puis ça va aussi se combiner.
Et vous pouvez avoir. os qui sont bibliothèques supplémentaires, que d’autres programmes que vous souhaitez
utiliser quelqu'un d'autre a écrit
ou d'autres bibliothèques fournies avec le langage c.
Tu vas tout prendre ceux-ci et les mettre ensemble.
Et la phase de liaison sera détecter et signaler également les erreurs.
Ce sont deux phases distinctes.
Lier, encore une fois, serait généralement comme des erreurs de redéfinition ou vous essayez
d'appeler une fonction qui n'existe pas.
Donc, si vous ne l'avez pas. o fichier vers composez tout le programme, vous allez avoir
une erreur de liaison.
Et vous aurez besoin de tous les fichiers. o's.
Et encore une fois, le. o's peut-être même pas à vous.
Ils peuvent venir avec la même langue, ils peuvent faire partie de la bibliothèque standard ou ils
peuvent venir avec un autre programme que quelqu'un d'autre a écrit.
Mais vous avez besoin de tout ça. o's pour former un exécutable.
Ainsi, les bibliothèques de programmes prennent en charge et étendre le langage C en fournissant des routines pour effectuer des opérations qui
ne font pas partie de la langue.
Les bibliothèques d'entrée et de sortie sont exemple,
bibliothèque mathématique, bibliothèques de manipulation de chaînes.
C'est juste la même chose si tu es familier avec le programme java, c'est
la même chose que l'api java.
C'est la même chose que les packages.
C'est ce concept de
je veux écrire des données dans un fichier je ne
veux pas l'implémenter moi-même, je suis va utiliser une bibliothèque existante fournie avec la langue.
C'est toujours écrit en c, c'est juste quelqu'un c vient avec ça.
Donc il y
a toutes sortes de différentes bibliothèques que nous allons découvrir et utiliser.
Cela se produit dans le cadre de la phase de liaison.
Donc un échec lors de la phase
de liaison signifie qu'une fois de plus vous
devez revenir en arrière et modifier votre code source pour faire sûr que
vous pouvez trouver ce fichier objet, donc de nombreux échecs signifie que vous avez juste besoin d'inclure un fichier ou quelque chose comme ça. Ce deviendra également une seconde nature.
Succès, si tu as terminé compilez avec succès, vous avez terminé la liaison
avec succès, que produira un fichier exécutable.
Dans un environnement Windows, le
fichier exécutable aura un. extension exe.
Sous Linux et Windows, il sera juste avoir par défaut un. en dehors.
Vous pouvez changer le nom d'un fichier. en dehors à quelque chose
de plus significatif en émettant simplement quelque chose avec la commande du compilateur.
Mais la plupart des IDE
dans les blocs de code aussi aura un programme de
compilation et de liaison en une seule opération et il sera produire l'exécutable et ensuite vous pouvez simplement double-cliquer sur l'exécutable
ou vous pouvez exécuter l'exécutable à partir d'une commande ou de l'option de menu.
Mais non au bas niveau si tu es sous Linux, vous allez
voir un fichier a. out par défaut comme votre exécutable. Sur les fenêtres, vous verrez un fichier. EXE.
Un programme de toute taille significative se composera de plusieurs fichiers de code source,
je l'ai mentionné plus tôt.
Chaque fichier de code source a besoin du compilateur pour
générer le fichier objet, qui doit être lié.
Le programme est beaucoup plus facile à gérer en le divisant en un
certain nombre de fichiers sources plus petits.
Vous voudrez utiliser de nombreuses sources fichiers, et vous ne voulez pas d'un
fichier source contenant 5000 lignes de code.
Ce n'est pas cohérent.
Ce n'est pas facile à gérer.
Alors tu vas créer des fichiers qui
contiennent le code source, et le code source va être spécifique.
Ça va avoir un fonctionnalité spécifique.
Il est beaucoup plus facile de développer
et beaucoup plus facile à déboguer et est beaucoup plus cohérent.
Alors tu vas avoir de nombreux fichiers sources plus petits.
Vous ne voulez pas de fichiers source volumineux avec des milliers de lignes de code.
Et tous ces fichiers sources sont va constituer tout le programme.
Ils vont tous avoir leur propre . o, et ils seront
tous entrés dans le compilateur.
Tous ces concepts qui font le
programme, sont essentiellement également considérés comme un projet.
Vous pouvez le considérer comme cela à un niveau supérieur.
C'est votre projet, c'est votre programme.
Après avoir enfin tout fait ceci et vous l'avez lié, vous avez votre
fichier exécutable, vous pouvez ensuite exécuter le programme.
Dans la plupart des IDE, c'est juste va être un clic
de menu ou vous pouvez double-cliquer dans les fenêtres, vous pouvez double-cliquer sur l'exe.
Et si vous êtes sous Linux, vous tapez simplement un. en dehors.
Maintenant, quand un. tu dois avoir certaines autorisations donc vous devez peut-être émettre une commande de changement
de mode, mais pour l'exécuter, vous pouvez dire. /une. et qui exécutera le programme à partir
de la ligne de commande Linux.
Mais encore une fois, vous n'êtes pas obligé de le faire inquiétez-vous à ce sujet. Ainsi, l'étape d'exécution
est l'endroit où vous exécutez votre programme.
Chacune des déclarations du programme est exécuté séquentiellement à son tour.
Si le programme demande données
de l'utilisateur, le programme se mettra en pause et obtiendra cette entrée.
Vous pouvez obtenir l'entrée via le clavier ou il peut obtenir l'entrée via l'interface utilisateur graphique
si vous avez bibliothèques pour cela dans votre code c.
Résultats affichés par le programme apparaissent dans
une fenêtre appelée la console.
Et nous allons montrer vous en avez des exemples lorsque nous parlons
de blocs de code.
Mais lorsque vous exécutez votre programme, généralement, vous allez voir la sortie.
Pas toujours, parfois les programmes faire des choses qui ne produisent pas de sortie.
Mais généralement, ils produisent une sortie
et vous voyez la sortie directement sur le terminal ou la console.
L'étape d'exécution génère également une grande variété de conditions d'erreur.
Donc, vous pouvez produire le mauvais
sortie qui n'est qu'une erreur de logique et vous devez revenir en arrière et modifiez votre code source.
Il peut rester là et ne rien faire parce que vous avez des problèmes de logique.
Et puis enfin ça peut
planter votre ordinateur qui est le pire des cas, ce qui signifie que vous avez fait
quelque chose de vraiment mauvais dans votre programme
et c'était tellement mauvais que le programme vient de mourir ou simplement
ou a en fait causé d'autres programmes sur votre système d'exploitation pour planter tout votre ordinateur.
Donc, exécuter l'application c réelle peut avoir des problèmes. Si le programme n'effectue pas la fonctionnalité prévue, alors vous devez revenir en
arrière et modifier la
source code que vous devrez peut-être réorganiser ou reconcevoir et
c'est là que nous parlé des différentes étapes.
C'est ce qu'on appelle le débogage phase pour trouver et corriger vos erreurs.
Nous allons avoir un tout section
sur le débogage parce que c'est si important.
J'ai mentionné plus tôt celui-là une des meilleures façons d'apprendre est
d'apprendre à travers vos erreurs.
Tu vas constamment revenir en arrière et éditer le code source et déboguer.
L'ensemble du processus de compilation, la
liaison et l'exécution du programme sont répétées jusqu'à ce que vous ayez terminé, jusqu'à
ce que vous ont tous les résultats dont vous avez besoin pour la fonctionnalité de ce code.
Alors voici, encore une fois, une autre belle illustration que j'aime fournir.
Ceci est tiré d'un livre appelé Beginning C par Horton.
Mais c'est le processus que vous allez avoir.
Vous allez éditer votre code source.
Vous allez créer un fichier avec un . c et un nom significatif.
Vous allez utiliser un éditeur pour faire cela ou
un IDE, environnement de développement intégré, quelque chose comme les blocs de code.
Vous allez ensuite le compiler.
Le compilateur va générer un fichier obj un fichier o.
S'il ne génère pas ce
fichier, cela signifie que vous avez des erreurs et que vous devez revenir en arrière et les corriger.
Après avoir créé les fichiers obj, les fichiers objets, vous devez ensuite les lier
tous ensemble pour créer un fichier exécutable.
Et tu pourrais aussi avoir erreurs dans cette phase
où ils ne sont pas correctement liés.
Vous devez revenir en arrière et modifiez votre code source.
Une fois que vous n'avez en fait aucune
erreur et vous avez un fichier exécutable, vous pouvez alors exécuter votre programme.
Et encore une fois, après avoir exécuté votre programme, vous pouvez toujours avoir des erreurs car il peut
y avoir des erreurs de logique.
Alors tu reviendrais et modifiez votre code source.
Donc ça va devenir un
processus répétitif avec lequel vous serez très familier.
Éditez, compilez, liez, exécutez.
Et c'est encore une fois typiquement ce que vous faites dans toutes les langues.
Tu vas recommencer et encore et encore jusqu'à ce que
votre programme réponde à toutes vos exigences.