10/11/2021 18:34 1/36 mémo-C Documentation - Wiki - http://debian-facile.org/ m
10/11/2021 18:34 1/36 mémo-C Documentation - Wiki - http://debian-facile.org/ mémo-C Objet : fiche mémo langage C Niveau requis : débutant, avisé Référence : http://www.squalenet.net/fr/ti/tutorial_c/sommaire.php5 Introduction installation gcc sous debian apt-get install build-essential Première compilation Création d'un fichier : vim fichier.c Code minimal : #include<stdio.h> #include<stdlib.h> int main(void){ // peut s'écrire aussi: int main(int argc, char *argv[]) instructions; // par exemple : printf("Hello world!\n"); return 0; } stdio.h et stlib.h sont des bibliothèques (des fichiers source tout prêts). main est une fonction C'est toujours par la fonction main que le programme commence. Les instructions de la fonction se mettent entre accolade ouvrante { (début) et fermante } (fin). Une fonction est forcément délimitée par des accolades. Toute instruction se termine obligatoirement par un point-virgule « ; » return 0; : Cette ligne indique qu'on arrive à la fin de notre fonction main et demande de renvoyer la valeur 0. Exemple : #include<stdio.h> int main(void){ printf("Hello World\n"); Last update: 30/11/2014 01:39 utilisateurs:hypathie:tutos:memo-c http://debian-facile.org/utilisateurs:hypathie:tutos:memo-c http://debian-facile.org/ Printed on 10/11/2021 18:34 } \n : retour à la ligne \t : tabulation printf : Syntaxe : printf("") printf("%type",variable) ou printf("%type", variable) La virgule est obligatoire. printf("%type1 %type2",var1,var2) Les virgules sont obligatoires Compilation (se trouver dans le répertoire parent du fichier): gcc main.c Il s'est créé un exécutable : ls a.out main.c Exécuter : ./a.out Ligne de commandes pour compilation et exécution Choisir le nom de l'exécutable : gcc -o nom-exécutable nom fichier-à-compiler gcc -o main.x main.c ls a.out main.c main.x 10/11/2021 18:34 3/36 mémo-C Documentation - Wiki - http://debian-facile.org/ -o : donner le nom “main.x” à l'exécutable ; main.x : nom choisi pour l'exécutable ; main.c : nom du fichier de code c qui va être compilé ; compilation et exécution : gcc -o main.x main.c; ./main.x ./main.x : pour lancer l'exécutable issu de la compilation ; Variables Les variables sont typées. Deux grands types, numériques, caractères. type déclaration récupération de valeur int int nombre=n (n est un nombre de 0 à 255) “%d,nombre” char char caratere='x' (x est une lettre) “%c,x” char char chaine[nombre-max]=“chaine” “%s,chaine” Nombre entier Variable nombre entier (int) #include<stdio.h> int main(void){ int age=22; int taille=175; printf("valeur age: %d valeur taille: %d\n",age,taille); } La dernière valeur d'une même variable est celle enregistrée. #include<stdio.h> int main(void){ int age=22; age=23; int taille=175; printf("valeur age: %d valeur taille: %d\n",age,taille); } gcc -o main.x main.c; ./main.x; valeur age: 23 valeur taille: 175 char : caractère, chaîne de caractères Pour désigner un caractère imprimable, il suffit de le mettre entre apostrophes (par Last update: 30/11/2014 01:39 utilisateurs:hypathie:tutos:memo-c http://debian-facile.org/utilisateurs:hypathie:tutos:memo-c http://debian-facile.org/ Printed on 10/11/2021 18:34 ex. 'A' ou '$'). Les seuls caractères imprimables qu'on ne peut pas représenter de cette façon sont l'antislash et l'apostrophe, qui sont respectivement désignés par \\ et \'. Le point d'interrogation et les guillemets peuvent aussi être désignés par les notations \? et \“. Les caractères non imprimables peuvent être désignés par '\code-octal' où code- octal est le code en octal du caractère. On peut aussi écrire '\xcode-hexa' où code-hexa est le code en hexadécimal du caractère (cf. page X). Par exemple, '\33' et '\x1b' désignent le caractère escape. Toutefois, les caractères non-imprimables les plus fréquents disposent aussi d'une notation plus simple : n nouvelle ligne t tabulation horizontale v tabulation verticale b retour arrière r retour chariot f saut de page a signal d'alerte Suivant les implémentations, le type char est signé ou non. En cas de doute, il vaut mieux préciser unsigned char ou signed char. char : %c (un caractère) #include<stdio.h> int main(void){ char lettre='x'; lettre='a'; printf("%c\n",lettre); } char : %s (chaîne de caractères) %c unsigned char caractère %s char* chaîne de caractères #include <stdio.h> main() { char c = 'A'; char *chaine = "chaine de caracteres"; 10/11/2021 18:34 5/36 mémo-C Documentation - Wiki - http://debian-facile.org/ printf("\nimpression de c: \n"); printf("%c \t %d",c,c); printf("\nimpression de chaine: \n"); printf("%s \t %.10s\n",chaine,chaine); printf("\t%.7s \t %.5s\t %.3s\n",chaine,chaine,chaine); printf("\n"); } gcc -o char.x char.c; ./char.x impression de c: A 65 impression de chaine: chaine de caracteres chaine de chaine chain cha Autre méthode : #include<stdio.h> int main(void){ char chaine[6]="a b c"; printf("%s\n",chaine); } Ne pas oublier de pointer un espace mémoire pour chaque caractère (ou plus) de la chaîne. les guillemets doubles autour de la valeur sont obligatoires. Une des particularités du type char en C est qu'il peut être assimilé à un entier : tout objet de type char peut être utilisé dans une expression qui utilise des objets de type entier. Par exemple, si c est de type char, l'expression c + 1 est valide. Elle désigne le caractère suivant dans le code ASCII. Ainsi, le programme suivant imprime le caractère 'B'. main() { char c = 'A'; printf("%c", c + 1); } Déclaration de plusieurs types de variables Soit le programme “declare.c” : #include<stdio.h> Last update: 30/11/2014 01:39 utilisateurs:hypathie:tutos:memo-c http://debian-facile.org/utilisateurs:hypathie:tutos:memo-c http://debian-facile.org/ Printed on 10/11/2021 18:34 main(void){ printf("Bonjour\n"); char lettre='a'; printf("valeur \"lettre\": %c\n",lettre); char chaine[10]="Hypathie"; // [10] pour déclarer une chaîne, il faut indiquer le nombre max printf("valeur \"chaine\": %s\n",chaine); int age=22; printf("Valeur \"age\": %d\n",age); return 0; } gcc -o declare.x declare.c ; ./declare.x Bonjour valeur "lettre": a valeur "chaine": Hypathie Valeur "age": 22 Une seule instruction peut appeler plusieurs variables #include<stdio.h> int main(void){ char nom[10]="Hypathie"; // 10 max, "hypathie -> de 0 à 7" char lettre='a'; printf("valeur nom : %s\nvaleur lettre : %c\n",nom, lettre); } gcc -o main.x main.c; ./main.x; valeur nom : Hypathie valeur lettre : a Référence à une lettre d'une chaîne : la première est zéro #include<stdio.h> int main(void){ char nom[10]="Hypathie"; printf("valeur nom : %s\nvaleur lettre n°5 de nom : %c\n",nom, nom[5]); } gcc -o main.x main.c; ./main.x; valeur nom : Hypathie valeur lettre n°5 de nom : h Remplacement d'un caractère d'une chaîne 10/11/2021 18:34 7/36 mémo-C Documentation - Wiki - http://debian-facile.org/ #include<stdio.h> int main(void){ char nom[10]="Hypathie"; nom[3]='A'; // On ne la re-type pas ! printf("lettre n°5 de nom : %s\n",nom); } lettre n°5 de nom : HypAthie Récupération d'éléments d'une chaîne #include<stdio.h> int main(void){ int var[2]; var[0]=2; var[1]=4; var[2]=6; printf("%d %d %d\n",var[0], var[1], var[2]); } 2 4 6 déclarations de plusieurs variables (même type) sur une ligne #include<stdio.h> int main(void){ int a, b, c; // int a,b,c; } équivalent de : #include<stdio.h> int main(void){ int 1; int 2; int 3; } Tableau #include<stdio.h> int main(void){ int tableau1[3]={2,4,6}; //tab-de-0=2, tab-de-1=4, tab-de-3=6 printf("%d %d %d\n",tableau1[0],tableau1[1],tableau1[2]); } Last update: 30/11/2014 01:39 utilisateurs:hypathie:tutos:memo-c http://debian-facile.org/utilisateurs:hypathie:tutos:memo-c http://debian-facile.org/ Printed on 10/11/2021 18:34 2 4 6 Arithmétique #include<stdio.h> int main(void){ int age=24; age=age+1; printf("%d\n",age+5); } 30 age=age+1 : modification de la valeur de la vaiable “age” ; mais le résultat de “age+5” n'est pas enregistré, la variable “age” a toujours la valeur 25. Opérateurs de calcul : + addition - soustraction * multiplication / division (quotient) % modulo (reste de division euclidienne) On peut utiliser des parenthèses pour définir des ordres de priorités dans un calcul. x=(a+b)*2 Autre type de variables numériques Pour les nombres flottant, la virgule est remplacée par un point. Nom du type Minimum Maximum signed char -127 127 int -32 767 32 767 long -2 147 483 647 2 147 483 647 float -1 x1037 1 x1037 double -1 x1037 1 x1037 unsigned char 0 255 unsigned int 0 65 535 unsigned long 0 4 294 967 295 affichage du contenu de variable : Format Type attendu ”%d“ int 10/11/2021 18:34 9/36 mémo-C Documentation - Wiki - http://debian-facile.org/ Format Type attendu ”%ld“ long ”%f“ float ”%f“ double Les conditions if else si plusieurs instructions, accolades : #include<stdio.h> int main(void){ déclarations1; déclaration2; ...; if(condition){ instruction1; instruction2; } else{ instruction1; instruction2; } } entre les parenthèses : condition entre accolades : instructions accolades dans le if et dans le else, accolades nécessaires dans le if et dans le else, si plusieurs instructions dans le if et dans le else; s'il n'y a qu'une instruction, on peut éviter les accolades. Avec qu'une instruction, pas besoin d'accolades : #include<stdio.h> int main(void){ déclaration1; déclaration2; if(condition)instruction; else instruction; } Exemples de if avec comparaison (==) #include<stdio.h> int main(void){ int var1=10; if(var1==10){ printf("var1 est équivalent à %d\n", var1); } Last update: 30/11/2014 01:39 utilisateurs:hypathie:tutos:memo-c http://debian-facile.org/utilisateurs:hypathie:tutos:memo-c http://debian-facile.org/ Printed on 10/11/2021 18:34 } var1 est équivalent à 10 sans accolades car qu'une instruction : #include<stdio.h> int main(void){ int var1=1; if(var1==10) printf("var1 est équivalent à %d\n", var1); else printf("var1 est équivalent à %d\n et non à 1\n", var1); } var1 est équivalent à 1 et non à 1 Imbrication de if, else if, else Exemple : imbrication de if et if else sans accolades avec int #include<stdio.h> int main(void){ int taille=10; if(taille==10)printf("\tMoyen\n"); else if(taille>10)printf("\tGrand\n"); else printf("\tPetit\n"); } Exemple 3 : idem avec char : #include<stdio.h> int main(void) { // afficher voyelle si 'x' == voyelle ou afficher consonne si 'x' == consonne char var='x'; if(var=='a')printf("Voyelle\n"); else if(var=='e')printf("Voyelle\n"); else if(var=='i')printf("Voyelle\n"); else if(var=='o')printf("Voyelle\n"); else if(var=='u')printf("Voyelle\n"); else if(var=='y')printf("Voyelle\n"); else printf("Consonne\n"); } Imbrication de if et else avec accolades car plusieurs instructions : #include<stdio.h> int main(void) { int taille=10; 10/11/2021 18:34 11/36 mémo-C Documentation - Wiki - http://debian-facile.org/ if(taille==10){ printf("\tMoyen\n"); printf("\n"); } else { if(taille>10){ printf("\tGrand\n"); printf("\n"); Moyen } else{ printf("\tPetit\n"); printf("\n"); } } } Moyen uploads/S4/ memo-c.pdf
Documents similaires
-
74
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jan 11, 2022
- Catégorie Law / Droit
- Langue French
- Taille du fichier 0.2588MB