نسمة طيف
اهلا وسهلا بك زائرنا الكريم
منتديات نسمة طيف ترحب بك أجمل ترحيب
ونتمنى لك وقتاً سعيداً مليئاً بالحب كما يحبه الله ويرضاه
فأهلاً بك في هذا المنتدى المبارك إن شاء الله
ونرجوا أن تفيد وتستفيد منا
وشكراً لتعطيرك المنتدى بباقتك الرائعة من مشاركات مستقبلية
لك منا أجمل المنى وأزكى التحيات والمحبة
نسمة طيف
اهلا وسهلا بك زائرنا الكريم
منتديات نسمة طيف ترحب بك أجمل ترحيب
ونتمنى لك وقتاً سعيداً مليئاً بالحب كما يحبه الله ويرضاه
فأهلاً بك في هذا المنتدى المبارك إن شاء الله
ونرجوا أن تفيد وتستفيد منا
وشكراً لتعطيرك المنتدى بباقتك الرائعة من مشاركات مستقبلية
لك منا أجمل المنى وأزكى التحيات والمحبة
نسمة طيف
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.


منتدى عربي يشمل جميع المواضيع اهلا بيكم في منتدى نسمة طيف
 
الرئيسيةدخولأحدث الصورالتسجيل
المواضيع الأخيرة
» الحمد لله على نعم الله
langage c ++++ Emptyالجمعة أغسطس 09, 2024 11:00 pm من طرف ملاك الطيف

» "حمــال أفقه منك يا حســن
langage c ++++ Emptyالجمعة أغسطس 09, 2024 10:54 pm من طرف ملاك الطيف

» المسلسلات لا تمثل قيما الدينة
langage c ++++ Emptyالجمعة أغسطس 09, 2024 10:46 pm من طرف ملاك الطيف

» فتفقدوا أحبابكم.
langage c ++++ Emptyالجمعة أغسطس 09, 2024 10:20 pm من طرف ملاك الطيف

»  اتركوا المنتدى حالا
langage c ++++ Emptyالأربعاء يوليو 17, 2024 5:06 pm من طرف ملاك الطيف

»  اب يرسل ابنته للدعارة !!!
langage c ++++ Emptyالثلاثاء يوليو 16, 2024 2:57 pm من طرف ملاك الطيف

» | صلـــة الرحـم |
langage c ++++ Emptyالثلاثاء يوليو 16, 2024 12:48 am من طرف ملاك الطيف

» ما سبب ارتفاع نسب الطلاق
langage c ++++ Emptyالثلاثاء يوليو 16, 2024 12:40 am من طرف ملاك الطيف

»  لســت مجبـــراً أن أفهــم الآخريــن مـن أنـــا..
langage c ++++ Emptyالثلاثاء يوليو 16, 2024 12:33 am من طرف ملاك الطيف

أفضل 10 أعضاء في هذا المنتدى
ملاك الطيف
langage c ++++ Vote_rcaplangage c ++++ Voting_barlangage c ++++ Vote_lcap 
رغد
langage c ++++ Vote_rcaplangage c ++++ Voting_barlangage c ++++ Vote_lcap 
روايات انسان
langage c ++++ Vote_rcaplangage c ++++ Voting_barlangage c ++++ Vote_lcap 
زهرة الياسمين
langage c ++++ Vote_rcaplangage c ++++ Voting_barlangage c ++++ Vote_lcap 
دموع الورد
langage c ++++ Vote_rcaplangage c ++++ Voting_barlangage c ++++ Vote_lcap 
المحب
langage c ++++ Vote_rcaplangage c ++++ Voting_barlangage c ++++ Vote_lcap 
البرنسيسه
langage c ++++ Vote_rcaplangage c ++++ Voting_barlangage c ++++ Vote_lcap 
دموع انسان
langage c ++++ Vote_rcaplangage c ++++ Voting_barlangage c ++++ Vote_lcap 
محمد15
langage c ++++ Vote_rcaplangage c ++++ Voting_barlangage c ++++ Vote_lcap 
نسمة طيف
langage c ++++ Vote_rcaplangage c ++++ Voting_barlangage c ++++ Vote_lcap 

 

 langage c ++++

اذهب الى الأسفل 
كاتب الموضوعرسالة
chahid
عضو مبدع
عضو  مبدع
chahid


عدد المساهمات : 78
تاريخ التسجيل : 24/02/2011

langage c ++++ Empty
مُساهمةموضوع: langage c ++++   langage c ++++ Emptyالإثنين نوفمبر 19, 2012 11:13 am

CHAPITRE 2

SAISIE DE NOMBRES ET DE CARACTERES AU CLAVIER


LA FONCTION GETCH


La fonction getch, appartenant à la bibliothèque conio.h permet la saisie clavier d' un caractère alphanumérique, sans écho écran. La saisie s'arrête dès que le caractère a été frappé.

La fonction getch n'est pas définie dans la norme ANSI mais elle peut exister dans la bibliothèque d'autres compilateurs.

On peut utiliser getch de deux façons:

- sans retour de variable au programme:

Exemple: printf("POUR CONTINUER FRAPPER UNE TOUCHE ");
getch();

- avec retour de variable au programme:

Exemple: char alpha;
printf("ENTRER UN CARACTERE (ATTENTION PAS DE RETURN) ");
alpha = getch();
printf("\nVOICI CE CARACTERE: %c",alpha);

Les parenthèses vides de getch() signifient qu'aucun paramètre n'est passé à cette fonction par le programme.


LA FONCTION SCANF



La fonction scanf, appartenant à la bibliothèque stdio.h, permet la saisie clavier de n'importe quel type de variable.

Les variables à saisir sont formatées, le nom de la variable est précédé du symbole & désignant l'adresse de la variable (On reverra ce symbole dans le chapitre sur les pointeurs).
La saisie s'arrête avec "RETURN" (c'est à dire LF), les éléments saisis s'affichent à l'écran (saisie avec écho écran).

Tous les éléments saisis après un caractère d'espacement (espace, tabulation) sont ignorés.
Exemples: char alpha;
int i;
float r;
scanf("%c",&alpha); /* saisie d'un caractère */
scanf("%d",&i); /* saisie d'un nombre entier en décimal */
scanf("%x",&i); /* saisie d'un nombre entier en hexadécimal*/
scanf("%f",&r); /* saisie d'un nombre réel */


Remarque: Si l'utilisateur ne respecte pas le format indiqué dans scanf, la saisie est ignorée. Aucune erreur n'est générée.

Exemple: char alpha;
scanf("%d",&alpha);
Si l'utilisateur saisie 97 tout va bien, alpha devient le caractère dont le code ASCII vaut 97.
Si l'utilisateur saisie a, sa saisie est ignorée.


Exercice II_1:

Saisir un caractère au clavier, afficher son code ASCII à l'écran. Soigner l'affichage.

Exercice II_2: Saisir un nombre entier en décimal au clavier, l'afficher en hexadécimal à l'écran. Soigner l'affichage.

Exercice II_3:

Que va-t-il se passer lors de l'exécution du programme suivant, si l'utilisateur saisit 67?

#include <stdio.h>
#include <conio.h>
void main()
{
char c;
printf("ENTRER UN CARACTERE: ");
scanf("%c",&c);
printf("VOICI SON CODE ASCII: %d\n",c);
printf("POUR CONTINUER FRAPPER UNE TOUCHE ");
getch();
}
NOTION DE FLUX D'ENTREE



Lorsque l'on saisit au clavier une suite de caractères terminés par "RETURN" ces caractères sont rangés dans un tampon (ou buffer) de type FIFO (First In/First Out), le dernier caractère rangé dans le tampon est LF (code ASCII 0x0A).
Cette suite de caractères est appelée flux d'entrée.
La taille du tampon dépend de la machine et du compilateur utilisés. Sur un PC et en TURBOC, la taille du tampon est de 127 caractères.

Une compilation du programme vide le tampon.


LA FONCTION SCANF
DEUXIEME APPROCHE



La fonction scanf ne se comporte pas tout à fait comme décrit plus haut. Si le tampon est vide, tout se passe comme précédemment décrit.
Au contraire, si le tampon n'est pas vide, la fonction scanf en teste le premier élément, s'il correspond au format de la variable invoquée, le tampon perd cet élément et la variable en prend la valeur.

Tout caractère ou nombre saisi au clavier et non pris en compte par la fonction scanf est rangé dans le tampon.


Exemple et Exercice II-4:


#include <stdio.h>
#include <conio.h>
void main()
{
char c1,c2;
printf("ENTRER UN CARACTERE: ");
scanf("%c",&c1);
printf("VOICI SON CODE ASCII EN HEXADECIMAL: %x\n",c1);
printf("ENTRER UN AUTRE CARACTERE: ");
scanf("%c",&c2);
printf("VOICI SON CODE ASCII EN HEXADECIMAL: %x\n",c2);
printf("POUR CONTINUER FRAPPER UNE TOUCHE ");
getch();
}
Si l'utilisateur saisit K pour c1, le programme donnera l'écran d'exécution suivant:


ENTRER UN CARACTERE: K
VOICI SON CODE ASCII EN HEXADECIMAL: 4b
ENTRER UN AUTRE CARACTERE: VOICI SON CODE ASCII EN HEXADECIMAL: a


Lors de la saisie de K, le caractere LF est rangé dans le tampon. Lors du deuxième appel à scanf, le tampon n'est pas vide, l'utilisateur ne peut effectuer sa saisie clavier, le code ascii de LF est affiché à l'écran.
A l'issue de l'exécution, le tampon est vide.


Exercice II_5: Le programme suivant s'exécute-t-il "correctement" ? Que contient le tampon à l'issue de l'exécution ?

#include <stdio.h>
#include <conio.h>
void main()
{
char c;
int i;
printf("ENTRER UN CARACTERE: ");
scanf("%c",&c);
printf("VOICI SON CODE ASCII EN HEXADECIMAL: %x\n",c);
printf("ENTRER UN NOMBRE: ");
scanf("%d",&i);
printf("VOICI CE NOMBRE EN HEXADECIMAL: %x\n",i);
printf("POUR CONTINUER FRAPPER UNE TOUCHE ");
getch();
}


Exercice II_6: Le programme suivant s'exécute-t-il "correctement" ? Que contient le tampon à l'issue de l'exécution ?

#include <stdio.h>
#include <conio.h>
void main()
{
char c;
int i;
printf("ENTRER UN NOMBRE: ");
scanf("%d",&i);
printf("VOICI CE NOMBRE EN HEXADECIMAL: %x\n",i);
printf("ENTRER UN CARACTERE: ");
scanf("%c",&c);
printf("VOICI SON CODE ASCII EN HEXADECIMAL: %x\n",c);
printf("POUR CONTINUER FRAPPER UNE TOUCHE ");
getch();
}

Exercice II_7: Dans l'exercice II_4 que se passe-t-il si, lors de la première saisie, l'utilisateur tape 67 ?


Remarque: En TURBOC la fonction flushall() permet de vider le tampon d'entrée. En l'invoquant après un appel à scanf, on se débarrasse des problèmes de flux d'entrée.


LA FONCTION GETCHAR



La fonction getchar pemet la saisie d'un caractère (char). Elle appartient à la bibliothèque stdio.h. Les 2 écritures suivantes sont équivalentes:

char c; char c;
printf("ENTRER UN CARACTERE: "); printf("ENTRER UN CARACTERE: ");
scanf("%c",&c); c = getchar();

Non formatée, la fonction getchar est moins gourmande en place mémoire que scanf. Il vaut mieux l'utiliser quand cela est possible; getchar utilise le flux d'entrée exactement comme scanf.


CORRIGE DES EXERCICES



Exercice II_1:

#include <stdio.h>
#include <conio.h>
void main()
{
char c;
printf("ENTRER UN CARACTERE: ");
scanf("%c",&c);
printf("VOICI SON CODE ASCII EN DECIMAL: %d\n",c);
puts("Pour continuer frapper une touche...");
getch();
}
Exercice II_2:

#include <stdio.h>
#include <conio.h>
void main()
{
int nombre;
printf("ENTRER UN NOMBRE ENTIER: ");
scanf("%d",&nombre);
printf("VOICI CE NOMBRE EN HEXADECIMAL: %x\n",nombre);
printf("POUR CONTINUER FRAPPER UNE TOUCHE ");
getch();
}

Exercice II_3: Seul le caractère 6 est pris en compte. L'affichage suivant la saisie donnera 54, c'est à dire le code ASCII de 6.


Exercice II_5: Oui car lors du deuxième appel à scanf, le programme attend un entier(int), alors que le tampon ne contient qu'un caractère (char).
A l'issue de l'exécution le tampon contient les deux caractères LF.


Exercice II_6: Non car à l'issue de la première saisie, le tampon contient le caractère LF qui sera lu lors du deuxième appel à scanf. Apres exécution du programme, le tampon est vide.


Exercice II_7: L'affichage de c1 en hexadécimal donne 36 c'est à dire le code ASCII de 6, l'utilisateur ne peut saisir c2, l'affichage de c2 en hexadécimal donne 37 c'est à dire le code ASCII de 7.
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
langage c ++++
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» langage c ++++
» langage c ++++
» langage c ++++
» langage c ++++
» langage c ++++

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
نسمة طيف :: قسم البرامج و التطوير :: دروس في الاعلاميات-
انتقل الى: