ALGORITHMIQUE ET PROGRAMMATION En C



Documents pareils

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UE Programmation Impérative Licence 2ème Année

Bases de programmation. Cours 5. Structurer les données

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Algorithmique et Programmation, IMA

Rappels Entrées -Sorties

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Algorithmique et programmation : les bases (VBA) Corrigé

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Logiciel de Base. I. Représentation des nombres

Chapitre 10 Arithmétique réelle

Présentation du langage et premières fonctions

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Programmation C. Apprendre à développer des programmes simples dans le langage C

Chap III : Les tableaux

Cours d initiation à la programmation en C++ Johann Cuenin

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Introduction au langage C

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

V- Manipulations de nombres en binaire

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Représentation d un entier en base b

Conversion d un entier. Méthode par soustraction

Algorithme. Table des matières

TP 1. Prise en main du langage Python

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Langages et Concepts de Programmation Introduction à la programmation en langage C

UE C avancé cours 1: introduction et révisions

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Claude Delannoy. 3 e édition C++

Corrigé des TD 1 à 5

Programmation en Java IUT GEII (MC-II1) 1

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Initiation à la programmation en Python

Cours 1 : Qu est-ce que la programmation?

Cours d Algorithmique et de Langage C v 3.0

Cours 1 : La compilation

Python - introduction à la programmation et calcul scientifique

Solutions du chapitre 4

Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

IFT2880 Organisation des ordinateurs et systèmes

STAGE IREM 0- Premiers pas en Python

Représentation des Nombres

Introduction à l algorithmique et à la programmation M1102 CM n 3

Initiation. àl algorithmique et à la programmation. en C

Informatique Générale

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

INF 321 : mémento de la syntaxe de Java

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Cours d algorithmique pour la classe de 2nde

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval

Le langage C. Séance n 4

Programmation en langage C

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

EXERCICES DE REVISIONS MATHEMATIQUES CM2

Les chaînes de caractères

Programmation système I Les entrées/sorties

Notions fondamentales du langage C# Version 1.0

Cours d Informatique

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Utilisation d objets : String et ArrayList

Codage d information. Codage d information : -Définition-

Analyse de sécurité de logiciels système par typage statique

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Java c est quoi? Java pourquoi?

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

L informatique en BCPST

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

Cours Informatique Master STEP

Compilation (INF 564)

programmation S initier à la la Avec des exemples en C, C++, C#, Java et PHP Avec des exemples en C, C++, C#, Java et PHP Claude Delannoy

as Architecture des Systèmes d Information

Généralités sur le Langage Java et éléments syntaxiques.

Architecture de l ordinateur

Le langage C. Introduction, guide de reference

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

Enseignement secondaire technique

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Quelques éléments de compilation en C et makefiles

Évaluation et implémentation des langages

Transcription:

Objectifs ALGORITHMIQUE ET PROGRAMMATION Une façon de raisonner Automatiser la résolution de problèmes Maîtriser les concepts de l algorithmique Pas faire des spécialistes d un langage Pierre TELLIER 2 Définitions Algorithme Séquence finie d opérations qui conduisent à la réalisation d un calcul Ensemble complet des règles permettant la résolution d'un problème donné Programme Traduction de l algorithme dans un langage de programmation Moyens Intellectuels Créativité, imagination, abstraction, modélisation, structuration, déduction, induction Pratiques Entraînement intensif Expérimentation : choix d un langage 3 4 Langage Langage : syntaxe, grammaire réalise certaines opérations (élémentaires ) expressions composition d expressions désignation d objets Déclaratifs vs. impératifs Le langage C et son infinité de possibilités d erreurs killerquizz.swf Le Php, langage orienté web Bibliographie Programmer en langage C Cours et exercices corrigés - 4ème édition Claude Delannoy, Eyrolles 268 pages, avril 2002, ISBN: 2-212-11072-3 Algorithmique et Programmation en C Techniques de programmation Algorithmes et structures de données Pierre Tellier, Polycopiés. 5 6 1

Objets élémentaires Nombres entiers : 26, -172. Nombres réels : 2.7, 3.14, 2.0, -3.4 10-3. Caractères : 'A', 'a', '0', ',', ENTER, TAB, BEEP. Chaînes de caractères : "bonjour", "ceci est une chaîne". Booléens : VRAI ou FAUX. Arithmétiques Opérateurs addition +, soustraction -, moins (unaire) -, multiplication *, division /, division entière div, modulo (reste de la division entière) mod. Booléens : ET, OU, NON Sur les chaînes : De comparaison = (égal), <> (différent), <, >, <=, >=. 7 8 Expressions arithmétiques 2 + 3 17 * 73 + 2 7 mod 2 7 div 2 (vaut 3 : division entière) 7 / 2 (vaut 3.5 : division réelle) 0.3 * 168.2 + (4. + 0.11)/5. Expressions Booléennes Opérateurs de comparaison : =, <>, <=, >= Opérateurs Booléens : ET, OU, NON 3<2 vaut FAUX. (3<2) ET (6=5). Comme (3<2) vaut FAUX, l'expression (FAUX ET quelque chose) donnera forcément FAUX. (3>2) OU (6=5). Comme (3>2) vaut VRAI, l'expression (VRAI OU quelque chose) donnera forcément VRAI. 9 10 Nombres types : int, float, opérateurs +,-,/,*,%,==,!=,<=,>= Caractères char ==,!=,<=,>= Chaînes : on verra + tard Booléens int (0 : FAUX, autre : VRAI), (FAUX : 0, VRAI : 1) &&,,! Accumulation Opérations sur les bits &,,~,<<,>> 11 12 2

En Php En Php Nombres types : opérateurs +,-,/,*,%,==,!=,<=,>= Caractères ==,!=,<=,>= Chaînes., ==, 13 Booléens (0 : FAUX, autre : VRAI), (FAUX : 0, VRAI : 1) &&,,!, and, or, not Accumulation 14 Identificateurs Suite "presque" (chiffres, accents) quelconque de caractères, comme fact, pgcd, produit, somme, etc. Ils doivent être choisis de la façon la plus parlante possible. Dans tous les langages, certains identificateurs sont réservés. Constantes réel Pi vaut 3.1415927; 2.0 * Pi Pi / 4.0 réel courseuro vaut 6.55957; 3.60 / courseuro entier nbcôtésducarré vaut 4; 12 * nbcôtésducarré 4.5 * entierversréel(nbcôtésducarré) 15 16 const const int nbmax = 100; cont int faux=0,vrai=1; const float pi=3.14159; #define #define NBMAX 100 #define FAUX 0 #define VRAI 1 #define PI 3.14159 Usage 2.0 * pi PI / 4.0 4.5 * (float)nbmax Constantes en C Constantes en Php <?php define ("COURSEURO", 6.55957); define ("NBMAX", 100); define ("FAUX", 0); define ("VRAI", 1); define ("PI", 3.14159);?> 17 18 3

Variables En maths : noms symboliques (paramètres à valeur connue ou spécifiée plus tard, inconnues, variables de fonctions) Cette notion existe dans presque tous les langages Sauf notion d'inconnue (excepté Prolog). Variables : déclaration Objets désignés par un identificateur Occupent un emplacement mémoire Servent à la résolution de problèmes Résultats intermédiaires variables entier nombreetudiants; entier age, nbfrèressoeurs, taillefamille; réel rayon; réel a, b, c; 19 20 int nombreetudiants; int age, nbfreressoeurs, taillefamille; float rayon; float a, b, c; En Php Pas de déclaration obligatoire On le fera parfois pour les résultats de fonctions (pour s'assurer du type) Le type est en principe "chaîne de caractères" Il est déterminé en fonction du contexte (opérateurs) $y="a"+1; echo $y."<br>"; $y="a"+"b"; echo $y."<br>"; $y="1a2"+"b3"; echo $y."<br>"; $toto = 1 + "10.5" // 11.5 $toto = 1 + "Hello World" // 1 $toto = 1 + "89.5 bande FM" // 90.5 21 22 Conversion entre types A l'aide de la fonction settype() Casting : comme en C : Ex : $a = 10 // Entier $b = (double) $a // Virgule flottante Accès aux types : int, integer, float, real, double, string, array, object Variables dynamiques Noms variables de variables Ex : $a = "Hello" $$a = "World" $a "Hello" $$a $Hello "World" echo "$a ${$a}"; "Hello World" echo "$a $hello"; "Hello World" 23 24 4

Initialisation Variables entier nombreetudiants init 20; entier age, nombrefrèresetsoeurs init 0, taillefamille init 3; réel rayon init -1.0, pisur2 init pi/2.0; int nombreetudiants = 20; int age, nombrefreresetsoeurs=0, taillefamille = 3; float rayon=-1.0, pisur2=pi/2.0; C 25 26 Php $nombreetudiants = 20; $nombrefreresetsoeurs=0; $taillefamille = 3; $rayon=-1.0, $pisur2=pi/2.0; Expressions nombrefrèresetsoeurs+2+1 2.0 * Pi * rayon Pi * rayon * rayon nombrefreresetsoeurs+2+1 2.0 * Pi * rayon Pi * rayon * rayon 27 28 Affectation Consiste à donner une valeur (le résultat d'une expression) à une variable Ranger valeur dans l'emplacement mémoire occupé par la variable rayon := 5.0 nombrefrèresetsoeurs := 4 taillefamille:=nombrefrèresetsoeurs+1+2 rayon = 5.0; nombrefrèresetsoeurs = 4; taillefamille=nombrefreresetsoeurs+1+2; 29 30 5

Php $rayon = 5.0; $nombrefrèresetsoeurs = 4; $taillefamille=$nombrefreresetsoeurs+1+2; Séquentialité Les instructions sont exécutées les unes après les autres Elles sont terminées par «;» Idem en C, Pascal, Php, etc ;; en Caml Numéro de ligne en Basic Ordre des lignes en Fortran 31 32 Affectations rayon := 5.0; nombrefrèresetsoeurs := 4; taillefamille:=nombrefrèresetsoeurs+1+2; Variable informatique Accumulation. exemple X := X*2; En maths : X n+1 = 2 * X n : X = 2*X ou X *= 2; rayon = 5.0; nombrefreresetsoeurs = 4; taillefamille=nombrefreresetsoeurs+1+2; $rayon = 5.0; $nombrefreresetsoeurs = 4; $taillefamille=nombrefreresetsoeurs+1+2; 33 34 Variable informatique Echange 2 entiers Echange des contenus de 2 variables tmp := a; a := b; b := tmp; a := a-b; b := a+b; a := b-a; 35 36 6

Entrées/sorties afficher(); afficher(x); afficher("texte à l'écran"); afficher(y+z); lire(); x:=lire(); De nos jours : Interfaces graphiques (MFC, Motif, GTK, ) Utilisation de navigateurs (HTML + CGI) Exemple afficher("combien de Francs? "); francs := lire(); euros := francs/courseuro; afficher("en euros : ", euros); 37 38 Affichage d'un texte : printf("voici "); printf("mon texte"); voici mon texte Avec passage à la ligne : printf("voici\n"); printf("mon texte"); voici mon texte Affichage d'un entier : int x=2; printf("%d",x); printf("\nx vaut : %d\n",x); 2 x vaut : 2 d'une expression à valeur entière printf("%d\n",2*x-5); -1 39 40 Affichage d'un réel : float y=2.; printf("%f",y); 2.000000 d'une expression à valeur réelle printf("%f\n",2.*sqrt(y)-1.19); 1.638427 Affichage d'un entier, d'un texte et d'un réel (texte sur une seule ligne) printf("racine de %d vaut\ %f\n", x,sqrt((float)x); racine de 2 vaut 1.414214 41 42 7

Lecture d'un entier : int x; scanf("%d",&x); lecture d'un réel : float y; scanf("%f",&y); Lecture d'un entier et d un réel int x; float y; scanf("%d %f\n",&x,&y); Lecture d'un caractère Théorie : scanf("%c", &car); En pratique : scanf("%c%c",&car, &ret); 43 44 En Php Affichage : echo ou print print "voici "; echo "mon texte"; voici mon texte Avec passage à la ligne : echo "voici<br>"; echo "mon texte"; voici mon texte Affichage d'un entier : $x=2; echo $x; echo "<BR>x vaut : ".$x."<br>"; 2 x vaut : 2 d'une expression à valeur entière $tmp=2*$x-5; echo $tmp."<br>"; -1 45 46 Affichage d'un réel : $y=2.; print $y; 2 d'une expression à valeur réelle $tmp= 2.*sqrt($y)-1.19;print $tmp; 1.638427 Affichage d'un entier, d'un texte et d'un réel (texte sur une seule ligne) $tmp=sqrt($x); echo "racine de ".$x." vaut ".$tmp; racine de 2 vaut 1.414214 47 48 8

par l'url Lecture d'un entier : http://mach.domaine/prog.php?x=2 $x = $_GET["x"]; lecture d'un réel : http://mach.domaine/prog.php?y=2.3 $y = $_GET["y"]; Lecture d'un entier et d un réel http://mach.domaine/prog.php?x=2&y=2.3 $x = $_GET["x"]; $y = $_GET["y"]; Lecture d'un caractère http://mach.domaine/prog.php?c='a' $c = $_GET["c"]; 49 50 Via un formulaire toto.html <form action="toto.php" method=post> <input type=text name="x"> <input type=submit value="ok"> </form> toto.php <?php $v=$_post["x"]; echo "valeur : ".$v;?> Accumulations (suite) i = i+1; i = i-1; i += 1; i -= 1; i++; i--; ++i; --i; int i,j; i=1; j=i++; i=1; j=++i; 51 52 Accumulations (suite) $i = $i+1; $i = $i-1; $i += 1; $i -= 1; $i++; $i--; ++$i; --$i; Constantes Variables Début Instructions; Fin Programmes élémentaires $i=1; $j=$i++; $i=1; $j=++$i; 53 54 9

Exemple : conversion en Euros constantes réel courseuro vaut 6.55957; variables réel francs; début francs := lire(); afficher("en euros : ", francs/courseuro); fin 55 plus parlant! constantes réel courseuro vaut 6.55957; variables réel francs, euros; début afficher("combien de Francs? "); francs := lire(); euros := francs/courseuro; afficher("en euros : ", euros); fin 56 : euros.c int main() { const float courseuro = 6.55957; float francs, euros; printf("combien de Francs? "); scanf("%f", &francs); euros = francs/courseuro; printf("en euros : %f", euros); return 0; Compilation Compilateur : gcc, djgpp, vc++, gcc euros.c : génère a.out gcc euros.c -o euros : génère euros gcc -Wall euros.c -o euros exécution : euros (./euros) Cmd.exe C Source file } 57 58 En Php : euros.php <?php define("courseuro", 6.55957); $francs=$_get["f"]; $euros = $francs/courseuro; echo "En euros : ".$euros;?> Autres exemples Calculs géométriques Cercle (périmètre, surface) Diagonale d'un rectangle Arrondis http://mach.domaine/euros.php?f=100 59 60 10

Les nombres décimaux binaires, petits indiens, boutisme hexadécimaux, octaux décimo-binaires (calculettes) réels (norme IEEE 754 8-23, 11-52) Faux! Le programme suivant est faux. Pourquoi? variables entier x, y; début y := x+1; afficher("y vaut : ", y); fin 61 62 int main () { int x,y; y = x+1; printf("y vaut : %d", y); return 0; } contrôle de la syntaxe, pas de la sémantique Compilez avec l'option Wall (certains compilos) En Php <?php $y=$x+1; echo $y."<br>"; //?> 63 64 Analyse descendante Exemple Décomposer un problème en sous problèmes Élémentaires Faciles à résoudre Volume d'un écrou à 8 pans 65 66 11

Découpage fonctionnel Programme obtenu constantes réel pi vaut 3.14159; variables réel l, h, r, hauteurt, surfacet, surfaceo, surfacec, surfacee, volumee; début afficher("entrez la taille du côté, le rayon du trou et la hauteur de l'écrou :"); l := lire(); r := lire(); h := lire(); hauteurt:=(l/2.0)/tangente(pi/8.0); /*tangente:fonction mathématique prédéfinie*/ surfacet := l*hauteurt/2.0; surfaceo := 8.0*surfaceT; surfacec := pi*r*r; surfacee := surfaceo-surfacec; volumee := surfacee*h; afficher("son volume est : ",volumee); fin 67 68 12