Documents pareils
Introduction au langage C

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Cours d Algorithmique et de Langage C v 3.0

Algorithmique et Programmation, IMA

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

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

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

Programmation C++ (débutant)/instructions for, while et do...while

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

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

SUPPORT DE COURS. Langage C

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)

Claude Delannoy. 3 e édition C++

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

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

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Programmation en langage C

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Notions fondamentales du langage C# Version 1.0

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

Plan du cours. Historique du langage Nouveautés de Java 7

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

ALGORITHMIQUE ET PROGRAMMATION En C

Programmer en JAVA. par Tama

Cours d Informatique

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

Langage Éric Guérin 5 octobre 2010

Programmation Classique en langage C

V- Manipulations de nombres en binaire

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

INF 321 : mémento de la syntaxe de Java

Java Licence Professionnelle CISII,

I. Introduction aux fonctions : les fonctions standards

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

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Cours Informatique Master STEP

TP 1. Prise en main du langage Python

COMPARAISONDESLANGAGESC, C++, JAVA ET

Cours d algorithmique pour la classe de 2nde

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

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

Algorithme. Table des matières

Initiation à la programmation en Python

Algorithmique et programmation : les bases (VBA) Corrigé

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

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

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

STAGE IREM 0- Premiers pas en Python

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

Le Langage C Licence Professionnelle Qualité Logiciel Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2011/2012

Algorithmique et structures de données I

Conventions d écriture et outils de mise au point

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

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

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

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Le langage C. Introduction, guide de reference

Organigramme / Algorigramme Dossier élève 1 SI

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Rappels Entrées -Sorties

Recherche dans un tableau

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

Chap III : Les tableaux

Algorithmique avec Algobox

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

Utilisation d objets : String et ArrayList

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

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

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

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

INITIATION A LA PROGRAMMATION

Rappels sur les suites - Algorithme

Java Licence Professionnelle CISII,

Introduction au Langage de Programmation C

as Architecture des Systèmes d Information

Les chaînes de caractères

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

Représentation d un entier en base b

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

Solutions du chapitre 4

Programmation C. J.-F. Lalande. 15 novembre 2012

Méthodes de programmation systèmes UE n NSY103. Notes de cours. Nombre d'heures : 55h (~ cours de 3 heures)

L informatique en BCPST

Cours 1 : Qu est-ce que la programmation?

Les structures de données. Rajae El Ouazzani

Découverte de Python

Le prototype de la fonction main()

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Adama MBODJI MBODJ.SYSTEM

Informatique Générale

1. Langage de programmation Java

2 Comment fonctionne un ordinateur, dans les grandes lignes

Chapitre 1 : La gestion dynamique de la mémoire

IUT ANNECY Département Mesures Physiques Cours d informatique Initiation au langage C

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

Transcription:

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1

Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter toute une classe de problèmes Combinant des opérations suffisamment simples pour être effectuées par une machine Tour d horizon des notions de bases de l algorithmique Variable : déclaration, type Instruction : séquence, bloc Structures de contrôle Conditionnelles : SI ALORS SINON Boucles : TANT QUE, POUR Exemples simples d application : calcul de produit, minimum Page du cours : http://www710.univ-lyon1.fr/~edessere/lif1 2

Objectifs de la séance Apprendre la syntaxe du langage C Savoir traduire un algorithme en langage C Vous permettre de pouvoir débuter les séances de travaux pratiques Environnement Dev-c++ 3

Plan Historique du C Types des données algorithmique / C Les entrées / sorties en C Éléments syntaxiques du langage C Structures de contrôles Traduction d algorithmes simples en langage C 4

Un peu d'histoire 1945, les programmes étaient écrits directement en code machine 1954 : FORTRAN 1 1978 : The C programming language Brian W. Kernighan et Dennis M.Ritchie 1983-1988 ; Normalisation ANSI (avec C++) 1988 : The C programming language : 2ème édition des mêmes auteurs Évolutions permanentes 5

Premier exemple en C premierexemple.cpp #include <iostream.h> #include <stdlib.h> int main (void) { cout << Hello world << endl ; exit(exit_success) ; } Mots clé du langage : identifiés par une couleur particulière dans l interface Visual C++ Anatomie d un programme C : Nom de fichier d extension.cpp Utilisation de bibliothèques (déclarations des fonctions externes) : directive #include Pour entrées / sorties Pour opérations mathématiques Définitions des sous-programmes (fonctions et procédures) Définition de la fonction principale main 6

Premier exemple en C premierexemple.cpp #include <iostream.h> #include <stdlib.h> int main (void) { cout << Hello world << endl ; exit(exit_success) ; } Fonction principale : main Instruction particulière exit ou return (EXIT_SUCCESS) : indique si le programme s est déroulé et terminé normalement Délimitation des blocs par { et } Toutes les instructions se terminent par un " ; " cout : permet d afficher un message à l écran (c++) (cout <<) : chaîne de caractères On peut avoir plusieurs << endl : constante C++ permet de passer à la ligne suivante (end-line) après avoir écrit le message 7

Un programme C Suites ordonnées de déclarations ou de définitions de types, de variables de fonctions (CM 3) Une fonction particulière : main première fonction appelée lors de l exécution Appelle les autres sous-programmes Tout nom doit être déclaré avant d être utilisé type, variable, fonction Préprocesseur : #include directive de compilation pour l inclusion des déclarations des sous-programmes prédéfinies dans les bibliothèques 8

Les entrées / sorties en C Communication programme / utilisateur Traduction de "afficher" et "lire" de l algorithmique cout : permet d afficher un message à l écran Exemple : on veut afficher un message de bienvenue à l utilisateur : cout << "bienvenue" ; cin : permet de récupérer une valeur fournie par l utilisateur Exemple : on veut demander à l utilisateur une valeur en vue de calculer sa factorielle cin >> nomvariable ; 9

Les entrées / sorties en C cout << "texte" cin >> variable Programme Attention : << pour cout (du programme vers l écran) >> pour cin (du clavier vers le programme) 10

Les entrées / sorties en C Dans un "cout" on peut mettre Des chaînes de caractères : cout <<"bienvenue" ; Le contenu de variables : cout << a ; Une constante qui permet de passer à la ligne : cout << endl ; On peut mélanger ces trois types d affichage dans un même cout ; il suffit de répéter les "<<" : Ex : cout <<"bienvenue " << a << endl ; si la variable a contient "Pierre" alors on affichera sur la même ligne "bienvenue Pierre" puis on passera à la ligne suivante avec endl. On peut saisir plusieurs valeurs à la suite dans un "cin" : cin>>a>>b>>c permettra de saisir les trois variables a, b et c. cin >> "bienvenue" ; est une erreur, pourquoi? 11

Correspondance des types Entier Réel Algorithmique int, short float, double Langage C (différence sur la longueur du codage et donc de la précision) Booleén Caractère Chaîne de caractères bool char char[] Tableau de 5 entiers int[5] 12

Déclaration de variables algorithmique v : entier x : réel lx : réel c : carctère tab : tableau [10] entier langage C int v ; float x ; (4 octets) double lx ; (8 octets) char c ; int tab[10] ; Octet : vecteur de huit bits (chiffre binaire) pouvant représenter 2 8 (256) valeurs différentes 13

Stockage des variables Les variables sont stockées dans la mémoire vive de l ordinateur Place occupée fonction du type de la variable En mémoire les variables sont repérées par leur emplacement ou adresse Soient les déclarations suivantes : int a; char toto, indice; float fact; Les variables seront stockées en mémoire de la manière suivante : Type Char 1 short, 2 Int, long, float 4 Double 8 Long double 10 Taille (octets) a a a a Toto indice fact fact i-1 i i+1 i+2 i+3 i+4 i+5 i+6 14

Les constantes en C Une constante = nom désignant une valeur non modifiable lors de l'exécution d'un programme. Définie grâce à la directive du préprocesseur #define, qui permet de remplacer toutes les occurrences du mot qui le suit par la valeur immédiatement derrière elle. #define _Pi 3.1415927 remplacera tous les identifiants «_Pi» (sans les guillemets) par la valeur 3.1415927 Toutefois, avec cette méthode les constantes ne sont pas typées utiliser le mot clé const, qui permet de déclarer des constantes typées : const int dix = 10; 15

Identificateurs Nom de variable, de constantes. Chaîne de caractères commençant par une lettre (majuscule ou minuscule) constituée de lettres [a-za-z], de chiffres [0-9], de _, sans accent, ni espace, ni Attention : MAJUSCULES et minuscules différenciées Convention : nom de constante en majuscule Un identificateur doit être évocateur de ce qu il représente discriminant : identificateur correct pour variable de calcul du discriminant; nom_etudiants : indentificateur correct Fgmqsdgfk, rapidos, tempo, variable : à éviter!!! 16

Instruction simple Expression ; ; : à la fin de chaque instruction simple Exécutées séquentiellement de haut en bas (sens de la lecture) L'expression est généralement une affectation x = 3 ; 17

Bloc d'instructions Bloc : séquence d'instructions entre {... } Considéré comme une instruction À utiliser systèmatiquement dans les instructions complexes Instructions exécutées du début à la fin du bloc Les blocs peuvent etre imbriqués 18

Exemple : calcul de moyenne On veut demander à l utilisateur de donner deux valeur a et b et on lui affichera la moyenne de ces deux valeurs float a,b,moyenne; cout << "Donnez deux valeurs"; cin >> a >> b; moyenne = (a + b ) / 2; cout << "la moyenne est : " << moyenne; 19

Structures de contrôle Constructions du langage algorithmique Alternative : si-alors-sinon Itérations Tant que... Faire...FinTantQue Faire... Tant que... Pour... de... à... pas de... Faire...FinPour Sélection Selon autrement Fin Selon 20

Traduction de l'alternative Si expressioncondition Alors Action(s) 1 Sinon Action(s) 2 FinSi if ( expressioncondition ) { Action(s) 1 } else { Action(s) 2 } Attention : ne pas mettre de ; après la condition!! Comme en algorithmique : Partie else (sinon) pas forcément nécessaire 21

Alternative : exemple Si la moyenne de deux notes est supérieure ou égal à 10 on affiche reçu sinon on affiche recalé. si (moyenne >=10) alors afficher (reçu) sinon afficher (recalé) Fin si if (moyenne >=10) { cout << "reçu"; } else { cout << "recalé"; } moyenne >= 10? cout << "reçu" cout << "recalé" après

Traduction de TantQue...Faire TantQue expressioncondition Faire Action(s) FinTantQue while (expressioncondition) { } Action(s)

Traduction de TantQue...Faire TantQue i>1 Faire f f+i i i-1 FinTantQue while (i>1) { f=f+i; i=i-1; } i>1? f=f+1 i=i-1 après

Traduction de Faire... TantQue Faire Action(s) TantQue expressioncondition do { Action(s) } while(expressioncondition); La séquence d instructions Action(s) est effectuée au minimum une fois puisque l évaluation de la condition est effectué au sortir de la boucle.

Boucle à nombre d itérations connu Deux méthodes pour écrire la même chose Nombre d itérations connu au départ for ( instruction1 ; expressioncondition ; instruction2 ) { Action(s) } /* intialisation */ instruction 1 ; /* boucle */ while ( expressioncondition) { Action(s) /* pas de l'itération */ instruction 2 ; }

Exemple pour écrire les nombres de 1 à 10 #include <iostream.h> #include <stdlib.h> int main() { int i ; for (i = 1; i <=10; i=i+1) { cout << i << " " ; } exit(exit_success) ; } #include <iostream.h> #include <stdlib.h> int main() { int i ; i = 1; while ( i <=10) { cout << i <<" " ; i = i + 1 ; } exit(exit_success) ; }

Selon choix switch ( expression ) { } case e1 : Action(s) 1 break ; case e2 : Action(s) 2 break ;... default : Action(s) par défaut En algorithmique : selon choix Expression est une expression entière quelconque Break permet de sortir du switch ; sinon on continue à exécuter la ligne suivantes Default : au cas où l expression ne prendrait aucune des valeurs définies 28

Selon choix : exemple selon jour 1 : afficher('lundi') 2 : afficher('mardi') 3 : afficher('mercredi') 4 : afficher('jeudi') 5 : afficher('vendredi') 6 : afficher('samedi') 7 : afficher('dimanche') autrement : afficher('erreur') fin selon switch (jour) { case 1 : cout<<"lundi"; break; case 2 : cout<<"mardi"; break; case 3 : cout<<"mercredi"; break; case 4 : cout<<"jeudi"; break; case 5 : cout<<"vendredi"; break; case 6 : cout<<"samedi"; break; case 7 : cout<<"dimanche"; break; default : cout<<"erreur"; break; } 29

Les commentaires en C Objectifs Expliquer comment fonctionne le programme Justifier les choix qui ont été faits S y retrouver quand on reprend un programme Bloc de commentaires sur plusieurs lignes délimités par /* et */ : exemple /* blablabla ici on calcule */ Commentaire en fin de ligne // commentaire À utiliser sans modération!! 30

Expressions entières types : int, short, long constantes : par défaut en base 10 : 240 0xF1 : en base 16 (hexadécimale) 0361 : en base 8 (octale) si commence par 0 opérations arithmétiques : +, -, *, /, % (modulo) E.g. (12 % 5) 2 et (5 % 12) 5 Résultat entier si opérandes entiers : 1 / 2 == 0 31

Expressions réelles types : float, double float : stockages double : calcul (plus de précision) constantes : 1.2 +1.2 12E-1 0.12e+1... suffixe F ou D pour float ou double, eg 1.0f opérations arithmétiques : +, -, *, / 32

Typage et conversion implicite calcul : 2 opérandes int : résultat int 2 opérandes float ou double : résultat double opérande entier et opérande réel : résultat double affectation : entier dans une variable réelle : conversion a=2 si a réel alors a=2.0 réel dans une variable entière : on enlève la partie décimal ent = 2,245 si ent entier alors ent = 2!!! 33

Opérateurs relationnels égal : == différent :!= inférieur ou égal : <= inférieur strictement : < supérieur ou égal : >= supérieur strictement : > attention : ne pas utiliser == avec les réels Ex (((1/3)*3)/3)*3 égal? 1 problème de précision dans le codage des réels (cf LIF5) 34

Opérateurs logiques et : && (et commercial, perluète ou esperluette) ou : (pipe, 2 barres verticales) (Alt GR + 6) non :! Utiliser les parenthèses pour respecter les priorités des opérateurs 35

Booléen Pas vraiment de booléen en C (même si le type bool existe) codage des valeurs booléennes dans les entiers : 0 : faux autres valeurs, souvent 1 : vrai (!0 == 1) stockage dans un entier : int b ; b = ( (a < 2) && (i > 10) ) b aura pour valeur soit 0 ou soit 1 36

Exemple 1 Ecrire un programme qui demande à l'utilisateur de taper un entier et qui affiche GAGNE si l'entier est entre 56 et 78 bornes incluses PERDU sinon #include<iostream.h> int main() { int a; cout << "Tapez un entier : "; cin >> a; if ( (a>=56) && (a<=78) ) cout << "GAGNE"<<endl; else cout << "PERDU"<<endl; return 0; } 37

Exemple 2 Ecrire un programme qui affiche tous les entiers de 8 jusqu à 23 (bornes incluses) en utilisant un for int main() { int i; for(i=8;i<=23;i++) cout<<i<<endl; return 0; } 38

Exemple 3 Même exercice que précédemment en utilisant un while int main() { int i=8; while(i<=23) { cout<<i<<endl; i++; } return 0; } 39

Opérations exotiques sur les entiers Opérations qui modifient la valeur stockée ++ et -- (incrémentation et décrémentation automatique) souvent utilisé sous la forme : i++ ; équivalent à i = i + 1; a = 0; i = 1; a = i++ ; que valent a et i après exécution? a == 1, i == 2 a = 0; i = 1; a = ++ i ; que valent a et i après exécution? a == 2, i == 2 a= i++ a= ++i équivalent a=i i=i+1 équivalent i=i+1 a=i 40

Conclusion Petit tour d horizon des éléments syntaxiques de base du langage C Types et variables Structures de contrôle Conditions / expressions À enrichir durant les prochaines séances De quoi débuter les travaux pratiques Présentation rapide de l outil utilisé 41