230 likes | 299 Views
INFORMATIQUE III Juliana Gueorguieva. INFORMATIQUE III Bibliographie Ив. Момчев, К. Чакъров, Програмиране III ( C и C ++), ПБ на ТУ, София, 2000 Юл. Георгиева. М. Горанова, Ив. Йорданов и др., Ръководство по Програмиране и използване на компютри I ( C ), СИЕЛА, София, 2001
E N D
INFORMATIQUE III Juliana Gueorguieva
INFORMATIQUE III • Bibliographie • Ив. Момчев, К. Чакъров, Програмиране III (C и C++), ПБ на ТУ, София,2000 • Юл. Георгиева. М. Горанова, Ив. Йорданов и др., Ръководство поПрограмиране и използване на компютри I (C), СИЕЛА, София, 2001 • Brian W. Kernighan, Dennis M. Ritchie, The C Programming Language, Prentice-Hall, Englewood Cliffs, 1988 • Б. Кернинган, Д. Ритчи, Програмен език С, PrenticeHall, 2004 • Martine Trio, Cours de Turbo C/C++, Armand Colin, 1992 • Грег Пери, С в примери, Практическо ръководство за С, Софтпрес,2005 • De Peter Prinz et Tony Crawford, C in a Nutshell, Eyrolles, 2006 • Juliana Gueorguieva
INFORMATIQUE III • Bibliographie • Хърбърт Шилдт, Практически самоучител, Най-успешният и • доказанметод за научаване на С, Софтпрес, 2001 • Богданов Д., Мустакеров Ив., Език за програмиране С, • Техника, 1999 • Клинт Хайкс, Опознайте С, 1996 • Weiss, M. A., DataStructures and Algorithm Analysis in C, • Addison Wesley, 1997 • ftp://ftp2.developpez.be/developps/c/PolyC.pdf • http://www.ltam.lu/Tutoriel_Ansi_C/ • http://www-ipst.u-strasbg.fr/pat/program/tpc.htm • Juliana Gueorguieva
La structure d’un programme C et modularité de C • La structure typique – modèle 1 /* Structure typique d’un programme C */ /* Directives préprocesseur*/ /* Prototypes des fonctions */ void f1(); . . . void fn(); /* Définition de la fonction main */ void main() { // Définitions des donnés //Appels des fonctions } /* Définitions des fonctions */ void f1() { . . . } . . . void fn() { . . . }
La structure d’un programme C et modularité de C • La structure typique – modèle 2 /* Structure typique d’un programme C */ /* Directives préprocesseur*/ /* Définitions des fonctions */ void f1() { . . . } . . . void fn() { . . . } /* Définition de la fonction main */ void main() { // Définitions des donnés //Appels des fonctions }
La structure d’un programme C et modularité de C • La structure typique – exemple 1 Une fonction appelle plusieures fonctions. Calculer les valeurs de la réactance capacitive (ohms) et celle de la réactance inductive en utilisant les valeures suivantes: 1) fréquence (hertz); 2) capacité (farads); 3) inductance (henrys). Les directives #include <stdio.h> 1/3 #define PI 3.14 float cap_react(float c, float f); float ind_react(float l, float f); Les prototypes
La structure d’un programme C et modularité de C • La structure typique – exemple 1 Entrer des données main() 2/3 { float c,l,f,react; printf("Entrer c->"); scanf("%f",&c); printf("Entrer l->"); scanf("%f",&l); printf("Entrer f->"); scanf("%f",&f); react=cap_react(c,f); printf("Reactance capacitive=%.3e ohms\n",react); react=ind_react(l,f); printf("Reactance inductive=%.3e ohms\n",react); return 0; } Entrer c->10 Entrer l->20 Entrer f->30 Reactance capacitive=5.308e-04 ohms Ractance inductive=3.768e+03 ohms Appel de la fonction Appel de la fonction
La structure d’un programme C et modularité de C • La structure typique – exemple 1 float cap_react(float c, float f) 3/3 { float react; react=1/(2*PI*f*c); return react; } float ind_react(float l, float f) { float react; react=2*PI*f*l; return react; } Les définitions des fonctions
La structure d’un programme C et modularité de C • La structure typique – exemple 2 La fonction appelée appelle d’autres fonctions. Calculer les valeurs de la réactance capacitive (ohms) et celle de la réactance inductive en utilisant les valeures suivantes: 1) fréquence (hertz); 2) capacité (farads); 3) inductance (henrys).Calculer l’impédance de l’inductance et capacité en série (z=xc2+xl2). #include <stdio.h> 1/3 #define PI 3.14 float cap_react(float c, float f); float ind_react(float l, float f); float impedance(float c, float l, float f); Les directives Les prototypes
La structure d’un programme C et modularité de C • La structure typique – exemple 2 Entrer des données main() 2/3 { float c,l,f,imped; printf("Entrer c->"); scanf("%f",&c); printf("Entrer l->"); scanf("%f",&l); printf("Entrer f->"); scanf("%f",&f); imped=impedance(c,l,f); printf("Impedance=%.3e ohms\n",imped); return 0; } Entrer c->10 Entrer l->20 Entrer f->30 Reactance capacitive=5.308e-04 ohms Ractance inductive=3.768e+03 ohms Impedance=3.768e+03 Appel de la fonction
La structure d’un programme C et modularité de C • La structure typique – exemple 2 float cap_react(float c, float f) 3/3 { float react; react=1/(2*PI*f*c); return react; } float ind_react(float l, float f) { float react; react=2*PI*f*l; return react; } float impedance(float c, float l, float f) { float react_c, react_l, imped; react_c=cap_react(c,f); react_l=ind_react(l,f); printf("Reactance capacitive=%.3e ohms\n",react_c); printf("Reactance inductive=%.3e ohms\n",react_l); imped=sqrt(pow(react_c,2)+pow(react_l,2)); return imped; } Les définitions des fonctions appelés La définition de la fonction appelante d’autres fonctions
La structure d’un programme C et modularité de C Inclusion de fichiers • Ca c’est la possibilité d'inclure des fichiers sources dans d'autres fichiers sources. • fichiers en-tête Il s'agit d'un fichier appartenant au système, faisant partie de la bibliothèque standard. #include <nom-de-fichier> #include "nom-de-fichier" Ce doit être un fichier source êcrit en C. Il doit être un nom complet.
La structure d’un programme C et modularité de C Inclusion de fichiers – exemple sans inclusion #include <stdio.h> #define HEAD "Element Symbol Poids atomique\n" #define Ge "Germanium Ge 72.60\n" #define Si "Silicon Si 28.09\n" #define Au "Gold Au 197.20\n" #define Ge_p 72.60 #define Si_p 28.09 #define Au_p 197.20 void main() { float total; printf(HEAD); printf(Ge); printf(Si); total=Ge_p+Si_p; printf("Les poids atomiques de Germanium\n" "et Silicon est:%.2f\n",total); } Element Symbol Pods atomiques Germanium Ge 72.60 Silicon Si 28.09 Les poids atomiques de Germanium et Silicon est:100.69
La structure d’un programme C et modularité de C Inclusion de fichiers – exemple avec inclusion #define HEAD "Element Symbol Poids atomique\n" #define Ge "Germanium Ge 72.60\n" #define Si "Silicon Si 28.09\n" #define Au "Gold Au 197.20\n" #define Ge_p 72.60 #define Si_p 28.09 #define Au_p 197.20 Enregistrer le fichier avec le nom chem.h dans la répertoire de fichier source.
La structure d’un programme C et modularité de C Inclusion de fichiers – exemple avec inclusion #include <stdio.h> #include "chem.h" void main() { float total; printf(HEAD); printf(Ge); printf(Si); total=Ge_p+Si_p; printf("Les poids atomiques de Germanium\n“ "et Silicon est:%.2f\n",total); } Element Symbol Pods atomiques Germanium Ge 72.60 Silicon Si 28.09 Les poids atomiques de Germanium et Silicon est:100.69
La structure d’un programme C et modularité de C La modularité de C • Diviser chaque nouveau problème en sous-problèmes qu'on puisse résoudre séparément (critère de décomposabilité). • Composer les logiciels qui peuvent se combiner librement pour produire de nouveaux systèmes (critère de composabilité). • Permettre au concepteur d'écrire des modules dont chacun peut être compris isolément par un lecteur humain (critère de compréhensibilité).
La structure d’un programme C et modularité de C La modularité de C • Permettre la modification d’un petit nombre de modules (critère de continuité). • La condition anormale dans un module restera localisé à ce module ou n’ateindra un petit nombres de modules (voisins) (critère de protéction). • Les critères précédents induisent sur le langage en question quelques contraintes assez précises: • Les modules doivent correspondre à des entités syntaxique du langage; • quand deux modules partagent des informations, cela doit être clairement indiquédans leurs deux textes.
La structure d’un programme C et modularité de C La compilation séparée • Si dans un module B on doit référencer une variable ou une fonction définie dans un module A, il sufit d'écrire dans B une déclaration comme extern int x ; • Cet énoncé postule l'existence d'un objet nommé x, ce qui sera contròlé par l'éditeur de liens.
La structure d’un programme C et modularité de C La compilation séparée • Exemple – Traitement d’un tableau avec un nombre d’éléments maximale TAILLE en utilisant les fonctions suivantes: 1) faire entrer les éléments; 2) afficher le tableau; 3) copier un nombre d’ éléments donnéà partir du i iemedans un tableau nouveau. Utiliser 2 fichiers CPP: p2.cpp pour les fonctions et p1.cpp pour main. La variable i est définit dans p2.cpp et utilisé dans p1.cpp.
La structure d’un programme C et modularité de C La compilation séparée Fichier p1.cpp Inclusion du fichier comportant les fonctions #include "p2.cpp" extern int i; void main() { int x[TAILLE], y[TAILLE]; int n,nbr; entrer(x,&n); sortir(x,n); printf("Entrer le nombre d'element a copier nbr="); fflush(stdin); scanf("%d",&nbr); printf("On va copier %d elements a partir d'element %d\n",nbr,i); copie(x,y,nbr); sortir(y,nbr); } La variable définit dans p2.cpp et utilisée ici Entrer l'element 1:3 Entrer l'element 2:4 Entrer l'element 3:5 Entrer l'element 4:* Les valeurs entrees sont 3 3 4 5 Entrer le nombre d'element a copier nbr=2 On va copier 2 elements a partir d'element 2 4 5
La structure d’un programme C et modularité de C Fichier p2.cpp La compilation séparée #include <stdio.h> 1/2 #include <conio.h> #define TAILLE 10 int i=2; int entrer(int t[TAILLE], int *n) { *n=0; int temp; while( 1 ) { printf("Entrer l'element %d:",*n+1); if(scanf("%d",&temp)==1 && *n<TAILLE) { t[*n]=temp; (*n)++; } else { printf("Les valeurs entrées sont %d\n",*n); return 0; } } } La définition de i La définition de la fonction d’entrée
La structure d’un programme C et modularité de C Fichier p2.cpp La compilation séparée void sortir(int t[],int n) 2/2 { int i; printf("\n"); for(i=0;i<n;i++) printf("%4d",t[i]); printf("\n"); } void copie(int *t,int *c,int nbr) { int j=0; while(nbr) { c[j]=t[i]; i++; j++; nbr--; } } La définition de la fonction d’affichage La définition de la fonction copie