LIFAP1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION

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


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

Cours d Algorithmique et de Langage C v 3.0

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

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

STAGE IREM 0- Premiers pas en Python

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

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

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)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Conventions d écriture et outils de mise au point

I. Introduction aux fonctions : les fonctions standards

Cours Informatique Master STEP

Présentation du langage et premières fonctions

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

Introduction au langage C

Algorithmique et Programmation, IMA

Le langage C. Séance n 4

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Programme Compte bancaire (code)

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

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

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

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Cours Programmation Système

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

Notions fondamentales du langage C# Version 1.0

Introduction au pricing d option en finance

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

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Découverte de Python

Claude Delannoy. 3 e édition C++

Initiation à l algorithmique

Outils pour la pratique

Le prototype de la fonction main()

Initiation à la programmation en Python

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

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

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Informatique III: Programmation en C++

Poker. A rendre pour le 25 avril

et Programmation Objet

Les structures. Chapitre 3

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

Introduction à l héritage en C++

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

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

3IS - Système d'exploitation linux - Programmation système

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Le langage C++ (partie I)

Calcul Formel et Numérique, Partie I

TD3: tableaux avancées, première classe et chaînes

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

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Cours de Systèmes d Exploitation

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

TP1 : Initiation à Java et Eclipse

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

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

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

Corrigé des TD 1 à 5

Java Licence Professionnelle CISII,

INFO-F-105 Language de programmation I Séance VI

Programmation système en C/C++

Informatique I. Sciences et Technologies du Vivant (Semestre 1)

Projet de programmation (IK3) : TP n 1 Correction

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Algorithmique avec Algobox

Algorithmique I. Algorithmique I p.1/??

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

1 Lecture de fichiers

ACTIVITÉ DE PROGRAMMATION

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

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

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

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

Langage Java. Classe de première SI

Compression de Données - Algorithme de Huffman Document de Conception

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Langage Éric Guérin 5 octobre 2010

Premiers Pas en Programmation Objet : les Classes et les Objets

Logiciel Libre Cours 3 Fondements: Génie Logiciel

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

Les arbres binaires de recherche

Cours 1 : La compilation

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

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

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

Chap III : Les tableaux

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Examen Médian - 1 heure 30

Systeme d'exploitation

Chapitre 10. Les interfaces Comparable et Comparator 1

Programmation stochastique

Transcription:

Licence STS Université Claude Bernard Lyon I LIFAP1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION 1 COURS 3 : Anatomie d un programme C

OBJECTIFS DE LA SÉANCE Apprendre à écrire des programmes plus complexes En utilisant des sous-programmes Compléter les bases d algorithmique Les fonctions et les procédures en algorithmique Apprendre à rendre plus lisible un programme C : L indentation du code Découpage en fonctions et procédures (abstraction) 2

PLAN Anatomie d un programme en C Les sous-programmes en C / en algorithmique Fonctions Procédures L indentation d un programme C 3

ANATOMIE D'UN PROGRAMME Directives de pré-compilation Inclusion des déclarations des fonctions et procédures contenues dans des bibliothèques Définition de l ensemble des sous-programmes Fonctionset procédures définies par le programmeur pour simplifier l'algorithme ou isoler des traitements complexes et réutilisables Ex : Procédure de tri, calcul d'une fonction mathématique 4

ANATOMIE D'UN PROGRAMME Une fonction particulière : main (le programme principal) Obligatoire et unique Exécutée (ou invoquée ou appelée) au démarrage du programme Renvoie un code permettant de savoir si l exécution du programme s est terminée correctement 5

ANATOMIE D'UN PROGRAMME Les bibliothèques utilisées fréquemment dans les programmes : iostream : gestion des entrées (in) / sorties (out) sur le clavier, console cout, cin math.h: fonctions mathématiques sin, cos, log, pow... stdlib.h: librairie standard exit, rand, srand, system string.h: outils de manipulation des chaînes de caractères 6

ANATOMIE D'UN PROGRAMME #include <...> Ensemble de fonctions et de procédures Programme principal (fonction main) Opérations d entrée / sortie standards Assurent le dialogue : machine / utilisateur Afficher (écrire) cout <<"hello"; Lire (saisir) cin >> valeur; 7

CODEBLOCKS OU DEV-CPP (OU VISUAL C++) #include <iostream> using namespace std;... int main(void) cout << "hello" << endl; return 0; 8

DEV-CPP (OU VISUAL C++) Si la fenêtre se ferme tout de suite à la fin de l'exécution (possible Dev-Cpp) : #include <stdlib.h> #include <iostream> using namespace std;... int main(void) cout << "hello" << endl; system("pause"); return 0; Instruction permettant de conserver la fenêtre ouverte à la fin de 9 l exécution appel système

PLAN Anatomie d un programme en C Les sous-programmes en C / en algorithmique Fonctions Procédures L indentation d un programme C 10

LES SOUS-PROGRAMMES Un sous-programme est un sous-ensemble du programme Un programme C est constitué d un ensemble de sous-programmes et d un programme principal (main) Il existe deux types de sous-programmes Les fonctions Les procédures 11

ANATOMIE D'UNE FONCTION (EN C) Syntaxe : TypeRetourNomfct (type paramètre,...) TypeRetour = type simple (caractère, entier, réel) Ensemble de paramètres formels avec leur type, séparés par des, Déclaration de variables locales Résultats intermédiaires Compteurs de boucles Corps de la fonction constitué d'instructions Affectations Tests Boucles 12 Appels à d autres fonctions ou procédures

EXEMPLE DE FONCTION int factorielle (int n) int i; int f; i= 1; f= 1; while(i <= n) f= i * f; i= i + 1; return f; La fonction retourne un entier (valeur de f) Elle prend un paramètre n (entier dont on veut calculer la factorielle) Elle nécessite la déclaration de deux variables locales i compteur de boucle f permettant de stocker le résultat 13

APPEL DE FONCTION Fournir des valeurs à la fonction = lui attribuer des paramètres effectifs Récupérer les résultats après éxécution En affectant le résultat à une variable de même type : resultat = factorielle (5); En affichant directement le résultat obtenu cout << factorielle (5);! typeretour et resultat doivent être de même type 14

ANATOMIE D'UNE PROCEDURE (EN C) Syntaxe : voidnomproc (type paramètre,...) Ne retourne rien : void Ensemble de paramètres formels avec leur type, séparés par des, Déclaration de variables locales Résultats intermédiaires Compteurs de boucles Corps de la procédure constitué d'instructions Affectations Tests Boucles 15 Appels à d autres fonctions ou procédures

EXEMPLE DE PROCÉDURE void affiche_mention(int note) if(note > 10) cout << "admis" << endl; else cout << "recalé" << endl; Ne renvoie rien (void) Prend un paramètre note qui sera utilisé dans le corps de la procédure Pas de variable locale pour mémoriser le résultat puisque pas de résultatà calculerou à renvoyer.. 16

APPEL DE PROCÉDURE Fournir des valeurs aux paramètres de la procédure = paramètres effectifs Attention: cette fois-ci pas d affectation de résultat dans une variable car ne renvoie rien!!! Juste un appel à la procédure Exemple : affiche_mention(14) : l affichage du résultat se fera directement dans la procédure Interdit d écrire : variable=affiche_mention(14)!!!! 17

ANATOMIE DE MAIN C'est une fonction«normale» avec un rôle particulier Celle qui va s exécuter en premier Appelle les autres sous-programmes Fonction retourne un résultat qui permet de savoir si l exécution s est terminée correctement Plusieurs possibilités d écriture de la valeur de retour int main(void)... return 0; int main(void)... return EXIT_SUCCESS; int main(void)... exit (EXIT_SUCCESS); 18

PARAMÈTRE FORMEL / EFFECTIF Paramètre formel: variable utilisée dans le corps du sous-programme qui reçoit une valeur de l extérieur Ils font partie de la description de la fonction Paramètre effectif: la variable (ou valeur) fournie lors de l'appel du sous-programme Valeurs fournies pour utiliser la fonction et valeurs renvoyées Copie de la valeur du paramètre effectif vers le paramètre formel correspondant lors de l'appel Paramètres formel et effectif ont des noms différents 19

EXEMPLE AVEC DES FONCTIONS bool est_multiple(int a, int b)... bool est_premier(int v) int i; i= 2; while(i <= v-1) if(est_multiple(v, i)) return false; i=i+1; return true; Fonction qui renvoie un booléen et prends deux paramètres de type entier (sépares par des ",") On effectue directement le test if (est_multiple(v,i))==true On peut appeler un sousprogramme à l intérieur d un autre sous programme int main(void) cout<<est_premier(10); Fonction est premier donc on affiche le résultat retourné 20

Exemple avec des procédures void affiche_mention(int note) if(note > 10) else cout << "admis" << endl; cout << "essaye encore" << endl; int main (void) int n; cout<< donnez votre note ; cin>> n; mention (n); return (EXIT_SUCCESS); 21

APPEL FONCTION / PROCÉDURE Une fonction renvoie une valeur que l'on peut utiliser : afficher, affecter dans une variable, comparer à une autre valeur. Une procédure ne renvoie pas de valeur : on ne peut ni afficher, ni affecter, ni comparer. 22

EXEMPLES: LESQUELS FONCTIONNENT? cout << factorielle(7); if(factorielle(factorielle(3)) < 1000) cout << "oui"; else cout << "non"; cout << mention(12); mention(factorielle(3)); cout<< mention (factorielle (3)); 23

RAPPELS: VARIABLES LOCALES Elles se déclarent au début du sous-programme juste après Elles conservent les résultats intermédiaires nécessaires à l'exécution du sous-programme, les compteurs de boucles... Elles n'existent pas en dehors de la fonction On parle de portée des variables La variable a de la fonction toton'est pas la même que la variable a de la fonction titi Les variables locales sont DETRUITES à la sortie du sousprogramme 24

EN RÉSUMÉ : UNE FONCTION Doit avoir un nom clair et compréhensible, évocateur de ce qu elle calcule Doit préciser comment l'utiliser (description des paramètres formels) Doit préciser la manière dont elle renvoie ses résultats : avec renvoyer / return avec un ou plusieurs paramètres 25

EN RÉSUMÉ : UNE PROCÉDURE Doit avoir un nom clair et compréhensible toujours évocateur de ce qu elle fait Doit préciser comment l'utiliser (description des paramètres formels) Doit être de la forme : void Nom_Procedure(type paramètre1, type paramètre2, type paramètre3, )... 26

ET EN ALGORITHMIQUE? Comment écrire des fonctions et des procédures en algorithmique? Informations supplémentaires Préconditions : conditions d utilisation du sous-programme vérifiées avant l exécution Données: variables ayant une valeur en entrant dans le sousprogramme Résultats: résultat que doit retourner le sous-programme Description: donne une brève description de ce que doit faire le sousprogramme 27

LA FONCTION EN ALGORITHMIQUE Fonction nom_fonction (liste des paramètres) : type retourné Préconditions : Données : Résultats : Description : Variables locales : Début instruction(s) retournervaleur (ou renvoyer) Fin nom_fonction 28

LA FONCTION EN ALGORITHMIQUE Fonctionminimum-fct( x : entier, y : entier) : entier Précondition : aucune Données : x et y Résultat : minimum de x et y Description : donne le minimum entre deux valeurs passées en paramètre Variable locale : m :entier Début six < y alors m x sinon m y FinSi renvoyer m Fin minimum-fct 29

LA FONCTION: APPEL Une fonction peut être utilisée Dans le programme principal Dans une autre fonction À l intérieure d elle-même avec d autres paramètres (récursivité) notion abordée au semestre prochain en LIFAP2 Programme appelant Paramètres réels ou effectifs Syntaxe : variable <-nom_fonction (paramètres) Exemple : mini <-minimum-fct(4,8) 30

LA PROCÉDURE Groupe d opérations ou suite d instructions réalisant une certaine tâche Définie par un en-tête Nom Liste des paramètres ou arguments (0, 1 ou plusieurs) avec leur type (paramètres formels) Pas d instruction retourner 31

LA PROCÉDURE EN ALGORITHMIQUE Procédurenom_procédure (liste des paramètres) Préconditions : Données : Description : Variables locales : Début instruction(s) Finnom_procédure 32

LA PROCÉDURE EN ALGORITHMIQUE Définitionminimum-proc(x : entier, y : entier) Préconditions : Données : x, y Description : affiche le minimum entre deux valeurs passées en paramètre Variables locales : m : entier Début six < y alors m x sinon m y FinSi afficher(m) Fin minimum-proc 33

FONCTION / PROCÉDURE Fonction et procédure sont des sous-programmes Une fonction retourne une valeur mais ne modifie pas l environnement Une procédure ne renvoie aucune valeur mais modifie l environnement (ex : afficher) Une procédure est une fonction ne renvoyant rien 34

PLAN Anatomie d un programme en C Les sous-programmes en C / en algorithmique Fonctions Procédures L indentation d un programme C 35

INDENTATION D UN PROGRAMME Action qui permet d ajouter des tabulations Après une "" on décale les instructions sur la droite Rend le code source plus clair et plus lisible Fait quasi-automatiquement sous codeblocks /devcpp/ 36

INDENTATION D UN PROGRAMME int produit_iter(int x, int y) int prod,i; prod=0; for(i=1;i<=y;i++) prod+=x; return prod; int produit_iter(int x, int y) int prod,i; prod=0; for(i=1;i<=y;i++) prod+=x; return prod; 37

PLAN Anatomie d un programme en C Les sous-programmes en C / en algorithmique Fonctions Procédures L indentation d un programme C 38