Bonjour et bienvenue.
Nous commençons une nouvelle section.
Notre section est basée sur les fonctions.
Nous allons donc parler de certains des bases des fonctions en premier.
Une fonction est une fonction autonome unité de code
de programme conçue pour accomplir une tâche particulière, c'est une définition de haut niveau.
La fonction va être fondamentalement quelque chose que vous pouvez invoquer et qui
vous aide à réduire la duplication de code.
Mais ce que ça fait c'est que c'est
autonome à l'intérieur du code lui-même, et il n'a que quelques tâches qu'il va accomplir.
Les règles de syntaxe vont définir la structure d'une fonction
et comment elle peut être utilisée.
Donc selon quelle programmation langue que vous utilisez, les
fonctions peuvent être définies différemment.
Pour c, on va parler à propos des règles spécifiques pour c.
La plupart des langages de programmation prennent en charge ce concept de fonction, et je vais vous en dire
les avantages et pourquoi ils sont pris en charge.
Une fonction en c est la même que sous-programmes ou procédures dans
d'autres langages de programmation.
Alors souvent, vous entendez ces termes sous-programmes et procédures, même
chose qu'une fonction.
Unité autonome qui exécute un code, que vous pouvez appeler.
Certaines fonctions provoquent un action à entreprendre.
Nous connaissons donc un couple fonctionne jusqu'à ce point.
Nous avons étudié le printf fonction qui affiche la sortie
sur votre écran qui prend un action, fait quelque chose pour vous.
Et puis résultat, nous avons également regardé à la fonction scanf
qui prend l'entrée du clavier.
Encore une fois, cela fait en quelque sorte une autre action.
D'autres fonctions cependant peut en fait simplement trouver une
valeur pour un programme à utiliser.
Donc par exemple quand on étudie les chaînes et les tableaux de caractères, nous allons
examiner les fonctions pour la chaîne manipulation et changement des choses.
Il y a une fonction en particulier appelé longueur d'agitation et cela dira
au programmeur comment longue une certaine chaîne est.
Il n'effectue aucune action vous donne simplement des informations.
Donc les fonctions vont fonctionner tâches en fonction de la tâche que
vous devez accomplir dans votre programme, il
va soit provoquer une action, soit modifier un programmez la valeur ou renvoyez une valeur ou vous donnez
des informations d'état.
Avantages des fonctions.
Nous allons utiliser des fonctions car ont une tonne d'avantages.
Les fonctions permettent la diviser et conquérir la stratégie.
Donc, si vous deviez écrire et aller écrire un programme de
taille moyenne ou un grand programme, ça va être vraiment, vraiment difficile à maintenir.
Ça va être difficile à tester, déboguer et trouver et corriger les erreurs si vous avez
une seule grande fonction.
Alors briser et faire ça diviser la stratégie de
conquête rendra beaucoup plus facile trouver et corriger les bogues dans votre code.
Et pouvez-vous imaginer un seul programme c que tout ce que j'avais était la fonction principale
et il y avait 5000 lignes.
Nous n'aurions aucune idée de comment pour attaquer ce problème.
C'est vraiment une organisation vraiment médiocre.
Tu n'as aucune cohésion et vous plongez juste là-dedans pour essayer de
résoudre un problème.
Nous allons donc utiliser des fonctions.
Diviser et conquérir signifie essentiellement que les tâches peuvent être divisées en
plusieurs sous-tâches indépendantes.
Il réduit l'ensemble complexité du code.
Vous pouvez créer des fonctions séparées pour chaque sous-tâche, et vous pouvez
même créer plus de fonctions à diviser la sous-tâche en sous-tâches plus petites.
Chaque fois que vous créez ces fonctions, cela réduit la complexité.
Votre objectif devrait être lorsque vous créer ces fonctions
et utiliser la division pour vaincre La stratégie consiste à rendre
vos fonctions aussi cohérentes que possible.
Et ce que cela signifie, c'est s'assurer chaque fonction ne fait qu'une seule tâche, pas de
fonction faire 5 différentes tâches ou 10 tâches différentes.
Si vous écrivez une fonction qui lit entrée du clavier, faites-lui
lire l'entrée du clavier, ne faites-le vérifier une chaîne ou afficher la sortie ou
quelque chose comme ça.
Les fonctions doivent être petites et ils doivent être très cohérents.
Mais la division et la conquête la stratégie est vraiment agréable
car elle réduit cette complexité.
Au lieu d'avoir une fonction principale avec 5000 lignes de code, vous pouvez
avoir de très nombreuses fonctions effectuent des tâches spécifiques et vous
pouvez les identifier très rapidement.
Donc les fonctions vont réduire la duplication du code.
Et quand vous réduisez la duplication de code, ça va vous faire gagner
du temps lors de l'écriture, des tests et déboguer ce code.
Ça va aussi réduire la taille du code source.
Et pourquoi les fonctions réduisent-elles duplication de code car si vous
avez une tâche au lieu de le faire tâche encore et encore et encore
et encore en écrivant le même code encore et encore et encore une fois,
vous encapsulez cette tâche dans une fonction et vous invoquez la fonction, et la fonction
le fera pour vous à chaque fois, vous pas de duplication là-bas.
Si vous devez effectuer une certaine tâche plusieurs
fois dans un programme, il suffit d'écrire un fonction une fois,
comme je l'ai mentionné. Tu n'as pas besoin de écrivez ce code plusieurs fois.
Ainsi, un programme peut alors utiliser cette fonction chaque fois que nécessaire.
Et vous pouvez également utiliser le même fonctionnent dans différents programmes, et c'est
ce qui constitue une bibliothèque.
Nous avons fait ça, nous avons
utilisé la fonction printf, qui provient du bibliothèque d'entrée-sortie standard.
Et ce n'est écrit qu'une seule fois, et nous l'invoquons encore et encore.
Si cette fonction n'existait pas, nous doivent prendre la mise
en œuvre de cette fonction et la mettre dans notre programme et continuez à le répéter.
Les fonctions peuvent donc économiser beaucoup du temps
et ils peuvent réduire votre code source et vous pouvez réutilisez-les encore et encore.
Donc c'est aussi un logiciel technique de réutilisation.
Cela aide également à la lisibilité.
Lorsque vous modulez votre programme c'est ce que vous
faites lorsque vous créez ces fonctions séparées pour effectuer des tâches spécifiques, le
programme devient beaucoup mieux organisé.
Comme je l'ai mentionné, si vous aviez un routine, une fonction principale et il
y avait des tonnes de code dedans, ça va être beaucoup plus
difficile à suivre qu'une routine principale qui appelle 5 fonctions et ces fonctions effectuent des tâches spécifiques.
Cela aide donc à l'organisation du programme.
Cela aide à la maintenance du programme.
C'est beaucoup plus facile à lire et plus facile pour modifier ou corriger n'importe quel code source.
Et rappelez-vous, la maintenance phase est la phase la plus coûteuse du cycle
de vie du logiciel, cette est l'endroit où vous corrigez vos
bogues, le programme a été publié et où vous ajoutez de nouvelles fonctionnalités.
Le mieux organisé votre programme est, plus il
sera facile à maintenir.
Donc cette organisation, cette lisibilité, ceci étant capable de suivre ce
qui se passe dans votre code source très important
et ses fonctions aident énormément.
L'approche diviser pour conquérir permet également de
développer, de tester des parties du programme et débogué indépendamment.
Quand tu sors là-bas dans le réel monde et vous
commencez à travailler sur le code, vous allez remarquer que les programmes sont vraiment très importants.
Et il y a beaucoup de monde travaillant sur ces
programmes, des centaines voire des milliers.
Quand tu as tous ces gens travaillent sur un programme, il est beaucoup plus facile de
travailler sur ce programme si vous si vous faites cette approche de division conquête si
vous avez de petites tâches les gens le font et c'est indépendant.
Tu ne touche pas la même chose code source et vous pouvez aller de l'avant
et mettre en œuvre des tâches beaucoup plus facilement.
Et quand tu fais ça et que tu as plusieurs personnes travaillant sur
un projet, cela peut réduire le développement global temps qui réduit à nouveau les
coûts de maintenance, réduit les coûts de développement.
Les fonctions peuvent également être réutilisées ce qui réduira encore le temps.
Et encore une fois, nous faisons cela avec le fonction printf, réutilisez-la.
Mais toi quand tu écris ton propre utilisateur fonctions définies, vous pouvez les réutiliser encore
et encore dans le programme.
La réutilisation des logiciels est donc un gros, gros avantage des fonctions.
Quand tu penses à propos de ces fonctions.
L'autre chose intéressante à propos de la conception votre programme sur les fonctions est que vous voulez
le considérer comme une boîte noire.
Ce que cela signifie quand tu Pensez-y comme une boîte noire, tout ce à quoi
vous pensez est l'entrée à la fonction et à la sortie.
Et quand vous vous concentrez uniquement sur le entrée dans la sortie, il vous permet de
regarder la conception dans son ensemble avant de commencer la mise en œuvre.
Et donc les fonctions en général vous amener dans ce type de réflexion où vous
pouvez vous concentrer sur le design
Et j'ai mentionné que le design est important.
Le design, c'est quand vous commencez à planifier votre programme, comment
vous allez l'organiser, comment vous allez écrire le code.
Et il est important de faire cette planification avant même de commencer l'implémentation qui
écrit le code.
Et en pensant aux fonctions et en pensant uniquement aux
entrées et aux sorties, vous pouvez réfléchir à la programme va être organisé et
quelles fonctions vous devez créer.
Donc tu n'as pas à t'inquiéter juste mise en œuvre dans les détails.
Et ceci est important car le la première chose que vous
voulez faire avant d'écrire du code est juste de penser sur le design, vous ne voulez pas
commencer à penser à l'implémentation.
Beaucoup de problèmes que les étudiants quand ils écrivent du code pour la première
fois, est-ce qu'ils commencez simplement la mise en œuvre.
Ils ne pensent même pas à la problème, ils ne pensent
pas comment ils vont résoudre le problème, ils commencent juste à écrire du code.
Jamais une bonne approche.
Quand tu penses à écrire code et fonctions, pensez-y comme
de simples entrées et sorties de la fonction et cela vous
aidera dans votre conception.
Alors regardons quelques exemples.
Nous avons utilisé des fonctions intégrées telles comme printf et scanf, comme je l'ai mentionné.
Ceux sont dans la norme bibliothèque de sortie d'entrée fournie par
le langage de programmation c.
Nous connaissons donc quelque peu ce une fonction est parce que nous l'avons utilisée, mais nous n'avons
pas passé par le biais de l'amende détails granuleux de la manière dont
vous définissez une fonction ou de la manière dont vous la transmettez données à une fonction, rien de tel.
Mais avec la fonction printf, vous devriez avoir remarqué
que cela prend des données.
Vous pouvez transmettre des données à la fonction.
Les données sont les arguments entre les parenthèses après le
nom de la fonction.
Nous allons avoir un tout autre conférence sur les
arguments et les paramètres pour les expliquer davantage.
Mais à un niveau élevé, comprenez que vous pouvez transmettre des données à une fonction.
Et comprenez cela en regardant à la fonction printf.
Le premier argument du printf fonction qui sont les
données que nous lui transmettons était une chaîne littéral, c'était tout ce que
tous ces caractères entre guillemets.
Et puis nous avons aussi eu des arguments qui il aurait pu y avoir 0 ou beaucoup
d'arguments variables, qui étaient une série de variables ou d'expressions dont les
valeurs devaient être affichées.
Alors rappelez-vous, si nous avions un format spécificateurs dans le premier
argument, nous aurions alors les variables dans ceci dans les arguments suivants.
Alors as-tu pu passer données à la fonction printf.
Vous devriez également avoir remarqué comment vous peut recevoir des informations d'une
fonction, les données peuvent vous être renvoyées.
Dans la fonction scanf, un des arguments était la façon dont vous alliez
stocker les données.
Et donc tu le passerais un variable et cette variable aurait une
valeur quelconque l'utilisateur a tapé sur le clavier.
Donc ça peut en quelque sorte penser comme valeur de retour dans une fonction.
Les fonctions sont donc très précieuses car ils peuvent y intégrer des données,
puis en renvoyer des données.
Donc un exemple de codage d'une fonction et ce serait juste une fonction que
nous allons appeler, mais c'est la fonction principale.
Nous connaissons le fonctions principales, le point
d’entrée du programme.
Mais regardez comme c'est beau.
Nous appelons des fonctions lire le tri de la liste et la moyenne.
Nous n'avons que 3 lignes de code.
Nous devons aller mettre en œuvre ces fonctions, mais cela rend le programme plus organisé
car nous avons immédiatement savoir ce que fait ce programme.
Ce programme va lire une liste, ça va ensuite trier
une liste, ça va ensuite affiche la moyenne de la liste et
la liste contient des flottants.
Donc c'est très lisible, ça va pour être très facile à entretenir.
Si nous avons des bogues dans le programme, nous saurons immédiatement comment
trouver ou isoler ce bogue.
Si le bogue ne trie pas, nous peut accéder à la fonction de tri.
Si le bogue est dans le calcul de la moyenne, on peut aller à la
fonction moyenne, très facile d'isoler les erreurs.
Donc, lorsque nous mettons en œuvre ces fonctions dans la diapositive
précédente, nous les appelions simplement.
Pour implémenter réellement des fonctions, vous devez écrire le code dans le
corps de la fonction.
Vous pouvez soit utiliser des fonctions qui sont implémentés par le langage c
comme printf ou vous pouvez créer vos propres fonctions définies par l'utilisateur.
Vous n'êtes pas obligé de mettre en œuvre le fonctions printf
ou l'une des fonctions de la bibliothèque, vous implémentez uniquement vos propres fonctions.
Donc, dans cet exemple précédent avec le tri de la liste de lecture et la moyenne, il faudrait
y aller et nous le ferions doivent mettre en œuvre cette fonction.
Il faudrait fournir une fonction en-tête, un corps de fonction qui fait
réellement la lecture de la liste, le tri de
la liste et la moyenne de la liste.
Nous n'avons pas fini simplement en définissant fonctions, nous devons les implémenter.
Et lorsque vous implémentez le fonctions, vous souhaitez
toujours utiliser des noms de fonction descriptifs pour préciser ce que fait le programme
et comment il est organisé.
Dans l'exemple précédent, nous avions un fonction nommée liste de lecture, assez clair ce que
cela fait, tri par nom de fonction.
Nous n'avons pas nommé la fonction x y ou z.
Nous avons décrit cette fonction.
C'est la même chose quand vous décrivez ou
créez des variables, des noms significatifs.
Et aussi si vous faites ces fonctions où ils sont assez génériques
là où ils font réellement quelque chose et ils prennent des données génériques,
vous pourriez en fait réutilisez-les dans d'autres programmes, tout
comme une fonction de bibliothèque.
Encore une fois, prise en charge de la réutilisation des logiciels.
Donc, dans ces prochaines conférences, nous allons parler de la façon
dont nous pouvons définir une fonction, la syntaxe spécifique, comment nous pouvons invoquer
et appeler une fonction et comment nous pouvons transmettre et renvoyer des données d'eux.
C'est ce sur quoi nous allons nous concentrer dans les prochaines conférences.
Je voulais aussi mentionner que notre routine principale que nous
avons vue maintes et maintes fois dans chaque programme c, c'est une fonction.
La fonction principale est une nom reconnu dans le
système c, il indique où programme est de commencer l'exécution.
Tous les programmes c ont toujours un fichier main.
La fonction principale peut prendre données lorsque vous lui passez, les
arguments de la ligne de commande ou n'a pas à prendre de données.
Il a également en option données qu'il peut renvoyer.
Vous remarquerez que nous utilisons fonctions principales qui renvoient 0.
Habituellement, il est utilisé lorsque vous souhaitez renvoyer des codes d'erreur.
Mais nous avons utilisé des fonctions spécifiques déjà et la fonction
la plus importante est cette fonction principale et cela aide encore une fois à organiser le code.
Nous savons toujours où Le programme démarre car il
suffit de trouver le principal.
Ceci est une description de haut niveau des fonctions type d'identification des avantages
des fonctions et ce qu'est exactement une fonction.
Maintenant nous voulons parler sur la mise en œuvre.
Merci.