initiation a la programmation en c · 2011. 3. 11. · initiation a la programmation en c denis...
TRANSCRIPT
![Page 1: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/1.jpg)
INITIATION A LA PROGRAMMATION EN C
Denis MARIANO-GOULARTService de médecine nucléaire.CHRU Lapeyronie. Montpellier.
http:\\scinti.etud.univ-montp1.fr
OBJECTIF : ETRE CAPABLE DE CRÉER OU MODIFIER DE PETITS OUTILS DE TRAITEMENT D’IMAGE
![Page 2: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/2.jpg)
Plan1. Architecture des ordinateurs
2. Création d’un programme exécutable
3. Le noyau du langage C
4. Quelques fonctions de la bibliothèque
5. Exemple d’application :Réalisation d’un filtrage linéaire d’image dicom
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
![Page 3: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/3.jpg)
Architecture de Von Neumann
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
adresse contenu
adr 1 ADDadr 2 1adr 3 2adr 4
Mémoire centrale
registre d’échange
registre d’adresse
BLE
Unité de contrôle
registre d’instruction
Compteur d’instruction + 1
décodeur - séquenceur
unité arithmétique et logique
![Page 4: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/4.jpg)
Architecture de Von Neumannadresse contenu
adr 1 ADDadr 2 1adr 3 2adr 4
Mémoire centrale
registre d’échange
registre d’adresse
BLE
Unité de contrôle
registre d’instruction
Compteur d’instruction + 1
décodeur - séquenceur
unité arithmétique et logique
1
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
![Page 5: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/5.jpg)
Architecture de Von Neumannadresse contenu
adr 1 ADDadr 2 1adr 3 2adr 4
Mémoire centrale
registre d’échange
registre d’adresse
BLE
Unité de contrôle
registre d’instruction
Compteur d’instruction + 1
décodeur - séquenceur
unité arithmétique et logique
1+2
1 2
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
![Page 6: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/6.jpg)
Codage des données et instructions
indistinctement en mémoire centrale
au moyens de dispositifs électroniques bistables : 2 états de tension
codés par un bit b ∈ {0, 1}
association de bits pour coder des données et des instructions variées.
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
![Page 7: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/7.jpg)
1 bit : 2 valeurs possibles ou
1 octet = 8 bits = 256 valeurs = 28
= 0 à = 255
1 mot = 2 octets = 16 bits � de 0 à 216-1=65 535
Codage des instructions et des nombres naturels
0 1
00000000 1111111127 +26+25+24+23+22+21+20
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
00 FF15.161+15.160
![Page 8: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/8.jpg)
Le premier bit sert à coder le signe
1 octet = 1 bit de signe + 7 bits� code un entier de –128 à + 127
2 octets = 1 bit de signe + 15 bits� Code un entier de –32 768 à 32767
Codage des entiers signés
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
![Page 9: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/9.jpg)
Codage des données numériques
± 3,4.10-4932
à ± 1,1.10493280Long
doubleréel très grande
précision
± 1,7.10±30864doubleréel double précision
± 3,4.10±3832floatnombre réel
L = 2 147 483 64832(long) intentier (long)
L = 3276816short intentier court
L = 1288charcaractère/entier
Limites (de –L à L-1)bitsType (C)Type
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
![Page 10: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/10.jpg)
Point d’étape 1Instructions et données codées en binaire dans la mémoire centrale
un programme et ses données sont illisibles par un être humain
nécessité d’un langage de programmation lisible dont le texte sera ensuite traduit en binaire par un programme, le compilateur.
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
![Page 11: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/11.jpg)
Etapes de programmation
Éditeur de textes
Algorithme
BibliothèquesNoyau du langage
nom.Opré -
compilateur
#include « header.h »#define PI 3.14159
compilateurnom.C
bibliotheque.o
Éditeur de liens
nom.exe
chargement en mémoire
test
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
Exemple: stdio.h, stdlib.h
![Page 12: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/12.jpg)
Exemple de programmation
Void main(){printf(«Bonjour !»);getch();}
pgm1.O
pré -compilateur compilateur
Pas de bibliothèque
Éditeur de liens
pgm1.exe
pgm1.c
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
stdio.hstdlib.h
![Page 13: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/13.jpg)
Syntaxe de base du C
C
mot
séparateur
{ } bloc d’instructions, structures, tableaux( ) arguments de fonction, priorités, conversion[ ] tableaux, liste d’arguments. Élément d’une structure; fin d’instruction: étiquette
opérateur
identificateur
nom symbolique de variable, fonction, sous-programme
mot réservé
type de variable: char, int, float…
structures de contrôle: tests, boucles
affectation : a = 3;
arithmétique : ++a; --a; a=10%3; a=-a; a=a+a;
logique : == != && ||
sur bits : & | ^ <<1 >>1 ~
pointeurs : *p; &a;
structures : ->
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
![Page 14: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/14.jpg)
Déclaration des variables
Void main(){short int i,j;float b;
i=10; j=20;b=(float)(i)/(float)(j);
printf("i =%d j=%d\n",i,j);printf("reel : i/j = %f\n",b);printf("entier : i/j = %d\n",i/j);getch();}
pgm2.c
La déclaration permet au compilateur
de réserver une adresse et un espace mémoire
pour la variable
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
![Page 15: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/15.jpg)
Variables et pointeurs
void main(){short int i, j=10;short int *p;
p=&j;i=*p;
printf("%d %d\n",i,*&i);printf("%d %d\n",j,*&j);printf("adresse i = %d\n",&i); printf("p = %d\n",p); printf("adresse j = %d\n",&j); getch();}
adresse contenu
&i
Mémoire centrale
&j 10
adresse contenu
&ip=&j
1010
p
soit 00000000 00001010
* = « contenu de l’adresse… » & = « adresse de la variable… » pgm3.c
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
![Page 16: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/16.jpg)
Allocation fixe:� short int a[9] ;� a[0]=1; a[1]=2;
Allocation dynamique� short int *a;� a = malloc(9*sizeof(int));� *(a)=1; *(a+1)=2; � free(a);
Tableaux de variables (images)adresse contenu
aa+1
12
a+2a+3
a+4a+5
a+6
a+7a+8
NB: dans *(a+1), le déplacement de 1 est ajusté en unité –nombre de bits- correspondant au type de la variable : dans cet exemple, l’adresse se décale de 16 bits.
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
![Page 17: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/17.jpg)
Structures de contrôleif(condition) {instructions;} else {instructions;}
if(b>a) { c=a; a=b ; b=c; } else c=0;while (condition) {instructions;}
c=2; while(c<a) c=c*2;do {instructions;} while (condition);
c=1; do c=c*2; while(c<a);for(initialisation, condition, incrément) {instructions;}
for(i=0;i<100;i++) a[i]=3*i;
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
![Page 18: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/18.jpg)
/* Définition du prototype */int somme(short int i, short int j);
/* Programme principal */void main(){short int i, j, k1, k2;i=1;j=2;
k1=somme(i,j); plus(i,j,&k2);
printf("%d %d\n",k1,k2);getch();}
Fonctions et sous-programmes/* fonction */int somme(short int x, short int y){short int z;
z = x+y;return(z);}
/* sous-programme équivalent */void plus(short int x, short int y, short int *z){*z = x+y;}
pgm4.cAttention à la nécessité de passer l’adresse de z au sous-programme, et non seulement son nom
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
![Page 19: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/19.jpg)
Entrées/sorties écran et clavier
Affichage formatté à l’écran� int printf(const char *format, arguments)
� ex : printf(« la variable vaut %3.3f\n », b);
Entrée de texte au clavier� int scanf(const char *format, arguments)
� ex : scanf(«%d»,&i);
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
![Page 20: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/20.jpg)
Lecture et écriture de fichiers
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
adresse contenu
fichier *fichier
Périphérique (DD)
fseek
Mémoire centrale
Pointeur de fichier � FILE *fichier;
Ouverture/fermeture d’un fichier� fichier = fopen(«nom_fichier», rb ou wb)
� fclose(fichier)
Positionnement dans un fichier� fseek(fichier, décalage, SEEK_XXX)
� SEEK_SET (depuis le début),� SEEK_CUR (depuis la position courante)
� SEEK_END (depuis la fin).
Lecture/écriture dans un fichier� fread ou fwrite(image, taille, N, fichier)
image *image
image +1
image+N
![Page 21: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/21.jpg)
Exemple d’application
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
informationlocale clinique
imageur
121
242
121
16
1ant.dcm
![Page 22: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/22.jpg)
Etape 0 : plan de travail#include <stdio.h>#include <stdlib.h>
int main() {
/* Déclaration des variables */
type nom ;
/* Lecture du nom de l’image dcm */
/* copie des pixels du DD vers la mémoire vive */
/* filtrage des pixels dans la mémoire vive */
/* recopie des pixels sur le disque dur */
/* Fin de programme */}
void fonction(){/* action répétée */}
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
![Page 23: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/23.jpg)
Etape 1 : Saisies clavier instn1.c
#include <stdio.h>#include <stdlib.h>
int main() {char nom[256], nom1[256];int cote;
printf("\nImage dicom à ouvrir : "); scanf("%s",nom); sprintf(nom1,"%s.dcm",nom);
printf("\nTaille d’image : "); scanf("%d",&cote);}
adresse contenu
nomnom+1nom+2
nom+255
nom1nom1+1
…
Nom1+7
&cote
a
n
an
m
…
t ant
ant.dcm
Mémoire centrale
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
cote
![Page 24: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/24.jpg)
Etape 2 : allocation instn2.c
#include <stdio.h>#include <stdlib.h>
void message(char *information);
int main() {short int *image;/* … */image=malloc(cote*cote*sizeof(short int));if(image==NULL)
{sprintf(information, « problème !\n »);message(information);}
}
void message(char *information){ printf(information); getch(); exit(1) ; }
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
adresse contenu
imageimage+1
image+2
image+cote²
16 bits
…
malloc réserve cet
emplacement en mémoirecentrale
Mémoire centrale
![Page 25: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/25.jpg)
Etape 3 : transfert en mémoire viveadresse contenu
16 bits
Disque
fichier
fopenfseekftell
instn3.c
Mémoire centrale
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
#include <stdio.h>#include <stdlib.h>
#define MOT 2
void message(char *information);void lecture_ecriture_image(short int *image, intcote, char *nom1, char *nom2, int option);
int main() {short int *image; char nom2[256];
/* … */
image=malloc(cote*cote*sizeof(short int));
lecture_ecriture_image(image,cote,nom1,nom1,0);
/* … */}
imageimage+1
image+2
image+cote²
…
taillecote²entête
fread
*fichier
![Page 26: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/26.jpg)
Etape 4 : test de ré-écritureinstn4.c
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
#include <stdio.h>#include <stdlib.h>
#define MOT 2
void message(char *information);void lecture_ecriture_image(short int *image, intcote, char *nom1, char *nom2, int option);
int main() {short int *image;
image=malloc(cote*cote*sizeof(short int));
lecture_ecriture_image(image,cote,nom1,nom1,0);
sprintf(nom2, « %s-filtre.dcm »,nom); lecture_ecriture_image(image,cote,nom1,nom2,1);
}
adresse contenu
16 bits
fichier
Mémoire centrale
imageimage+1
image+2
image+cote²
…
taille
*fichier
entête
fopenfseek
Disque
entête
fwrite
![Page 27: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/27.jpg)
Etape 5 : moyenne pondérée
kj-1 0 1
j
-101
instn5.c
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
ant.dcm
int main() {short int tampon;float calcul:int ki,kj;
tampon = malloc(cote*cote*sizeof(short int)) ;
for(i=1; i<cote-1; i++) for(j=1; j<cote-1; j++){ calcul = 0.0; for(ki=-1;ki<=1;ki++) for(kj=-1;kj<=1;kj++) calcul += (float)(*(image + j+kj + (i+ki)*cote)) ;
*(tampon+j+i*cote) = (short int)( calcul/9.0 + 0.5); }
for(i=1; i<cote-1; i++) for(j=1; j<cote-1; j++) *(image +j+i*cote) = *(tampon+j+i*cote);
free(tampon);}
ki
i
![Page 28: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/28.jpg)
Etape 6 : Pondérationsint main()
{float somme, calcul;
float coef[3][3]={1.,2.,1.,2.,4.,2.,1.,2.,1.} ;
somme = 0.0; for(i=0;i<3;i++) for(j=0;j<3;j++) somme += coef[i][j];
tampon = malloc(cote2*sizeof(short int)) ;
for(i=1; i<cote-1; i++) for(j=1; j<cote-1; j++) {calcul = 0.0; for(ki=-1;ki<=1;ki++) for(kj=-1;kj<=1;kj++)
calcul += (coef[ki+1][kj+1] * (float)(*(image + j+kj + (i+ki)*cote))) ;
*(tampon+j+i*cote) = (short int)( calcul/somme + 0.5);}
for(i=1; i<cote-1; i++) for(j=1; j<cote-1; j++) *(image +j+i*cote) = *(tampon+j+i*cote);
free(tampon);}
instn6.c
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
ant.dcm
![Page 29: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/29.jpg)
Etapes suivantes : à vous de jouer !Modifiez le programme pour réaliser :• des seuillages• un lissage sur masque adapté• une érosion, dilatation, ouverture, fermeture etc…
Il suffit de modifier la boucle :
� Structure des ordinateurs � Programme exécutable � Noyau du langage C � Quelques fonctions de C � Exemple d’application
for(i=1; i<cote-1; i++) for(j=1; j<cote-1; j++) {calcul = 0.0; for(ki=-1;ki<=1;ki++) for(kj=-1;kj<=1;kj++)
calcul += (coef[ki+1][kj+1] * (float)(*(image + j+kj + (i+ki)*cote))); *(tampon+j+i*cote) = (short int)( calcul/somme + 0.5);}
![Page 30: INITIATION A LA PROGRAMMATION EN C · 2011. 3. 11. · INITIATION A LA PROGRAMMATION EN C Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier. http:\\scinti.etud.univ-montp1.fr](https://reader034.vdocuments.site/reader034/viewer/2022051806/5ffda22e7912f5664b772838/html5/thumbnails/30.jpg)
Bibliographie
Le langage C: norme ANSI� B.W. Kernighan et D.M. Ritchie. Dunod
www.ensta.fr/~enstar/doc/c++/courscpp/index.html
Introduction à turbo C++Turbo C++ par la pratique
� T. Lachand-Robert. Sybex