LIFAP1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION

Documents pareils

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

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

Introduction au langage C

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

Cours d Algorithmique et de Langage C v 3.0

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Algorithmique et Programmation, IMA

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)

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

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

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

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

Notions fondamentales du langage C# Version 1.0

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

Claude Delannoy. 3 e édition C++

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

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

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

SUPPORT DE COURS. Langage C

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

Programmation en langage C

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

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

Java Licence Professionnelle CISII,

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Programmer en JAVA. par Tama

Cours d Informatique

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

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

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

I. Introduction aux fonctions : les fonctions standards

Initiation à la programmation en Python

Cours Informatique Master STEP

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

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

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

Programmation Classique en langage C

Conventions d écriture et outils de mise au point

Langage Éric Guérin 5 octobre 2010

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

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

COMPARAISONDESLANGAGESC, C++, JAVA ET

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

INF 321 : mémento de la syntaxe de Java

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

TP 1. Prise en main du langage Python

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

Organigramme / Algorigramme Dossier élève 1 SI

Programme Compte bancaire (code)

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

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

Découverte de Python

Programmation en C/C++

Algorithme. Table des matières

1.6- Génération de nombres aléatoires

L informatique en BCPST

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

as Architecture des Systèmes d Information

Les structures de données. Rajae El Ouazzani

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

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

Chap III : Les tableaux

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

V- Manipulations de nombres en binaire

Recherche dans un tableau

Programmation en Java IUT GEII (MC-II1) 1

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

Rappels Entrées -Sorties

Java Licence Professionnelle CISII,

IV- Comment fonctionne un ordinateur?

ALGORITHMIQUE ET PROGRAMMATION En C

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Solutions du chapitre 4

Le prototype de la fonction main()

Algorithmique, Structures de données et langage C

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Le langage C. Introduction, guide de reference

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

1. Structure d'un programme FORTRAN 95

PROJET ALGORITHMIQUE ET PROGRAMMATION II

STAGE IREM 0- Premiers pas en Python

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

1. Langage de programmation Java

ACTIVITÉ DE PROGRAMMATION

Algorithmique et programmation : les bases (VBA) Corrigé

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

Algorithmes récursifs

Cours d algorithmique pour la classe de 2nde

Algorithmique I. Algorithmique I p.1/??

Introduction au Langage de Programmation C

Informatique Générale

Le langage C. Séance n 4

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Transcription:

Licence STS Université Claude Bernard Lyon I LIFAP1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION 1 COURS 2 : Bases du langage C

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 Code::Blocks OS : windows 2

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

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 4

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

PREMIER EXEMPLE EN C premierexemple.cpp #include <iostream.h> #include <iostream> using namespace std; int main (void) { cout << Hello world << endl ; return 0 ; } Mots clé du langage : Identifiés par une couleur particulière dans l interface Code::Blocks 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) CM 3 Définition de la fonction 6 principale main

PREMIER EXEMPLE EN C premierexemple.cpp #include <iostream> using namespace std ; int main (void) { cout << Hello world << endl ; return 0; } 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 7 message

UN PROGRAMME C Suites ordonnées de déclarations ou de définitions de types, de variables, de sous-programmes (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éfinis dans les bibliothèques 8

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

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 ; 10

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) 11

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? 12

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

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 bool Caractère char Chaîne de caractères char[] Tableau de 5 entiers int[5] 14

DÉCLARATION DE VARIABLES algorithmique v : entier x : réel lx : réel c : caractère tab : tableau [10] d entiers langage C int v ; float x ;(4 octets) double lx ;(8 octets) char c ; int tab[10] ; Octet : vecteurde huit bits (chiffre binaire) pouvant représenter 2 8 (256) valeurs différentes 15

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 16

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; 17

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

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 : identificateur correct Fgmqsdgfk, rapidos, tempo, variable : à éviter!!! 19

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 ; 20

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 être imbriqués 21

EXEMPLE: CALCUL DE MOYENNE On veut demander à l utilisateur de donner deux valeurs 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; 22

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 23

TRADUCTION DE L'ALTERNATIVE Si expressioncondition FinSi Alors Sinon Action(s) 1 Action(s) 2 if ( expressioncondition ) { } else { } Action(s) 1 Action(s) 2 Attention : ne pas mettre de ; après la condition!! Comme en algorithmique : partie else (sinon) pas forcément nécessaire 24

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

TRADUCTION DE TANTQUE...FAIRE TantQue ExpressionCondition Faire Action(s) FinTantQue Traduction en C : while (expressioncondition) { Action(s) } 26

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 27

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. 28

BOUCLE À NOMBRE D ITÉRATIONS CONNU for ( instruction1 ; expressioncondition ; instruction2 ) { Action(s) } instruction 1 ;/* intialisation */ /* boucle */ while ( expressioncondition) { Action(s) } Deux méthodes pour écrire la même chose Nombre d itérations connu au départ instruction 2 ; /* pas de l'itération */ 29

EXEMPLE POUR ÉCRIRE LES NOMBRES DE 1 À 10 #include <iostream.h> #include <stdlib.h> intmain() { inti ; for (i = 1; i <=10; i=i+1) { cout<< i << ""; } return 0 ; } #include <iostream.h> #include <stdlib.h> intmain() { inti ; i = 1; while ( i <=10) { cout<< i <<"" ; i = i + 1 ; } return 0 ; } 30

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 expressionest une expression entière quelconque breakpermet 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 31

SELON CHOIX: EXEMPLE selonjour 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; } 32

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!! 33

EXPRESSIONS ENTIÈRES Opérations réalisables sur les entiers Types : int, short Opérations arithmétiques : Opérations mathématiques standards : +, -, *, / Modulo = reste de la division entière (%) (12% 5) =2 (5% 12) =5 Résultat entier si opérandes entiers : 1 / 2 == 0 34

EXPRESSIONS RÉELLES Opérations réalisables sur les réels Types : float, double float : stockages double : calcul (plus de précision) Opérations arithmétiques : +, -, *, / 35

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!!! 36

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 LIFAP3) 37

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 38

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 39

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

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; } 41

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; } 42

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; } 43

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 ; a= i++ équivalent a=i i=i+1 équivalent que valent a et i après exécution? a= ++i i=i+1 a == 2, i == 2 a=i 44

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é 45

LIFAP1 : LA PLATEFORME ASKER POUR S ENTRAINER ENTRE LE COURS ET LES TDS Contact : marie.lefevre@liris.cnrs.fr LIFAP1 - Plateforme d'entrainement ASKER

PLATEFORME ASKER : HTTPS://ASKER.UNIV-LYON1.FR/ Connectez-vous avec vos identifiants Lyon 1

LISTE DES UES Une fois connecté, vous voyez, en haut à gauche, un dossier par UE. Cliquez sur le nom de l UE pour l ouvrir

LISTE DES EXERCICES Dans le dossier LIFAP1 vous trouverez des dossiers thématiques contenant chacun plusieurs exercices

POUR FAIRE UN EXERCICE Demander un nouvel exercice de ce type Refaire cet exercice précisément

VOIR SES RÉPONSES Voir les réponses précédentes Répondre à l exercice

LES EXERCICES L exercice Valider & Refaire Plusieurs questions : valider chaque question indépendamment

LA CORRECTION D UNE QUESTION LIFA P1 - Plate form e d'ent raine ment ASK