Charles est un ingénieur en logiciel et un professeur d’université qui s’intéresse à la technologie, à la médecine, à l’économie et à la nutrition.
charles griffiths
Résoudre plus de puzzles
Cet article suppose que vous savez quelque chose sur la programmation dans des langages de type C. Si ce n’est pas le cas, commencez ici et revenez quand vous serez prêt.
De retour si tôt ? Vous pouvez déjà assez bien résoudre la plupart des énigmes avec les outils simples de mon article précédent. Vous pouvez lire la plupart des programmes de type C (écrits en C, C++, C#, Java, Cg et d’autres qui empruntent beaucoup à la syntaxe C) et obtenir un aperçu de ce qui se passe. Vous pouvez également écrire des programmes simples. Cet article ajoutera quelques outils à votre boîte à outils de programmation. Cela signifie apprendre davantage sur les mots-clés du langage C illustrés ci-dessus.
Plus de variables
Il n’y a toujours que trois types de variables principaux, mais il existe des sous-types qui utilisent différentes quantités de mémoire, de temps de traitement et ont des limitations différentes. Si vous voulez utiliser entiers, flotteurle sable chaîne de caractèress toute votre vie de programmation, vous le pouvez, mais les variantes suivantes peuvent parfois faciliter les choses.
- poumon – UN poumon en C est généralement le même qu’un entier mais peut être plus grand.
- court – UN courtou « entier court » est comme un entier mais plus étroit. Il a une portée plus étroite, prend moins de mémoire et le temps de traitement est compliqué. Sur la plupart des matériels modernes, il est temps d’ajouter deux courts ne sera pas inférieur au temps d’additionner deux entiers, et cela peut prendre un peu plus de temps. Pourquoi? C’est parce que le matériel est optimisé pour traiter entiers (quand les ordinateurs 16 bits étaient plus courants, entiers étaient de 16 bits ou deux octets, tout comme un court).
- double – UN doubleou « nombre à virgule flottante double précision » est comme un flotteur mais peut être plus grand. juste comme poumon est une variante de entiermême idée.
- annuler – Utilisation annuler lorsque vous voulez qu’une fonction ne retourne rien, ou qu’un pointeur puisse pointer vers n’importe quel type.
À proprement parler, un compilateur C a beaucoup de latitude quant à la taille de ces variables, tandis que d’autres langages de type C définissent les mêmes types avec moins de variation. Pour les garanties minimales en C, voir Wikipedia. La version des événements que je donne ici est celle que vous trouverez généralement dans les programmes C écrits pour un PC moderne. Les types entiers peuvent également être signé ou non signéavec le non signé variante ayant deux fois le maximum et toujours >= 0. Variantes de flotteur diffèrent également sur la distance entre un nombre positif et zéro, ou la différence minimale entre deux nombres. C’est ce qu’on appelle le epsilon. Sachez qu’il existe, mais ne vous inquiétez pas pour l’instant.
Revérifier
Si jamais vous voulez vérifier la taille d’un type, utilisez taille de(), et si vous voulez vérifier un peu de code sans lancer de compilateur, essayez ideone ou codepad.
Voici un exemple sur le codepad.
Inclure l’importation à l’aide de
Vous vous souviendrez peut-être de ma référence à l’utilisation de fonctions écrites par d’autres personnes comme un cauchemar qui fait gagner du temps. Habituellement, c’est juste un gain de temps, et généralement une bonne idée chaque fois que possible. La façon dont vous y parvenez en C est avec une directive #include que vous avez déjà vue en haut des exemples de programmes C. #include indique à C la déclaration de la fonction (à quoi ressemble une fonction, le type de retour et les variables d’entrée) afin que vous puissiez l’utiliser dans votre programme, et la définition de fonction appropriée (ce que fait une fonction, à l’intérieur du corps de la fonction) peut être trouvée dans un bibliothèque ou fichier objet lorsque vous construisez un exécutable.
D’autres langages de type C peuvent utiliser #include (Cg), import (Java) ou utiliser (C#) pour le même effet.
Plus de fonctions
En tant que programmeur de niveau intermédiaire, il est temps de se familiariser avec la bibliothèque standard de votre langage. En C, cela signifie les centaines de fonctions de la bibliothèque standard C. Vous devriez les apprendre au fur et à mesure de vos besoins, mais voici quelques-unes des fonctions les plus courantes. N’oubliez pas d’utiliser #include.
- putch( char ch ) puts( char *string ) – Ecrit un caractère ou une chaîne à l’écran.
- getch() getche() gets() – Récupère un caractère ou une chaîne à partir du clavier.
- strcpy( char *target, char *source ) – Copie une chaîne de la source vers la cible.
- strcmp( char *a, char *b ) – Compare deux chaînes par ordre alphabétique.
- malloc( size_t amount ) – Obtient de la mémoire qui doit ensuite être envoyée à free().
- free( void *p ) – Mémoire libre qui a été accordée avec un appel à malloc().
- fopen( char *filename, char *mode ) – Ouvre un fichier en lecture ou en écriture.
- fread/fwrite( void *data, size_t size, size_t count, FILE *fp ) – Lire ou écrire dans un fichier.
- fclose( FILE *fp ) – Ferme un fichier qui a été ouvert avec fopen().
Faites défiler pour continuer
Une force et une faiblesse du C est qu’aucune de ces fonctions ne fait partie du langage C. Il existe des définitions standard et elles sont souvent incluses avec les compilateurs C, mais les fonctions elles-mêmes sont écrites en C et vous êtes libre de substituer vos propres versions. Cela se fait le plus souvent avec malloc() / free().
Les implémentations C des fonctions de bibliothèque standard ne sont pas seulement largement disponibles, vous avez le choix. Lire la source de la bibliothèque et la documentation n’est pas une mauvaise façon de plonger dans la programmation intermédiaire si vous ne savez pas par où commencer.
Plus de boucles
Le C pour La boucle est la meilleure et la plus courante et, une fois que vous l’avez comprise, il y en a deux autres qui sont également faciles à comprendre.
penser à un pour axe de marche : pour (Initialiser;Tester;Avancer) { Corps }
Un autre type de boucle appelé tandis que laisse juste de côté Initialize et Advance, comme ceci : tandis que ( Test ) { Corps }. Encore une autre variante, la faire pendant est un tandis que qui effectue toujours le travail dans Body au moins une fois, et ressemble à ceci : fais { corps } tandis que (Test);
Dans tout type de boucle, Pause signifie que la boucle est terminée, et continu signifie que le corps actuel est terminé, faites donc la prochaine avance et test.
Plus de FI
C et la plupart des variantes prennent en charge deux types supplémentaires d’instructions conditionnelles. La première est une instruction if multi-chemins appelée changer. Le second est un opérateur à trois arguments (ternaire) conçu pour affecter une variable ? :. Certaines personnes disent qu’elles prêtent à confusion, mais rien ne pourrait être plus éloigné de la vérité. Comme tout, ils peuvent être utilisés de manière déroutante, alors essayez de les utiliser d’une manière simple qui tire parti de leurs forces chaque fois que possible.
un changer l’instruction est juste un chemin multiple si qui recherche dans une liste de valeurs entières constantes l’égalité avec une expression entière.
switch( choice ) { case 0: printf( "Choice is 0.\n" ); break; // break means the switch() is finished case 1: printf( "Choice is 1.\n" ); break; // in C and C++ the break after each case is optional case 2: printf( "Choice is 2.\n" ); break; // in C# it is required, each case must end in break default: printf( "Choice is not 0, 1, 2.\n" ); }
la ? : L’opérateur est connu sous le nom d’opérateur ternaire car il comporte trois parties. Cela fonctionne comme ceci :
int résultat = Test ? value_if_test_is_true : value_if_test_is_false ;
int maximum = 10; for (int i=0; iEntiers et flottants en mémoire
Vous êtes un programmeur maintenant
Lorsque vous comprenez les idées de cet article en lisant des exemples et en résolvant quelques énigmes par vous-même, vous pouvez vous considérer comme un programmeur en langage C ou C-Like. Vos compétences en programmation seront transférées assez facilement vers d'autres langages de type C, la plus grande difficulté étant les différents styles d'E/S (entrée/sortie, données du clavier, vers l'écran, vers et depuis des fichiers, etc.) et la mémoire. gestion (C utilise malloc()/free(), C++ utilise new/delete, C# et Java restituent automatiquement la mémoire lorsqu'elle n'est plus utilisée).
Il y a encore des lacunes gênantes dans vos connaissances en programmation. Vous ne connaissez pas les structures de données. Vous manquez de prudence lorsque vous comparez des flotteurs. Vous avez une compréhension limitée de la façon de résoudre des énigmes ou de comparer deux solutions également appelées algorithmes. Tout cela est très typique des programmeurs intermédiaires, mais si vous souhaitez améliorer vos compétences, des livres, des cours et d'autres ressources sont disponibles pour vous aider.
Bonne chance programmeur !
Cet article est exact et fidèle au meilleur de la connaissance de l'auteur. Le contenu est uniquement à des fins d'information ou de divertissement et ne remplace pas un conseil personnel ou un conseil professionnel en matière commerciale, financière, juridique ou technique.