Académique Documents
Professionnel Documents
Culture Documents
la rigueur
Un ordinateur est une machine qui exécute vite et bien les
Connaissance : mémorisation et restitution d’informations instructions qu’on lui a « apprises ».
dans les mêmes termes. Mais elle ne sait pas interpréter autre chose : même mineure,
une erreur provoque le dysfonctionnement de la machine.
Compréhension : restitution du sens des informations dans la persévérance
d’autres termes. Face à l’intransigeance de la machine, le débutant est
confronté à ses nombreuses erreurs (les siennes, pas celles de la
Application : utilisation de règles, principes ou algorithmes machine !) et sa tendance naturelle est de passer à autre chose.
pour résoudre un problème, les règles n’étant pas fournies Le zapping est une très mauvaise stratégie en informatique :
dans l’énoncé. pour s’exécuter correctement, un programme doit être finalisé.
.
l’autonomie.
Programmer soi-même les algorithmes qu’on a définis pour
mieux assimiler les principales structures algorithmiques et
pour mieux comprendre ses erreurs en se confrontant à
l’intransigeante impartialité de l’ordinateur
Modalités 5 Modalités 6
Ordinateur et Informatique
Modalités Pédagogiques 7 Algorithme Et Programme
Généralités
Architecture d’un ordinateur
Le langage C
Plan 8
Intervenants aux TD/TP
Oumar SY, J. M. DEMBELE, D. C. FAYE
Mouhamadou Lamine BALDE, Mahamadou TRAORE,
1 Ordinateur et Informatique
Oumar DIOP, El Hadji Serigne Mamour DIOP
Fatou Kamara SANGARE, Cheikh Tidiane DIENG Généralités
Architecture d’un ordinateur
Polycopiés
Polycopié cours à reproduire par l’étudiant 2 Algorithme Et Programme
Notions d’algorithme et de programme
Rappels pour les TP
Objets simples, types et actions élémentaires
Présence TP et TD obligatoire( cf. livret de l’étudiant)
Absence non-excusée au TP implique 0
Fraude en TP : 0 a la note de TP 3 Le langage C
Remise de Projet après la date limite : 0 a la note de Projet
L’Ordinateur/L’homme 19 Informatique 20
ENTREES
d’acquérir et de stocker des informations
SORTIES
Unite Unite arithmetique
de et
d’effectuer des traitements et de restituer des informations. Contrôle Logique
L’architecture générale d’un ordinateur est la suivante :
une unité centrale appelée CPU (contenant le processeur), REGISTRES
L’Unité de Contrôle (UC) entre l’UAL et les registres et Les mémoires secondaires, quant à elles, contiennent des
décode les instructions. programmes et des données de façon permanente, puisqu’elles
conservent l’information même si la machine est éteinte. Il
La mémoire centrale contient le programme (instructions à
peut s’agir de : disques durs, disquettes, CD-ROMs ou
traiter) ainsi que les données au moment de l’exécution.
DVD-ROMs.
Le processeur et la mémoire sont reliés par un bus.
Architecture d’un ordinateur 25 Architecture d’un ordinateur 26
SAISIE TRAITEMENT RESTITUTION
Données Résultats
L’unité centrale peut être étendu avec des composants Instructions
1 bit = 0 ou 1
Actuellement, les OS les plus connus sont DOS, Windows,
1 octet = 8 bits = 1 byte
MacOS, OS/2 ou encore UNIX.
1 mot = 8, 16, 24 ou 32 bits= 1, 2, 3 ou 4 octets
Le langage machine, le seul directement compréhensible par la
machine, est en fait une succession de zéros et de uns 1 bit représente 2 possibilités, 2 bits 4 possibilités, 3 bits 8
définissant des opérations précises à effectuer : toute possibilités, . . . , n bits 2n possiblités.
information étant donc codée avec uniquement des 0 et des 1.
Z mesure de capacité mémoire en 2n !
Ces chiffres binaires 0 et 1 à partir desquels on construit des
nombres plus grands sont appelés bits (pour binary digit). 1 Kilo = 103 ' 210 = 1024
Toutes les données manipulées sont ainsi représentées par des 1 Mega = 106 ' 220
séquences de bits : 1 Giga = 109 ' 230
un caractère : 8 bits (code entre 0 et 255) 1 Tera = 1012 ' 240
un entier : 32 bits
1 Peta = 1015 ' 250
un réel en virgule flottante ( 32 ou 64 bits)
sons : décomposés en échantillon 1 Exa = 1018 ' 260
image décomposée en pixels 1 Zetta = 1021 ' 270
1 Yotta = 1024 ' 280
Ordinateur et Informatique
Remarques 31 Algorithme Et Programme
Notions d’algorithme et de programme
Objets simples, types et actions élémentaires
Le langage C
Plan 32
1 Ordinateur et Informatique
Quelques règles :
Généralités
Un ordinateur ne réfléchit pas → incapable de corriger une
Architecture d’un ordinateur
erreur → ne remplace pas la réflexion
Un ordinateur ne se trompe jamais ( ou presque), l’erreur est
toujours humaine 2 Algorithme Et Programme
Le programme et conçu par un humain, l’ordinateur l’exécute Notions d’algorithme et de programme
Objets simples, types et actions élémentaires
3 Le langage C
Calculabilité
Exemple : Résolution de l’équation du premier degré AX + B = 0
Etant donnée une tâche, peut-on dire s’il existe un algorithme
début
Lire les coefficients A et B qui la résolve ?
si A est non nul alors Existe-t-il des tâches pour lesquelles il n’existe aucun
affecter à X la valeur −B/A algorithme ?
afficher à l’écran la valeur de X
sinon Complexité
si B est nul alors En combien de temps un algorithme va-t-il atteindre le
écrire "tout réel est solution" résultat escompté ?
sinon De quel espace a-t-il besoin ?
écrire "pas de solution"
fin Correction
fin Peut-on être sûr qu’un algorithme réponde au problème pour
lequel il a été conçu ?
Les différentes étapes du processus de programmation 43 Les différentes étapes du processus de programmation 44
Spécifications
Algorithmiques
Problème
réel
ANALYSE Programmation
Problème
(C)
Traduction
ALGORITHME
CODAGE Analyse de
Code Source
problème
Exécution
PROGRAMME Compilation et
Algorithme Résultats
exécution
Erreurs sémantiques
Programmation 47 Programmation 48
Dans cette courte liste, seuls Algol, Basic et Pascal sont des
langages qui ont été conçus par des équipes dans des buts de
recherche ou d’enseignement.
Les autres langages sont élaborés par des firmes et des
compagnies dans des buts de commercialisation.
Programmation 51 I Compilateur 52
Un compilateur est un programme informatique qui transforme
un code source écrit dans un langage de programmation
compréhensible par l’humain
en un code assembleur ou code machine compréhensible
seulement par la machine
Un premier algorithme...
Algorithme EleveAuCarre
Un algorithme (comme un programme) est composé de trois /*Cet algorithme calcule le carre du nombre que lui fournit
parties principales : l’utilisateur*/
1 La partie définitions permet de définir les « entités » qui variables unN ombre, sonCarre : entiers
pourront être manipulées dans l’algorithme. En particulier, on début
définit des constantes, des types et des sous-programmes. /*preparation du traitement*/
2 La partie déclarations permet de déclarer les données qui sont Ecrire("Quel nombre voulez-vous elever au carré")
utilisées par le programme. Les données sont représentées par lire(unN ombre)
des variables. /*traitement*/
sonCarre ← unN ombre ∗ unN ombre
3 La partie instructions constitue le programme principal. Les
/*presentation du resultat*/
instructions sont exécutées par l’ordinateur pour transformer
Ecrire("Le carre de ", unN ombre)
les données.
Ecrire("c’est ", sonCarre)
fin
Les trois étapes d’un algorithme sont les suivants :
Tout entier positif x est codé par un tableau x =< x1, ..., xn >
comprenant n = blog10 x + 1c cases (ou chiffres),
L’informatique utilise plusieurs codages de données, dont les chacun ayant une valeur de 0 à 9,
principaux sont : et tel que :
n
X
Décimal : en mathématiques, les données sont généralement x= xi 10i
codées en base 10. i=0
’a’-- le caractère a
’\’’-- le caractère ’ Le type Chaîne caractérise les chaînes de caractère
’\\’-- le caractère \ Exemple
’\n’-- retour à la ligne
’\t’-- Caractère tabulation "Une␣chaîne␣de␣caractères"
"Une␣chaîne␣avec␣guillement␣(\")"
On considère que les lettres majuscules, les lettres minuscules et
les chiffres se suivent. Ainsi, pour savoir si un variable c de type
Nous verrons plus en détail les chaînes de caractères lorsque nous
caractère correspond à un chiffre, il suffit d’évaluer l’expression(
traiterons de la structure de données « tableau ».
c >= ’0’) Et (c <= ’9’).
Opérations :
Ord : Permet de convertir un caractère en entier.
Chr : Permet de convertir un entier en caractère.
Pour tout c : Caractère on a Chr(Ord(c)) = c.
Structure d’un algorithme 69 I Objets-Identificateurs-Variables 70 I
Objets-Identificateurs-Variables 71 Objets-Identificateurs-Variables 72 I
Un problème est spécifié par une relation entre
les valeurs des paramètres en entrée (les données) et
Une variable peut être vue comme une zone dans la mémoire
les valeurs des paramètres en sortie (les résultats). (vive) de l’ordinateur qui est utilisée pour conserver les données qui
Pour calculer les valeurs des paramètres en sortie à partir des seront manipulées par l’ordinateur.
valeurs en entrée, un algorithme peut utiliser des données Une variable est caractérisée par quatre informations :
intermédiaires, appelées variables locales. son rôle : il indique à quoi va servir la variable dans le
programme. Cette information doit apparaître dans
Algorithme :
relation entre entrées et sorties l’algorithme sous la forme d’un commentaire informel (texte
Paramètres Paramètres
en entrée en sortie libre) associé à la variable ;
variables locales
son nom : composé uniquement de lettres minuscules,
majuscules, de chiffres et du caractère souligné, il permet
Exemple : résoudre une équation du second degré d’identifier la variable. On parle d’« identificateur ». Ce nom
doit être significatif (refléter le rôle de la variable).
Résolution d'une équation du second degré :
ar12 +br1 +c = ar22 +br2 +c=0
son type : une variable est utilisée pour représenter des
a,b,c r1,r2 données qui sont manipulées par le programme. Un type est
variables locale : delta
utilisé pour caractériser l’ensemble des valeurs qu’une variable
peut prendre.
Objets-Identificateurs-Variables 73 Déclaration d’une variable 74 I
sa valeur : La variable contient une information qui peut
varier au cours de l’exécution d’un programme. C’est cette
information que l’on appelle valeur de la variable. La valeur
d’une variable doit correspondre au type de la variable. La Associe à un identifiant son type de données
valeur d’une variable n’existe que lorsque le programme est Syntaxe (en pseudo code)
exécuté. Les autres informations (nom, rôle et type) sont <identifiant> : <type de donnees>
définies lors de la conception du programme, pendant la con- exemples
struction de l’algorithme age : Entier
nom : Chaine de caracteres
Attention !
Entier caractère une variable ne peut pas changer de type de données
age 26 Initiale A sa valeur peut par contre changer (en accord avec le type)
la valeur d’initialisation est aléatoire.
nom Camara
Objets-Identificateurs-Variables 75 I Objets-Identificateurs-Variables 76 II
variable ← expression
attribuer une valeur, résultat d’une évaluation, à un objet
l’affectation permet de modifier la valeur associée à une
variable.
A « l’exécution » : l’expression est évaluée (calculée) et sa
valeur est rangée dans la variable.
Règle : Le type de expression doit être compatible avec le
type de variable.
reste ← a%b quotient ← a/b
somme ← n ∗ (n + 1)/2 volume ← surf ace ∗ hauteur
delta ← b ∗ b − 4 ∗ a ∗ c racine ← (−b + sqrt(delta))/(2 ∗ a)
surf ace ← pi ∗ r ∗ ∗2
[directives au préprocesseur]
[déclarations de variables externes]
Z Un programme C : texte, respectant la syntaxe du langage, et [fonctions secondaires]
stocké sous la forme d’un ou plusieurs fichiers (d’extension .c) main(){
Z Ensemble de fonctions, dont une est privilégiée, la fonction déclarations de variables internes
main, qui est le point de départ de tout programme. instructions
Z Chaque fichier (appelé module) est composé de : }
La fonction principale main est la seule fonction appelée lors
définitions de fonctions,
définitions de variables, du lancement
déclarations de variables et fonctions externes, Les fonctions secondaires peuvent être placées indifféremment
directives du préprocesseur (lignes commençant par #), avant ou après la fonction principale. Une fonction secondaire
peut se décrire de la manière suivante :
type ma_fonction ( arguments ){
déclarations de variables internes
instructions
}
Structure générale d’un programme C 93 Structure générale d’un programme C 94
# include < stdio .h >
# include < stdlib .h >
# define PI 3.1415
Z Exemple fonction main
int main (){
return;
Edition de nom.exe
break; Bibliotheques
*.ib liens
continue;
instruction composée entre accolades { et }
if (x != 0){
z = y / x;
t = y % x;
}
identificateur
Un programme en langage C est constitué des six groupes de
composants élémentaires suivant : sert à donner un nom à une entité du programme (variable,
procédure, fonction ) Suite de caractères parmi :
les identificateurs,
les lettres (minuscules ou majuscules, mais non accentuées),
les mots-clefs,
les chiffres,
les constantes,
le « blanc souligné » (_).
les chaînes de caractères (constantes),
les opérateurs,
Le premier caractère d’un identificateur ne peut pas être un
les signes de ponctuation. chiffre.
On peut ajouter à ces six groupes les commentaires, qui sont Zvar1, tab_23 ou _deb sont des identificateurs valides
ignorés par le préprocesseur. 1i et i:j ne le sont pas
Le C fait la différence entre majuscules et minuscules.
Les composants élémentaires du C 101 Les commentaires 102
Commentaire
Les mots-clefs Un commentaire débute par /* et se termine par */.
Un mots-clé, est un mot réservé pour le langage lui-même et ne
peut pas être utilisé comme identificateur. L’ANSI C compte 32
/* Ceci est un commentaire */
mots clefs :
/* Les commentaires peuvent être formulés sur
auto double int struct plusieurs lignes */
break else long switch
case enum register typedef /* Il est fréquent
char extern return union * de formuler
const float short unsigned * des commentaires ainsi
continue for signed void */
default goto sizeof volatile
do if static while /* Ceci est /* incorrect a cause */ de l’imbrication */
Les types de base 103 Les types de base : Les caractères 104
Les entiers peuvent être affectés d’un attribut Les entiers sont signés par défaut.
de précision (d’occupation en mémoire) et
Pour déclarer des entiers non signés, mettre le mot-clé
de représentation
unsigned devant char, short, int ou long.
Les attributs de précision sont short et long.
Sortie formatée
Déclaration/définition printf d’afficher à l’écran les arguments qu’on lui fournit.
type identificateur <=expression>; printf("format", arg1, arg2,...,argN);
#include <stdio.h>
Autre fonction d’entrée void main(){
Les fonctions int getchar(void) retourne un caractère lu au int c;
clavier c=getchar()
while (c != EOF) {
/* Lecture d’une ligne et affichage en sens inverse */ putchar(c) ;
void renverse (void) { c=getchar() ;
char c ; }
if ((c = getchar()) != ’\n’ ) }
renverse() ;
putchar(c) ; EOF est une pseudo-constante définie par un #define dans
return ; stdio.h et vaut généralement -1.
} getchar renvoie un entier pris sur l’entrée standard (code
ascii du caractère) et -1 si la fin de fichier est atteinte.
putchar prend un entier en paramètre effectif et envoie le
caractère correspondant sur la sortie standard.
Les Entrées/Sorties 133 Rappels et remarques sur te type char 134
#include <stdio.h> • Un caractère est un entier car il s’identifie à son code ASCII.
void main(){ • Un caractère peut donc être codé sur un octet.
int c; • On peut donc appliquer toutes les opérations entières sur les
while ((c = getchar() ) != EOF) { caractères (addition, soustraction ...).
putchar(c);
• Problème, On ne sait pas si ce sont des entiers signés ou non,
}
car cela dépend des machines. Les autres variantes du type
}
entiers sont toujours signées par défaut (pas de unsigned).
C’est pourquoi on plûtot que
Ce programme est équivalent au précédent
écrit
En C une expression syntaxiquement valide renvoie un
int c; char c;
résultat, c’est le cas de l’affectation qui renvoie comme valeur
if((c=getchar())!=EOF) if ((c=getchar())!=EOF)
la valeur affectée.
Donc (( c = getchar () ) != EOF ) se décompose en car getchar () peut renvoyer -1 (et donc ce test ne
c = getchar(), la valeur de cette expression est ensuite fonctionnera que sur les machines ou les caractères sont
comparée à EOF. signés).
Les opérateurs de comparaison ==, ! =, <=, >=, <, > 139 Les opérateurs logiques booléens &&, ||, ! 140
Ne pas confondre l’opérateur de test d’égalité == avec l’opérateur
d’affection =.
Les opérateurs logiques bit à bit 143 Les opérateurs d’affectation composée +=, -=, *=,... 144
Exemple
opérateurs d’affectation composée
Considérons par exemple les entiers a=77 et b=23 de type
unsigned char (i.e. 8 bits). += -= *= /= %= &= ^= |= «= »=
main(){
int a = 3, b, c; int a, b;
int i, t[10]; b = ((a = 5), (a + 2));
b = ++a; /* a et b valent 4 */ printf("\n b = %d \n",b);
c = b++; /* c vaut 4 et b vaut 5 */ }
int i = 0 ; /* t[i++] a pour valeur t[0] /
int i = 0 ; /* t[++i] a pour valeur t[1] */ imprime b = 7.
La virgule séparant les arguments d’une fonction ou les
Les opérateurs ++ et -- s’appliquent à une variable, mais pas une déclarations de variables n’est pas l’opérateur virgule. En
constante ou une expression arithmétique. particulier l’évaluation de gauche à droite n’est pas garantie.
++5 --(i+1) ++i++ n’ont pas de sens
* Corrigé
# include < stdio .h >
# include < conio .h >
void main (){
int r ;
float pi =3.14 , aire , ci ;
clrscr ();
printf ( " entrer le rayon du cercle : " );
scanf ( " % d " ,& r );
aire = pi * r * r ;
printf ( " aire du cercle =% f " , aire );
ci =2* pi * r ;
printf ( " cironférence =% f " , ci );
getch ();
}
* Corrigé Références I
On a :
Pr. David C. FAYE/UFR SAT-UGB UE INFO111 - Algo I : Introduction générale Pr. David C. FAYE/UFR SAT-UGB UE INFO111 - Algo I : Introduction générale
Ordinateur et Informatique
Algorithme Et Programme
Le langage C
Références II