DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51



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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP


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

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

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

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

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

Algorithmique et Programmation, IMA

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

PROJET ALGORITHMIQUE ET PROGRAMMATION II

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

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 au langage C

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

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

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

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

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

SUPPORT DE COURS. Langage C

Rappels Entrées -Sorties

Le langage C. Séance n 4

Chap III : Les tableaux

TP : Gestion d une image au format PGM

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

Informatique Générale

Cours Informatique 1. Monsieur SADOUNI Salheddine

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

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

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

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Cours d Algorithmique et de Langage C v 3.0

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

Les chaînes de caractères

Architecture des ordinateurs

Programmation impérative

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

Chapitre 1 : La gestion dynamique de la mémoire

Conventions d écriture et outils de mise au point

Claude Delannoy. 3 e édition C++

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

Algorithmique, Structures de données et langage C

Introduction à MATLAB R

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

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

Programmation Classique en langage 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.

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

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

Quelques éléments de compilation en C et makefiles

Programmation en langage C

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

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

La mémoire. Un ordinateur. L'octet. Le bit

I. Introduction aux fonctions : les fonctions standards

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

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

Programmer en JAVA. par Tama

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

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

IV- Comment fonctionne un ordinateur?

Notions de Langage C

Programmation système I Les entrées/sorties

BTS IRIS Cours et Travaux Pratiques. Programmation C. A. Lebret, TSIRIS, Lycée Diderot, 1995/06. en conformité avec le référentiel du BTS IRIS

Programmation en C - Sommaire

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

Travaux Dirigés n 1 : chaînes de caractères

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

Créer le schéma relationnel d une base de données ACCESS

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

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

Langage Éric Guérin 5 octobre 2010

V- Manipulations de nombres en binaire

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

Le langage C. Introduction, guide de reference

Gestion de la mémoire

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

Initiation à la programmation en Python

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

INITIATION A LA PROGRAMMATION

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

ALGORITHMIQUE ET PROGRAMMATION En C

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Structure fonctionnelle d un SGBD

as Architecture des Systèmes d Information

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

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

Logiciel de Base. I. Représentation des nombres

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

Introduction à la Programmation Parallèle: MPI

IFT Systèmes d exploitation - TP n 1-20%

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

Langage Java. Classe de première SI

Documentation d information technique spécifique Education. PGI Open Line PRO

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

I00 Éléments d architecture

4D v11 SQL Release 5 (11.5) ADDENDUM

Transcription:

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de contrôle Algorithmes de recherche Algorithmes de Tri Insertion-Fusion Les pointeurs Procédures et fonctions les types composés Allocation dynamique Listes Chaînées 52 1

INTRODUCTION AU LANGAGE C EXEMPLE DE PROGRAMME #include <stdio.h> /*bibliothèque d'entrées-sorties standard* / /* zone de déclaration des variables globales */ int a=2; /* Fin zone */ void main( ) { /* Début zone de déclaration des variables locales */ char carac; /* Fin zone */ /* appel d une fonction */ printf("hello world\n"); /* utilisation d'une fonction-bibliothèque */ } 53 LANGAGE C Langage évolué et structuré de programmation impérative Contient 5 constructions de base Affectation Déclaration Séquence Test Boucle 54 2

INTRODUCTION AU LANGAGE C ETAPES DE CONSTRUCTION D UN PROGRAMME Édition du programme source Prog.c Compilation du programme source Prog.obj : fichier binaire Editions de liens, Prog.exe : le code machine des fonctions-bibliothèque est chargé Exécution du programme. Prog 55 INTRODUCTION AU LANGAGE C ETAPES DE CONSTRUCTION D UN PROGRAMME Édition du programme source des fichiers.c qui contiennent: une procédure principale (main) principal.c Plusieurs fichiers.h, et.c contenant les déclarations des sous programmes.h SP1.h, SP2.h Les codes de ces sous programmes.c SP1.c, SP2.c Compilation du programme source et des sousprogrammes Obtention des fichiers objets (.obj avec compilateur microsoft ou.o avec gcc ) principal.obj, sp1.obj, sp2.obj Editions de liens,.exe sous windows, sans extension et droits xxx sous linux Obtention de l exécutable principal.exe 56 3

INTRODUCTION AU LANGAGE C EXEMPLE DE PROGRAMME #include <stdio.h> void main() Point d entrée du programme { /*Environnement déclaration de 3 variables */. } int A, B=12, Resultat ; B=30; leresultat = (A + B)*2 ; Déclaration de variables Expression Algébrique Affectation printf("voici le resultat : %d\n", leresultat) ; 57 BUT DU JEU Fichiers source = Instructions dans un langage de programmation Application, qui parle directement a l ordinateur Compilation de code pour une machine donnée 58 4

PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de contrôle Algorithmes de recherche Algorithmes de Tri Insertion-Fusion Les pointeurs Procédures et fonctions les types composés Allocation dynamique Listes Chaînées 59 PROGRAMME bin a.out.exe Exécutable(s) lib.o.so.lib.dll Programme Librairies et fichiers objets include.h Fichiers de description (header) src.c Fichiers d implantation (source code) 60 5

LA COMPILATION : RÉSUMÉ Fichiers d en-tête Code source C.h.c Préprocesseur Code pré-processé Compilateur Librairies Fichier(s) Objet.lib.so.o Editeur de liens exécutable a.out.exe 61 LIEN AVEC LA MACHINE RAM (Random Access Memory): 32 / 64 Mo Le disque dur: quelques Go La mémoire virtuelle: temps d accès 1000 fois plus long. 62 6

MÉMOIRE ET EXÉCUTION Code Code objet du programme Données statiques Valeurs constantes Pile Piles d appels de fonctions Tas Allocation dynamique de mémoire 63 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, Tableaux, opérateurs Entrées sorties de base Structures de contrôle Algorithmes de recherche Algorithmes de Tri Insertion-Fusion Les pointeurs Procédures et fonctions les types composés Allocation dynamique Listes Chaînées 64 7

DÉCLARATION DE VARIABLES Type <Id_variable> [= expression ou valeur] ; Associe un nom X à une case mémoire de l ordinateur Exemple : int x=4; x=x+1; Déclare une variable x de type int entier- de valeur initiale 4, utilisable ensuite dans une instruction. 65 DÉCLARATION DE VARIABLES Type <Id_variable> [= expression ou valeur] ; Associe un nom X à une case mémoire de l ordinateur Exemple : int x=4; x=x+1; Déclare une variable x de type int entier- de valeur initiale 4, utilisable ensuite dans une instruction. 66 8

DÉCLARATION DE VARIABLES LES TYPES ENTIERS Pas d inférence de type en C, Tout doit être explicite. Les entiers le langage C distingue plusieurs types d'entiers: Type Description Taille Valeur int entier standard signé 4 octets -2 31 à 2 31-1 unsigned int Entier positif 4 octets 0 à 2 32 short unsigned short entier court signé entier court non signé 2 octets -2 15 à 2 15-1 2 octets 0 à 2 16 char caractère signé 1 octet - 2 7 à 2 7-1 unsigned char caractère non signé 1 octet 0 à 2 8 67 DÉCLARATION DE VARIABLES LES TYPES RÉELS Un réel est composé d'un signe d'une mantisse d'un exposant Un nombre de bits est réservé en mémoire pour chaque élément. le langage C distingue 2 types de réels: TYPE DESCRIPTION TAILLE MEMOIRE float réel standard 4 octets double réel double précision 8 octets 68 9

DÉCLARATION DES VARIABLES, CONSTANTES Déclaration d une constante const int MAX = 15; Définition d un symbole #define MAX 15 69 DÉCLARATION DES VARIABLES PORTÉE DES VARIABLES Variables globales : définies dans le programme appelant. Variables qui peuvent être utilisées dans un sous-programme alors qu'elles ne figurent pas dans son environnement. Durée de vie : exécution du programme Variables locales : définies dans le (sous)-programme ou un bloc C où elles sont utilisées. Durée de vie : exécution du (sous)-programme 70 10

DÉCLARATION DES VARIABLES PORTÉE DES VARIABLES Les variables déclarées au début du fichier sont disponibles à tous les blocs d instructions. Ce sont alors des variables globales. En général, les variables globales sont déclarées immédiatement derrière les instructions #include au début du programme. 71 DÉCLARATION DES VARIABLES PORTÉE DES VARIABLES Notion de blocs et la portée des identificateurs Blocs d'instructions en C { <déclarations locales> <instructions> } Les variables déclarées dans un bloc d'instructions sont uniquement visibles à l'intérieur de ce bloc. On dit que ce sont des variables locales à ce bloc. 72 11

DÉCLARATION DES VARIABLES EXEMPLE DE PORTÉE DES VARIABLES #include <stdio.h> int a = 12; void affiche (){ }. } int a = 10; a++; printf(«la variable locale a est égale à %d\n», a); void main() { /*Environnement déclaration de 3 variables */ int A=1, B=12, Resultat ; leresultat = (A + B)*2 ; affiche(); Variable globale Variable locale à affiche Variables locales au main printf(«la valeur de a est %d et le resultat : %d\n", a, Resultat) ; affiche(); Quelles sont les valeurs qui s affichent? 73 DÉCLARATION DES VARIABLES LIEN AVEC LA MÉMOIRE Code 00 00 00 0C 00 00 00 01 00 00 00 0C A1 67 87 45 00 00 00 0A Pile Allocation statique int a = 12; int A=1, B=12, Resultat Piles d appels de fonctions int a = 10; 00 00 00 19 Tas Allocation dynamique de mémoire int * pa=(int *) malloc(sizeof(int)); *pa=25; 74 12

PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, Tableaux, opérateurs Entrées sorties de base Structures de contrôle Algorithmes de recherche Algorithmes de Tri Insertion-Fusion Les pointeurs Procédures et fonctions les types composés Allocation dynamique Listes Chaînées 75 OPÉRATEURS Opérateurs arithmétiques sur les réels + - * / avec la hiérarchie habituelle. Opérateurs arithmétiques sur les entiers + - * / (quotient de la division) % (reste de la division) avec la hiérarchie habituelle. Operateurs relationnels Comparaison entre le contenu de deux variables de même type à l'aide d'opérateurs ==, <,>, <=, >=,!= 76 13

Exemple char c,d; c = 'G'; d = c+'a'-'a'; c++; printf("le caractère c est = à :%c, %d \n ",c,c); Sur cet exemple, on transforme la lettre majuscule G en la lettre minuscule g et on affiche h. les caractères sont des entiers sur 8 bits, on peut donc effectuer des opérations arithmétiques. Incrémentation décrémentation le langage C autorise des écritures simplifiées i=i+1; => i++; i=i-1; => i--; a=a+b; => a+=b; a=a-b; => a-=b; OPÉRATEURS CAS DES CARACTÈRES 77 TABLEAUX DÉCLARATION Type <Id_variable>[n]; Associe à un id_variable, n cases mémoire. La taille de cette zone =n* taille du type. Exemple : int tabx[10]; Déclare une variable tabx de 10 éléments de type int entier- non initialisés. Les éléments d un tableau de N éléments sont indicés de 0 à N-1 78 14

TABLEAUX INITIALISATION Type <Id_variable>[n] ={a0,a1,., an-1}; Type <Id_variable>[ ] ={a0,a1,., an-1}; Type <Id_variable>[n ]; <Id_variable>[i ] =ai; <Id_variable>[1]=a1 Code 41 48 00 00. 41 5C CC CD Pile Tableau implanté en mémoire statique Exemple : float tabnotes[24]; tabnotes[0]=12.5; tabnotes[23]=13.8; Tas 79 TABLEAUX INITIALISATION DU TABLEAU A la compilation Float TabNotesEtudiants [24]={0.0f, 0.0f,..0.0f}; A l exécution const int NbEtud =24; Float TabNotesEtudiants [NbEtud]; int k; for(k=0;k<nbetud;k++) { printf(«saisir la note de l étudiant %d\n», k); scanf(«%f», &TabNotesEtudiants[k]); } 15

TABLEAUX MANIPULATION Affichage d un tableau après initialisation int k; for(k=0;k<nbetud; k++) { printf(«%d \t», TabNotesEtudiants[k]); } Recherche d un maximum dans le tableau const float MAX =20.0; const int NbEtud =24; int k=1; float NoteMax = TabNotesEtudiants[0]; while(notemax!= MAX && k< NbEtud){ if(notemax < TabNotesEtudiants[k)) NoteMax = TabNotesEtudiants[k]; k++; } printf(«la note max est %f\n», NoteMax); 81 MATRICES DÉCLARATION Type <Id_variable>[m][n]; Associe à un id_variable, M tableaux de n cases mémoire. La taille de cette zone =n*m taille du type. Exemple : int matx[5][10]; Déclare une variable matx de 5 tableaux de 10 éléments de type int entier- non initialisés. Les éléments d un tableau de N éléments sont indicés de 0 à N-1 82 16

MATRICES INITIALISATION Déclaration : type lenom[dim1][dim2]; Exemples: int MatCompteur[4][5]; float MatNombre[2][10]; Initialisation : int lamat[2][3] = {{1,5,7},{8,4,3}}; Utilisation: lenom[indice1][indice2] Exemples: letabcompteur[2][4] = 5; letabnombre[i][j] = 6.789f; printf("%d",letabcompteur[i][j]); scanf("%f",&letabnombre[i][j]); 83 LES MATRICES EXEMPLE Extraction des contours d une image en noir et blanc à plusieurs niveaux de gris. La valeur des pixels est comprise entre 0 (noir) et Max (Blanc) const int largeur=800; const int hauteur=600; int max; int Image[largeur][hauteur]; Création de l image Affichage de l image 84 17