telecharger le document

Download Report

Transcript telecharger le document

1
Informatique
Filiére: CBA
2
2012- 2013
INSAT 2012/2013
Plan
1.
2.
3.
4.
5.
6.
7.
8.
3
Introduction à l’informatique
Notions élémentaires des algorithmes : déclarations,
entrées/sorties, calcul, affectations
Les structures conditionnelles
Les structures itératives
Les tableaux
Les enregistrements
Les procédures et fonctions
Les fichiers
INSAT 2012/2013
3
Chapitre 1 :
Introduction à l’informatique
4
INSAT 2012/2013
4
1. Architecture d’un ordinateur (1)
5
5
INSAT 2012/2013
Architecture d’un ordinateur (2)
6
INSAT 2012/2013
6
Mémoire centrale ou principale
7
INSAT 2012/2013
7
Processeur
C'est le moteur de l'ordinateur. Il exécute les instructions
contenues dans les programmes. Il le fait de façon plus ou
moins rapide en fonction de la fréquence interne du
processeur. Par exemple un processeur à 3 Ghz effectue
3 milliards d'opérations à la seconde.
8
INSAT 2012/2013
8
ruction par seconde
(la plupart du temps million d'instructions
par seconde, MIPS)
9
INSAT 2012/2013
est une unité de mesure utilisée en informatique.
9
Exécution d’instructions
L'unité de commande et de contrôle effectue les opérations suivantes : extraction de
l'instruction à exécuter, analyse de cette instruction et liaison avec l'U.A.L. (Unité
Arithmétique et Logique) , recherche des données à traiter dans la mémoire centrale,
déclenchement du traitement dans l'U.A.L., rangement des résultats dans la mémoire 10
10
centrale ou en mémoire auxiliaire
INSAT 2012/2013
3. Architecture de système informatique
11
INSAT 2012/2013
11
Langage machine : langage binaire, c'est avec ce
langage que fonctionnent les ordinateurs. Il consiste à
utiliser deux états (représentés par les chiffres 0 et 1)
pour coder les informations (texte, images etc.).
Dans le langage machine, le programmeur doit entrer
chaque commande et toutes les données sous forme
binaire c'est à dire sous forme de suite d'octets.
Le programme écrit en langage évolué (C, Pascal) sera
traduit en langage machine par un programme
particulier appelé compilateur.
12
12
INSAT 2012/2013
Programme Evolué
Compilateur
Programme machine
13
INSAT 2012/2013
14
INSAT 2012/2013
14
15
INSAT 2012/2013
15
4. Langages informatiques:
Types
Langage machine
Langage assembleur (assembly language)
Langage évolué
Les langages de scripts (langages interprétés)
Les langages compilés
Langage de balisage (langage de marquage)
Langage de requête
16
INSAT 2012/2013
16
Le langage évolué est un langage qui accomplit beaucoup pour un
minimum de code et d'effort de programmation,
Titre d'exemple : Pascal, Java, C, C++, C#, Visual Basic (ou VB),
Delphi, Python, Perl, PHP, JavaScript, VBscript, ASP etc.
Bref la syntaxe des langages évolués est très simplifiée, on y trouve
par exemple des mots en anglais (if, do while, switch, integer,
string) donc il est plus accessible et compréhensible aux gens que
l'assembleur lui même plus accessible que le langage machine.
Ces langages sont traduits en langage machine avant leur exécution
par un programme compilateur, ces programmes fonctionnent
ensuite comme s'ils étaient directement écrits en langage machine.
17
INSAT 2012/2013
17
Langages évolués de programmation
18
INSAT 2012/2013
http://www.info.univ-angers.fr/~gh/hilapr/progs.htm
18
Langage de balisage (langage de marquage)
Ces langages reposent sur ce qu'on appelle des balises ou tags,ces
derniers sont des étiquettes avec lesquelles on peut étiqueter
des données (mots, texte etc.) pour produire un effet chez eux
tant en sens (leurs donner du sens : ceci est un paragraphe, ceci
est un titre, citation etc.) qu'en rendu visuel (italique, gras,
couleur du texte etc.), on peut étiqueter des données en les
encadrant par ces balises, parmi ce type de langages il y a le
HTML (HyperText Markup Language), le XML, le SGML,
XHTML (Extensible HyperText Markup Language).
Par exemple :
Pour mettre en italique : <i> texte en italique </i> ;
19
INSAT 2012/2013
19
Langages de requêtes
Ces langages qualifient le plus souvent les langages
propres aux bases de données, ils sont représentés
notamment par le SQL (structured query language) en
français langage structuré de requêtes, il permet tout
simplement de gérer une base de données par exemple
l'interroger, y insérer des données ou en supprimer
d'autres, lui demander de faire ressortir des données selon
des critères que je lui fixe.
20
INSAT 2012/2013
20
Paradigme (ou style ou type) des
langages de programmations
Langages impératifs et procéduraux : comme C, …
Langages à objets : comme C++, Java,…
Langages logiques : comme Prolog,…
…
21
INSAT 2012/2013
21
Langages impératifs et procéduraux
Langages impératifs : une instruction du langage
correspond à un ensemble d'instructions du langage
Un programme est formé par plusieurs procédure. Une
procédure, appelée également fonction, est une suite
d'instructions devant être effectuée dans un ordre précis.
En C :
Main ( )
{
int a, b;
a=b*b;
printf(« %d »,a);
}
22
Int carre ( int b)
{
return (b*b);
}
Main ()
{ int a;
a= carre (b);
Printf(« %d »,a); }
INSAT 2012/2013
22
Langages déclaratifs
Un langage déclaratif ne décrit pas comment est réalisée
une opération, comme dans un langage impératif, mais
décrit le problème lui-même, sans s'intéresser au contexte.
Figurent parmi les langages déclaratifs Oz, Prolog ou
encore Clips.
23
INSAT 2012/2013
23
Langages logiques
Un programme logique est composé de faits et de règles
qui sont traités par un moteur d'inférence.
Prolog fut le premier langage de ce type à être fonctionnel
sur un ordinateur.
24
INSAT 2012/2013
24
Langages fonctionnels
Dans ce paradigme, l'opération de base n'est pas
l'affectation, contrairement aux langages impératifs, mais
l'évaluation de fonctions.
Par exemple avec Lisp:
(first '(7 3 10))
cela donne 7
(* (+ 2 2) 4)
cela donne 16
25
INSAT 2012/2013
25
Langages à objets
Les langages à objets offrent une abstraction à la machine : l'objet
est une structure sémantique indépendante qui rassemble des
données et des traitements.
En se basant sur une méthode de conception à objet et sur un
langage de modélisation à objet, on peut facilement implanter un
concept au moyen d'un langage de programmation à objets.
En C++
Class Television {
int poids;
int longueur_diagonale;
boolean allume;
String Chaine_memorisees;
26
void eteindre ();
void allumer();
void memoriser_chaines (String chaine);
};
INSAT 2012/2013
26
5. Introduction à l’algorithmique
L'algorithmique est l’ensemble des règles et des techniques qui
sont impliquées dans la définition et la conception d'algorithmes,
c'est à dire de processus systématiques de résolution, par le calcul,
d'un problème permettant de décrire les étapes vers le résultat.
En d'autres termes, un algorithme est une suite finie et non-ambiguë
d’opérations permettant de donner la réponse à un problème.
Un algorithme est une solution informatique indépendant du
langage de programmation
Un algorithme est une étape qui précède l’implémentation d’un
programme permettant de faire un raisonnement sur la suite
d’instructions nécessaires
Le style de structure d’algorithme traité dans ce cours s’inspire des
langages de programmation impératifs et procéduraux
27
27
INSAT 2012/2013
28
INSAT 2012/2013
28
29
INSAT 2012/2013
29
Institut National des sciences Appliquées et des Technologies
Informatique
Chapitre 2 : Concepts de base
Hedia kochkar
Introduction
Formulation du comment ?
Problème
Résolution de problème
Algorithme
Codage
Suite d’instructions en
pseudo langage
Erreurs sémantiques
Programme
Suite d’instructions en
langage de programmation
Erreurs syntaxiques
Solution
Concepts de base
Exécution
Compilation
Ordinateur
Suite d’instructions en langage
machine
31
Introduction
Définition
Suite d’actions que devra effectuer un automate (ordinateur) pour
arriver en un temps fini à un résultat déterminé
Caractéristiques
Clarté : Pas d’ambiguïtés
Déterminisme : Avec un ensemble de données donné, il faut
qu’il fournisse le même résultat quelle que soit la machine.
Fini : il doit se terminer quelle que soit la machine, le temps et
la date d’exécution.
Efficacité : l’algorithme doit effectuer le travail demandé avec le
minimum de ressources.
Concepts de base
32
Formalisme
Entête
Algorithme Nom_algorithme
Const : Liste des constantes,
Déclarations
Var : Liste des variables
Struct : Liste des structures
début
Corps
fin
Concepts de base
Action 1;
Action 2;
…
Action n;
{ Commentaires }
33
Formalisme
Exemple
Entête
Déclarations
Algorithme AddDeuxEntiers
Var : a,b,c : entier
début
Corps
fin
Concepts de base
c←a+b;
34
Notion de variable
Définition
Une variable est une entité qui contient une information,
Caractérisée par
– un nom, on parle d’identifiant
– une valeur
– un type qui caractérise l’ensemble des valeurs que peut prendre la
variable
Rq
L’ensemble des variables est stocké dans la mémoire de l’ordinateur
Concepts de base
35
Notion de variable
Analogie avec une armoire d’archive :
– Armoire : Mémoire de l’ordinateur
– les tiroirs : les variables (l’étiquette correspondrait à l’identifiant)
– le contenu d’un tiroir : la valeur de la variable orrespondante
– la couleur du tiroir : le type de la variable (bleu pour les
factures, rouge pour les bons de comande, etc.)
Concepts de base
36
Déclaration d’une variable
Le type d’une variable caractérise :
l’ensemble des valeurs que peut prendre la variable
l’ensemble des actions que l’on peut effectuer sur une variable
Déclaration :
Identifiant de la variable : Son type
Exemple : age : entier, nom : Chaîne de Caractères
Une fois qu’un type de données est associé à une variable, cette variable ne
peut plus en changer
Une fois qu’un type de données est associé à une variable le contenu de cette
variable doit obligatoirement être du même type
Concepts de base
37
Qu’est ce qu’un type de données?
Par exemple
– Dans l’exemple précédent on a déclaré a et b comme des entiers
– a et b dans cet algorithme ne pourront pas stocker des réels
– a et b dans cet algorithme ne pourront pas changer de type
Deux grandes catégories de type :
– les types simples
– les types complexes (que nous verrons dans la suite du cours)
Concepts de base
38
Types Simples dénombrables
booléen,
les variables ne peuvent prendre que les valeurs VRAI ou FAUX
intervalle,
les variables ne peuvent prendre que les valeurs entières définies dans cet
intervalle, par exemple 1..10
énuméré,
les variables ne peuvent prendre que les valeurs explicitées, par exemple les jours
de la semaine (du lundi au dimanche)
Ce sont les seuls types simples qui peuvent être définis par l’informaticien
caractère,
Concepts de base
39
Types Simples dénombrables
Exemples
masculin : booléen
mois : 1..12
jour : JoursDeLaSemaine
Si on veut utiliser des énumérés, on doit définir le type dans l’entête de
l’algorithme en explicitant toutes les valeurs de ce type de la façon suivante :
Type
nom du type = {valeur1, valeur2, ..., valeurn}
Exemple
JoursDeLaSemaine = {Lundi, Mardi, Mercredi, Jeudi, Vendredi,
Samedi, Dimanche}
Concepts de base
40
Les Types Simples indénombrables
entier
(positifs et négatifs)
naturel
(positifs)
réel
chaine de caractère
Exemple
age : naturel
taille : réel
nom : chaîne de caractères
Concepts de base
41
Opérateur, opérande et expression
Un opérateur est un symbole d’opération qui permet d’agir sur
des variables ou de faire des “calculs”
Une opérande est une entité (variable, constante ou expression)
utilisée par un opérateur
Une expression :
Est une Combinaison d’opérateur(s) et d’opérande(s),
Est évaluée durant l’exécution de l’algorithme,
Possède une valeur (son interprétation) et un type
Exemple : a + b :
a est l’opérande gauche
+ est l’opérateur
b est l’opérande droite
a + b est appelé une expression
Concepts de base
42
Opérateur, opérande et expression
Un opérateur peut être Unaire (1 seule opérande) ou Binaire
Un opérateur est associé à un type de donnée et ne peut être utilisé
qu’avec des variables, des constantes, ou des expressions de ce type.
La signification d’un opérateur peut changer en fonction du type
des opérandes
l’opérateur + avec des entiers = l’addition,
l’opérateur + avec des chaînes de caractères= concaténation
Toutefois exceptionnellement dans certains cas on accepte
d’utiliser un opérateur avec deux opérandes de types différents (ex.
2 + 3.5)
Concepts de base
43
Opérateur, opérande et expression
Pour les booléens nous avons les opérateurs non, et, ou, ouExclusif
Non
Et
Concepts de base
Ou
Ou exclusif
44
Opérateur, opérande et expression
Rappels sur la logique booléenne
Valeurs possibles : Vrai ou Faux
Associativité des opérateurs ET et OU : a et (b et c) = (a et b) et c
Commutativité des opérateurs ET et OU
a et b = b et a
a ou b = b ou a
Distributivité des opérateurs et et ou
a ou (b et c) = (a ou b) et (a ou c)
a et (b ou c) = (a et b) ou (a et c)
Involution : non non a = a
Loi de Morgan
non (a ou b) = non a et non b
non (a et b) = non a ou non b
Concepts de base
45
Opérateur, opérande et expression
Opérateurs sur les numériques
On retrouve tout naturellemment +, - , *, /
Pour les entiers : div et mod, qui permettent respectivement de
calculer une division entière et le reste de cette division,
L’opérateur d’égalité (=) : permet de savoir si les deux opérandes
sont égales
Le résultat d'une expression contenant cet opérateur est un booléen
On a aussi l’opérateur d’inégalité : ≠
Et pour les types possédant un ordre les opérateurs de comparaison
<, ≤, >, ≥
Concepts de base
46
Opérateur, opérande et expression
Les opérateurs sur les énumérés
succ permet d’obtenir le successeur
Exemple (JourDeLaSemaine)
succ Lundi vaut Mardi
succ Dimanche vaut Lundi
pred permet d’obtenir le prédecesseur,
pred Mardi vaut Lundi
pred Lundi vaut Dimanche
ord permet d’obtenir le naturel de l’énuméré :
ord Lundi vaut 0
ord Dimanche vaut 6
Concepts de base
47
Opérateur, opérande et expression
Opérateurs sur les caractères
Pour les caractères on retrouve les trois opérateurs des
énumérés
Opérateur car : le dual de l’opérateur ord avec comme fonction
de bijection la table de correspondance de la norme ASCII
Exemple
ord A vaut 65
car 65 vaut A
pred A vaut @
Concepts de base
48
Manipulation de variables
Obtenir son contenu : Cela s’effectue en nommant la variable
Affecter un (nouveau) contenu
identifiant de la variable ← expression
Par exemple l’expression c ← a + b se comprend de la façon
suivante :
On prend la valeur contenue dans la variable a
On prend la valeur contenue dans la variable b
On additionne ces deux valeurs
On met ce résultat dans la variable c
Si c avait auparavant une valeur, cette dernière est perdue !
Concepts de base
49
Les entrées / sorties
Un algorithme peut avoir des interactions avec l’utilisateur :
Il peut afficher un résultat (du texte ou le contenu d’une
variable)
Écrire (liste d'expressions)
– des nombres
–des variables ayant des valeurs
– des commentaires écrits sous forme de chaînes de caractères.
écrire(x, y+2, "bonjour")
demander à l’utilisateur de saisir une information afin de la
stocker dans une variable
lire(variable)
Concepts de base
50
Exemple
On désire écrire un algorithme qui lit sur l'entrée
standard une valeur représentant une somme d'argent
et qui calcule et affiche le nombre de billets de 30 DT,
20 DT et 10 DT et de pièces de 5 DT et 1 DT qu'elle
représente.
Concepts de base
51
Exemple
Nom : DécompSomme.
Principe : on commence par lire sur l'entrée standard l'entier qui
représente la somme d'argent et affecte la valeur à une variable
somme.
Pour obtenir la décomposition en nombre de billets et de pièces de
la somme d'argent, on procède par divisions successives en
conservant chaque fois le reste.
Concepts de base
52
Exemple
Déclaration
somme : entier, la somme d'argent à décomposer
billet30 : entier, le nombre de billets de 30 DT
billet20 : entier, le nombre de billets de 30 DT
billet10 : entier, le nombre de billets de 10
piece5 : entier, le nombre de pièces de 5
piece1 : entier, le nombre de pièces de 1
reste30 : entier, reste de la division entière de somme par 30
reste20 : entier, reste de la division entière de reste30 par 20
reste10 : entier, reste de la division entière de reste20 par 10
reste5 : entier, reste de la division entière de reste10 par 5
Concepts de base
53
Exemple
Début
lire(somme)
billet30 ← somme div 30
reste30 ← somme mod 30
billet20 ← reste30 div 20;
reste20 ← reste30 mod 20
billet10 ← reste20 div 10
reste10 ← reste20 mod 10
piece5 ← reste10 div 5
reste5 ← reste10 mod 5
piece1 ← reste5
écrire (billet30, billet20, billet10, piece5, piece1)
Fin
Concepts de base
54
‫ا‬
Chap3 :Programmation C
Introduction
Langage polyvalent permettant le développement de
systèmes d'exploitation, de programmes applicatifs
scientifiques et de gestion.
Langage structuré.
Langage évolué qui permet néanmoins d'effectuer des
opérations de bas niveau.
Grande efficacité et puissance.
-Langage compilé
Types fondamentaux
Il y a globalement trois (quatre?) types de variables :
Les entiers : int (2 octets), short int (2 octets), long
int (4 octets)
Les réels : float (4 octets) , double (8 octets) , long
double
Les caractères : char (1 octets)
Rien … : void
Type
Exemple
Octets
Intervalle
Intervalle valeurs
Précision
unsigned char
'a'
1
0 .. 28 -1
0 .. 255
char
'a'
1
-27 .. 27 1
-128 .. +127
short int
-125, 312
2
-215.. 215 1
-32768 .. +32767
unsigned short
273U
2
0 .. 216 -1
0 .. 65535
int
-3000, 3213
4
-231 .. 231 - -2 milliards env ..
1
+2 milliards env
unsigned int
3124U
4
0 .. 232 -1
long int
3167L
4
-231 .. 231 - -2 milliards env ..
1
+2 milliards env
unsigned long
243UL
4
0 .. 232 -1
0 .. 4 milliards env
float
21.3F,
3.12e4F
4
1.17 10-38
.. 3.40 1038
1.17 10-38 .. 3.40
1038
6
chiffres
double
12.4,
125.2e5
8
2.22 10-308
.. 1.79
10308
2.22 10-308 ..
1.7910308
15
chiffres
0 .. 4 milliards env
Les operateurs
Les opérateurs relationnels
==
égalité
!=
différence
>
supérieur
>=
Supérieur ou égal
<
Inférieur
<=
Inférieur ou égal
2 Les opérateurs logiques
!
&&
||
Négation unaire
d'une valeur
logique
ET de 2 valeurs
logiques
OU de 2 valeurs
logiques
Opérateur arithmétique
+,-,*, /
%
Opérateurs
arithmétique de base
Reste d'une division
entière
•i = 5 : l'affectation de la valeur 5 à i.
•Cet opérateur possède une associativité de droite à gauche :
i=j=5
Les opérateurs unaires ++ et -- sont des opérateurs
particuliers qui peuvent avoir jusqu’à deux effets de bord:
1-En dehors de toute affectation,
elle incrémente l’opérande associée,i++ et ++i
sont équivalents à i=i+1
2-Lorsqu’ils sont utilisés dans une affectation,
tout dépend de la position de l’opérateur par rapport
à l’opérande, par exemple :
j=i++ est équivalent à j=i;i=i+1;
j=++i est équivalent à i=i+1;j=i;
i=i+k i+=k
a=a*b a*=b
i=i-k i-=k
a=a/b a/=b
1er programme C
Structure d’un programme C
#include<stdio.h> // inclusion de bibliothèques
void main() // point d’entrée du programme
{ // début
//Declarations
// Instructions
} // fin
// Commentaire sur une seule ligne
/*Commentaire
sur plusieurs
lignes */
Erreur d’exécution
Division par zéro
Erreurs de compilation:
Erreur de syntaxe, déclaration manquante,
parenthèse manquante,...
Erreur de liens:
appel a des fonctions dont
les bibliothèques
sont manquantes
Les fonctions de
lecture – Ecriture
Fonctions de lecture et d’écriture
Ecriture
Affichage de la valeur d'une variable
Syntaxe
printf("format de l'affichage", variables);
Ces fonctions utilisent des formats qui permettent de
lire/écrire des variables de différents types :
%e , %f : réels
%le, %lf : réels de type double
%d : entiers
%ld : entiers long int
%s : chaîne de caractères
%c : un caractère
Exemple
int i =8;int j = 10;
printf("i vaut: %d j vaut: %d \n",i,j);
float r = 6.28;
printf("le rayon = %f \n",r);
Lecture
Syntaxe
scanf("format
des variables ",
adresses des variables);
scanf("format des variables ", &
variables);
Exemple:
int i , j;
scanf(" %d %d ",&i,&j);
float r;
scanf(" %f",&r);
Exercice
Soit le programme C suivant, cherchez les erreurs et corrigez-les.
#include<stdio.h>
void main()
{
int z ;
printf("Donner un réel et un entier\n") ;
float y ;
scanf(" %d%f ", &y,&z) ;
printf("%d%d", &z,&y);
}
Traitement conditionnel
Instructions conditionnelle si alors sinon..
if (expression)
{
instructions;
}
i f ( expression )
{
i n s t r u c t i o n;
}
else
{
Instru c t i o n ( s ) ;
}
Par exemple :
i f ( a <10)
a=a +1;
else
a=a +2;
Lorsqu’il y ambiguité sur la porté du else d’une
instruction if, le else dépend toujours du if le plus
proche
Par exemple :
i f ( a>b ) i f ( c<d ) u=v ; e l s e i = j ;
Le mieux étant toutefois de clarifier cette ambiguité :
i f ( a>b )
i f ( c<d )
u=v ;
else
i=j;
Instruction conditionnelle multiple
switch (expression)
{
case valeur1:
instructions1; break;
case valeur2:
instructions2; break;
.
.
.
case valeurn:
instructionn; break;
default:
instructionn+1;break;
}
exemple
int c;
scanf(" %d", &c) ;
switch (c)
{
case '1':
printf(“Janvier\n”);break;
case '2':
printf(“Février\n”);break;
…..
case '12':
printf(“Décembre”);break;
default:
printf(“Erreur”);break;
}
Traitement itératif
•
La boucle pour for
•
évaluée 1 seule fois en début de boucle
évaluée à la fin de chaque itération
»
•
for(expr1;expr2;expr3)
•
•
•
{
instructions;
}
»
•
•
évaluée avant chaque itération
Si vrai alors les instructions de la boucle sont exécutées
sinon la boucle est terminée
exemple
// somme des 100 premiers entiers?
main ()
{
int i,s;
s= 0;
for(i=1;i<=100;i =i+1)
{
s = s+i;
/ / ou s+=i;
}
printf("s =%d \n”,s);
}
La boucle tantque while
while (expression)
{
instructions;
}
expression est évaluée avant chaque itération. Si le résultat
est vrai alors les instructions sont exécutées sinon on
sort de la boucle
exemple
i =0;
n = 20;
while (i<n)
{
i++;
}
La boucle répéter
do … while
do
{
instructions;
} while (expression)
expression est évaluée après chaque itération. Si le résultat
est vrai alors les instructions sont exécutées sinon on
sort de la boucle
exemple
i =0;
n = 20;
do
{
i++;
} while(i<n)