Introduction au langage C

publicité
Premier programme en C :
=> 1.4 Que fait le programme ?
=> 1.5 #include <stdio.h> : inclure un fichier d’entête ( .h “header” )qui
permet de faire appel aux fonctions standards du langage C ( stdio : standard
input output ).
Si cette ligne n’apparait pas dans le programme , la compilation renvoie une
erreur d’identification des instructions qui suivent .
Premier programme en C :
=> 1.6 Le début de la fonction principale se repère toujours par
son nom , soit : main() ou int main() ou void main()
=> 1.7 La fonction principale du programme renvoie ici
un entier de valeur égale à 0 à l’aide de l’instruction return à la fin de son
exécution ( ou de son traitement ) .
L’instruction return permet de sortir de la fonction une fois traitée .C’est
l’équivalent d’un retour de sous programme du type “retlw” en langage
assembleur dédié aux PIC .
=> 1.8 Les types de variables a,b,calcul , u et v :
int a,b,calcul : trois variables définies de type entier . ( nombres entiers signés)
char u,v : 2 variables définies de type caractère ( des symboles ou des nombres
entiers ) .
Premier programme en C :
=> 1.9 Le deuxième affichage de u renvoie : A
Le deuxième affichage de v renvoie : A
…cela est cohérent ….. Car ces 2 variables ont été déclarées
comme des caractères …..oui , mais dans le programme u=65 !!
=> 1.10 La fonction printf permet d’afficher dans la console les
contenus des variables dans différents types possibles !!
%d : indique que l’on affichera un entier …même si la variable à
visualiser ne l’est pas . Il ya donc une conversion !!!
%c : indique que l’on affichera un charactère …même si la
variable à visualiser ne l’est pas .
Dans la table ASCII :
Le codage du symbole A est la valeur entière 65 !!
Premier programme en C :
=> 1.11 En enlevant le \n de chaque printf , on obtient le
traitement suivant :
le \n permet d’effectuer un retour à la ligne après chaque
traitement d’affichage .
Premier programme en C :
=> 1.12 Le point virgule permet de terminer une ligne
d’instruction à l’édition . Si on l’oublie , il y a une erreur de
compilation . La compilation interprète l’instruction comme étant
tout ce qu’elle trouve en attendant de trouver un point virgule .
…..cela entraine parfois des messages d’erreurs qui n’ont rien
avoir avec cet oubli …..
Type de variables : init2.c et init3.c
=> 2.1 c=66 : après l’exécution de cette ligne , la valeur entière 66
est affectée à la variable c qui est définie comme un charactère .
….en code ASCII la valeur 66 permet de définir le B ! ( juste après
65 …eh oui c’est le A ) .
=> 2.3 %d et %c …déjà vu à la question 1.10
%x :indique que l’on affichera un hexadecimal …même si la
variable à visualiser ne l’est pas . Il ya donc une conversion !!!
%o :indique que l’on affichera une valeur en base 8 (base octale)
…même si la variable à visualiser ne l’est pas . Il ya donc une
conversion !!!
Type de variables : init2.c et init3.c
=> 2.4 Algorigramme de init2.c
Début
Affecter 66 à c
Afficher c en base 10
Afficher c en base 16
Afficher c comme un caractère
Afficher c en base 8 (octale)
Afficher un commentaire
Attendre la saisie d ’une frappe
Fin
Etude d’une boucle while : init4.c
=> 3.1 Les 2 instructions c=getch(); et printf(“%c\n”,c); permettent
de saisir un caractère au clavier et de l’afficher dans la console .
Si la seconde instruction n’existait pas :
la valeur saisie ne serait pas afficher ….mais elle est bien affectée à
la variable c .
=> 3.2 Le symbole != : signifie “différent de” .
Exemple : la condition a!=b renvoie 1 si a est différent de b .
elle renvoie 0 si a égal b .
Etude d’une boucle while : init4.c
=> 3.3 la boucle do…while :
=> Faire
{
Instruction 1
instruction 1;
Instruction 2
instruction 2;
…………..;
Instruction n
instruction n;
} tant que (condition est vraie)
Condition est vraie
non
oui
Etude d’une boucle while : init4.c
=> 3.4 Pour sortir de la boucle
do…while :
do
……la condition reste vraie si
“ sortie!=‘s’ ” …alors on reste
dans la boucle .
{
……pour que la condition soit
fausse ….c’est à dire , sortir
de la boucle , il faut que
l’utilisateur du programme
tape sur le clavier ‘s’ .
instruction 1;
instruction 2;
…………..;
instruction n;
} while (sortie !=‘s’)
Etude d’une boucle while : init4.c
Le programme :
=> 3.5 Algorigramme de init4.c
Début
Afficher «entrer un caractère »
Saisir et charger le caractère dans c
Afficher le caractère c
Afficher le code ASCII de c
Afficher un commentaire
Attendre la saisie d ’une frappe
Charger le caractère saisi dans sortie
sortie  ’s ’?
non
Fin
oui
Les règles de syntaxes de base:
//
tout ce qui suit sur la ligne est un commentaire.
/* */
tout ce qui est entre ces 2 symboles est un commentaire.
#
annonce une directive de compilation.
;
doit toujours terminer une instruction C.
{ }
tout ce qui est entre ces 2 accolades est un seul et même bloc.
main()
il doit y avoir au minimum une fonction nommée main qui
définit le bloc principal du programme .
/*
……Mon premier programme version 1.0 du 17/03/06...*/
#include < stdio.h >
#define TOTO 4
main()
{
int v,somme;
v=2;
somme=v+TOTO;
printf(“Bonjour !”);
printf(“La somme est égale de :%d”,somme);
}
Les règles de syntaxes de base (suite) :
Structure générale d’un programme :
/* commentaires */
#include <stdio.h>
Appel des fonctions de base du c
stdio.h : fichier « header »
#define Pi 3.14
Constante symbolique
main()
Fonction main
{
Déclaration des variables;
Types de données: int, float, char
Initialisations;
Opérateurs : = , == , != , || , % , + +
Instructions;
for ( ; ;) { …. ;}
while (condition) { … ;}
if (condition) { … ;}
}
Type de variables : init5.c
=> 5.2 : Tableau des différents types de variables
=> 5.3 : unsigned int : sa taille = 4 octets réservés en mémoire
la plage de valeur : de 0 à 4 294 967 295
……..pour un caractère char : sa taille = 1 octet réservé en mémoire
la plage de valeur : de -128 à +127
………..un unsigned char : de 0 à 255 .
Type de variables : init5.c
=> L’évolution des tailles des types des variables :
Les types de données (simples):
●
Le langage C traite des bits, octets, mots, double mots, et des réels (
nombres décimaux ) .
●
Les noms des types sont bit, char, short, int , long , float , double.
●
Par défaut toutes les nombres sont signés (signed).
●
Par contre , les entiers peuvent-être non-signés (unsigned).
●
Remarque :On peut passer d'un type à un autre par un cast, si cela à
un sens…:
int i; /* la variable i est défini comme étant un entier signé*/
unsigned int k=0xff; /*k=255*/
i = (int) k; // La variable k est convertie en un
//entier signé --> i=-1 !!
Les types de données (complexes):
Les tableaux : données de même type, accès par indexation .
●
Exemple :float temperature[10] ; tableau de 10 cases . Chaque case est un
nombre réel (float) .
●
●
Les différentes cases sont accessibles de temperature[0] à temperature[9]
●
Les structures: permettent de grouper des variables de types différents.
Les unions : permettent plusieurs interprétations d'une même zone
mémoire.C’est aussi un regroupement de plusieurs variables .
●
●
Les exemples de ces 2 derniers types de données seront traitées dans le
projet !!!
Téléchargement