Introduction à la programmation en C

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Quel est le but de l'UE (Unité d'Enseignement)?

Acquérir une certaine façon de raisonner, automatiser la résolution de problèmes, maîtriser les concepts de l'algorithmique, sans se spécialiser dans un langage particulier, et en illustrant tout de même avec un langage impératif, le C.

Comment la mémoire stocke-t-elle les informations?

La mémoire stocke des informations sous la forme de suites de 0 et de 1 (bits).

Qu'est-ce qu'un octet?

Un octet est une suite de 8 bits.

Quels sont les trois types d'objets prédéfinis que l'on trouve au minimum dans les ordinateurs?

<p>Entiers, réels, caractères.</p> Signup and view all the answers

Qu'est-ce qu'un code exécutable?

<p>Une suite d'instructions.</p> Signup and view all the answers

Citez les types de langages de programmation.

<p>Logique, fonctionnel, impératif.</p> Signup and view all the answers

Qu'est-ce qu'un compilateur?

<p>Un logiciel qui traduit un programme en code exécutable.</p> Signup and view all the answers

Qu'est-ce qu'un interpréteur?

<p>Un programme intermédiaire qui exécute directement un programme sans qu'il soit traduit au préalable.</p> Signup and view all the answers

Les programmes compilés sont plus lents et plus lourds en ressources à l'exécution.

<p>False (B)</p> Signup and view all the answers

Les programmes interprétés ont une plus grande portabilité.

<p>True (A)</p> Signup and view all the answers

Qu'est-ce qu'un algorithme?

<p>Une suite finie et non ambiguë d'opérations ou d'instructions permettant de résoudre un problème ou d'obtenir un résultat.</p> Signup and view all the answers

Un algorithme doit dépendre du langage de programmation.

<p>False (B)</p> Signup and view all the answers

Chaque étape d'un algorithme doit être définie de façon rigoureuse et non ambiguë.

<p>True (A)</p> Signup and view all the answers

Un algorithme ne doit pas être déterministe.

<p>False (B)</p> Signup and view all the answers

Qu'est-ce qu'un programme impératif?

<p>Un programme qui contient la description de nouveaux types non élémentaires, des instructions décrivant dans l'ordre les opérations à effectuer, des combinaisons de ces instructions, et où les instructions sont toujours à écrire dans un ordre bien précis.</p> Signup and view all the answers

Quelles sont les quatre parties principales de la structure d'un programme en C?

<p>Ordres pré-processeurs, définitions de nouveaux types non élémentaires, définitions de fonctions, une et une seule fonction (la dernière) s'appelle main.</p> Signup and view all the answers

Qu'est-ce que la fonction main et quelle est son importance?

<p>C'est la dernière fonction du programme et son nom est <code>main</code>. Sa présence est obligatoire. L'exécution de tout programme commence par la fonction <code>main</code>.</p> Signup and view all the answers

Les définitions de types sont locales, utilisables uniquement dans la fonction principale.

<p>False (B)</p> Signup and view all the answers

Pourquoi les commentaires sont-ils importants dans le code?

<p>Les commentaires sont essentiels pour une bonne réutilisabilité du code, ils sont utiles à la compréhension du code.</p> Signup and view all the answers

Quelle est la commande pour compiler un fichier C?

<p><code>gcc nomdufichier.c -o nomdelexecutable</code></p> Signup and view all the answers

Définir Un type exprime un ensemble d'objets et leurs caractéristiques communes?

<p>Un type exprime un ensemble d'objets et leurs caractéristiques communes, sur lesquels sont définies les opérations arithmétiques, de comparaison, etc.</p> Signup and view all the answers

Quels sont les types de données Entiers (relatifs)?

<p><code>short</code>, <code>int</code>, <code>long</code></p> Signup and view all the answers

Lorsqu'on ne met pas de parenthèses, des règles de _____ sont appliquées (priorité de la multiplication et de la division sur les additions et soustractions)

<p>priorité</p> Signup and view all the answers

En C, l'évaluation d'une expression est toujours effectuée entièrement, même si le résultat est déjà certain.

<p>False (B)</p> Signup and view all the answers

En C, le mot clé _____ est utilisé pour signifier la variable ou l'expression qui sera renvoyée comme résultat à l'issue de la fonction.

<p>return</p> Signup and view all the answers

La variable id_variable doit obligatoirement avoir le _____ type que le <type_retour> annoncé lors de la déclaration de la fonction.

<p>même</p> Signup and view all the answers

Les arguments doivent-ils être donnés dans le même ordre que l'ordre dans lequel ils ont été annoncés lors de la déclaration de la fonction?

<p>Oui</p> Signup and view all the answers

En C par contre, on fait pas de distinction entre fonctions et procédures.

<p>True (A)</p> Signup and view all the answers

La _____ sert à afficher des valeurs à l'écran

<p>fonction <code>printf</code></p> Signup and view all the answers

Quelle est la différence entre un effet de bord et une fonction mathématique?

<p>qu'une fonction réalise un effet de bord lorsqu'au cours de son exécution elle modifie autre chose en plus de sa valeur de retour. les fonctions qui réalisent des effets de bords sont plus difficiles à manipuler car il faut penser leur comportement dans le contexte où elles sont appelées.</p> Signup and view all the answers

Les arguments d'origine envoyés dans une fonction lors de l'appel ne sont _____ par l'appel de cette fonction

<p>jamais modifiés</p> Signup and view all the answers

À quoi servent les caractères de mise en forme précédés d'un backslash dans printf?

<p>Ces caractères sont interprétés par le terminal et permettent la mise en page du message.</p> Signup and view all the answers

Indique à scanf comment le flux de texte reçu de l'entrée standard est traité?

<p>un caractère blanc, un caractère non-blanc et un spécificateur de format.</p> Signup and view all the answers

Attention : les break sont indispensable!

<p>False (B)</p> Signup and view all the answers

Que permet l'opérateur ternaire?

<p>L'opérateur ternaire permet d'écrire des expressions conditionnelles qui sont évaluées différemment selon une condition booléenne.</p> Signup and view all the answers

Flashcards

Mémoire

Espace de stockage d'informations sous forme de suites de 0 et de 1.

Octet

Unité d'information composée de 8 bits.

Instructions

Ordres exécutés par le processeur (CPU), codés en mémoire.

Code exécutable

Suite d'instructions qui définit des séquences d'opérations.

Signup and view all the flashcards

Langage machine

Code binaire directement compréhensible par un CPU.

Signup and view all the flashcards

Langages de programmation évolués

Langages où données et instructions sont exprimées de façon abstraite.

Signup and view all the flashcards

Langage Logique

Permet la programmation de preuves basées sur axiomes et règles de logique.

Signup and view all the flashcards

Langage Fonctionnel

Décrit un programme sous forme de définitions de fonctions.

Signup and view all the flashcards

Langage Impératif

Décrit explicitement les instructions successives à exécuter par l'ordinateur.

Signup and view all the flashcards

Programme

Ensemble d'instructions écrites dans un langage de programmation.

Signup and view all the flashcards

Compilation

Traduction d'un programme en code exécutable en langage machine.

Signup and view all the flashcards

Compilateur

Logiciel qui traduit automatiquement un programme en code exécutable.

Signup and view all the flashcards

Interprété

Programme exécuté directement via un programme intermédiaire.

Signup and view all the flashcards

Interpréteur

Programme intermédiaire qui exécute un code interprété.

Signup and view all the flashcards

Cross-platform

Qualifie les programmes qui peuvent être lancés sans modification sur diverses plateformes.

Signup and view all the flashcards

Programme

Traduction d'un algorithme dans un langage de programmation.

Signup and view all the flashcards

Algorithme

Suite finie et non ambiguë d'opérations pour résoudre un problème.

Signup and view all the flashcards

Langage de programmation

Le type d'un programme est défini par des règles et une grammaire.

Signup and view all the flashcards

Ordres pré-processeurs

Commandes remplacées avant la compilation.

Signup and view all the flashcards

Commentaires

Parties de texte non compilées.

Signup and view all the flashcards

Type élémentaire

Type exprimant un ensemble d'objets avec des caractéristiques communes.

Signup and view all the flashcards

short

Entier relatif sur 16 bits (entre -32 768 et +32 767).

Signup and view all the flashcards

int

Entier relatif sur 16 ou 32 bits.

Signup and view all the flashcards

long

Entier relatif sur 32 bits.

Signup and view all the flashcards

float

Réel simple précision.

Signup and view all the flashcards

double

Réel double précision.

Signup and view all the flashcards

char

Caractère stocké comme un entier sur 8 bits.

Signup and view all the flashcards

Table ASCII

Correspondance entre valeurs numériques et caractères.

Signup and view all the flashcards

Booléen

Non existant en C, 0 est FAUX, autre valeur est VRAI.

Signup and view all the flashcards

Division (/)

Opérateur qui dépend du type des opérandes.

Signup and view all the flashcards

Incrémentation/Décrémentation

Servent à augmenter/diminuer la valeur d'un entier de 1.

Signup and view all the flashcards

Opérateurs d'accumulation

Opérateurs de modification de valeur par ajout, soustraction, etc.

Signup and view all the flashcards

Opérateurs de comparaison

Opérateurs dont le résultat est un booléen (1 si vrai, 0 si faux).

Signup and view all the flashcards

Opérateurs logiques

Opérateurs logiques ET, OU, NON.

Signup and view all the flashcards

Expression

Combinaison d'opérateurs et d'opérandes.

Signup and view all the flashcards

Évaluation paresseuse

Évaluation effectuée seulement si nécessaire à l'obtention du résultat.

Signup and view all the flashcards

Variable

Objet abstrait avec un nom, un type et une valeur.

Signup and view all the flashcards

Affectation

Attribution d'une valeur à une variable.

Signup and view all the flashcards

Constante

Objet dont on ne voudra modifier la valeur sous aucun prétexte.

Signup and view all the flashcards

Blocs d'instructions

Délimiteurs syntaxiques qui indiquent la fin d'une instruction.

Signup and view all the flashcards

Study Notes

Objectifs de l'UE

  • Acquérir une certaine manière de réfléchir.
  • Automatiser la résolution de problèmes.
  • Maîtriser les concepts de l'algorithmique.
  • Être capable d'utiliser un langage impératif, le C, sans se spécialiser dans un langage particulier.

Introduction

Représentation de l'information

  • La mémoire sert à enregistrer des informations sous forme de séquences de 0 et de 1 (bits).
  • Un octet se compose de 8 bits.
  • Les ordinateurs utilisent au moins 3 types d'objets : entiers, réels, caractères.
  • Le processeur (CPU) exécute des ordres nommés instructions, codés sous forme de 0 et de 1.
  • Le code exécutable en langage machine est du code binaire, compréhensible par le CPU, mais illisible pour les humains.

Langage de programmation

  • Les langages de programmation évolués permettent d'indiquer à l'ordinateur la séquence d'instructions à exécuter.
  • Les données et instructions sont présentées de manière abstraite.

Types de langages de programmation

  • Logique: programmation de preuves basée sur l'écriture d'axiomes et de règles logiques Exemples: Prolog, Obj3, Coq.

  • Fonctionnel : description d'un programme sous forme d'un ensemble de définitions de fonctions Exemples: OCaml, Haskell

  • Impératif: description explicite des instructions que l'ordinateur doit successivement exécuter sur les données stockées en mémoire Exemples: C, C++, Python, Java, Pascal

  • Les programmes sont des ensembles d'instructions écrites dans un langage de programmation spécifique.

Compilation vs Interprétation

  • Les programmes écrits dans un langage de programmation doivent être compilés ou interprétés pour être exécutés.
  • Un programme est compilé s'il a été traduit en code exécutable en langage machine, grâce à un compilateur Exemples: C, C++, Pascal
  • Un programme est interprété s'il est exécuté directement via un programme intermédiaire appelé interpréteur Exemples: Python, OCaml
  • Les programmes compilés sont plus rapides et utilisent moins de ressources lors de l'exécution.
  • Les programmes interprétés ont une portabilité plus importante et sont dits "cross-platform".
  • Java est un langage semi-interprété: son programme est compilé en code intermédiaire puis exécuté par une machine virtuelle.
  • Certains langages ont un compilateur et un interpréteur (Ocaml, Haskell), tandis que d'autres sont seulement compilés (C, C++) ou seulement interprétés (Python)

Algorithmes

  • Un algorithme est une suite finie et non ambiguë d'opérations ou d'instructions permettant de résoudre un problème ou d'obtenir un résultat.
  • Un algorithme n'est pas réservé aux ordinateurs.
  • Son nom viendrait du scientifique Al-Khwarizmi.
  • Un programme sert à traduire un algorithme, mais un algorithme ne dépend d'aucun langage spécifique.
  • Un algorithme peut être décrit par un schéma ou une formule mathématique.

Caractéristiques d'un algorithme

  • Accepte un nombre limité de données en entrée.
  • Chaque étape doit être définie de manière rigoureuse et non ambigüe.
  • Doit toujours se terminer et fournir un résultat.
  • Doit être déterministe, c'est-à-dire fournir le même résultat avec les mêmes données en entrée.

Le rôle de l'analyste-programmeur

  • L'analyste programmeur passe du problème (en langage naturel) à l'analyse, l'algorithme, puis à la programmation et au programme (en langage machine), pour obtenir un résultat.

Programmes en langage C

Bases de la programmation impérative et du langage C

  • Un langage de programmation respecte une grammaire et des règles de syntaxe précises.
  • Un programme impératif contient des types non élémentaires, des instructions décrivant les opérations à effectuer, des combinaisons de ces instructions.
  • Les instructions doivent être écrites dans un ordre précis.

Structure d'un programme en C

  • En C, un programme doit être écrit dans un fichier texte avec l'extension ".c", édité avec un éditeur de texte.
  • L'ordre de la structure d'un programme en C est le suivant:
    • ordres pré-processeurs remplacés à la compilation (#include <stdio.h> pour la lecture et l'affichage).
    • définitions de nouveaux types non élémentaires
    • définitions de fonctions
  • Une et une seule fonction s'appelle main; elle est obligatoire, et l'exécution de tout programme commence par elle.
  • On peut trouver des commentaires sur plusieurs lignes (/* ... */) ou sur une seule (//).
  • Les définitions de types sont globales.

Compilation

  • Compiler un programme C se fait dans un terminal texte grâce au compilateur gcc.
  • Exemple de commande: "gcc nomdufichier.c -o nomdelexecutable"
  • Le résultat peut être affiché après le lancement du programme.
  • Des logiciels (IDE) incluent un éditeur de texte avec coloration syntaxique, et des fonctionnalités de compilation, d'exécution et de débogage.

Fiche 2 : Types, opérateurs, expressions, variables, constantes

Types élémentaires

  • Définition : Un type exprime un ensemble d'objets qui partagent des caractéristiques communes, et sur lesquels on peut appliquer des opérations arithmétiques, de comparaison, etc.

Entiers (relatifs)

  • short: entier relatif sur 16 bits (valeurs possibles entre -32 768 et +32 767)
  • int: entier relatif sur 16 bits (processeur 16 bits) ou 32 bits (processeur 32 bits)
  • long: entier relatif sur 32 bits

Réels

  • float : réel simple précision
  • double : réel double précision

Caractères

  • char : caractère, stocké comme un entier sur 8 bits (256 valeurs possibles entre -128 et +127)
  • Une valeur d'un caractère s'écrit toujours entourée d'apostrophes: 'a'
  • La table ASCII définit une correspondance entre valeurs numériques et caractères ('A' vaut 65, 'a' vaut 97).
  • Pour convertir un caractère majuscule en minuscule c + 32

Booléens

  • Le type booléen n'existe pas en C parmi les types élémentaires prédéfinis.
  • Dans toute expression booléenne, la valeur 0 est considérée comme FAUX et toute autre valeur est considérée comme VRAI.

Opérateurs de base

Opérateurs arithmétiques

  • Addition (+), soustraction (-), multiplication (*), division (/), modulo (%)
  • Le résultat de l'opérateur / dépend du type des opérandes (division entière si entiers, division réelle si réels).

Opérateurs d'incrémentation/décrémentation

  • Incrémentation (++), décrémentation (--).
  • Ils servent à augmenter/diminuer la valeur de l'entier de 1.

Opérateurs d'accumulation

  • Ajout (+=), soustraction (-=), multiplication (*=), division (/=), modulo (%=)

Opérateurs de comparaison

  • Inférieur (<), supérieur (>), inférieur ou égal (<=), supérieur ou égal (>=), égal (==), différent (!=)
  • Leur résultat est un booléen représenté par un entier (1 si vrai, 0 si faux).

Opérateurs logiques

  • ET (&&), OU (||), NON (!)
  • Exemple: !3 vaut vrai donc 13 vaut faux

Expressions

  • Une expression associe des opérateurs et des opérandes, avec un type et une valeur d'évaluation.
  • Il existe des expressions arithmétiques, booléennes ou hybrides.
  • Attention aux mélanges de types et aux parenthèses.
  • En C, l'évaluation d'une expression est effectuée seulement si nécessaire à l'obtention du résultat (évaluation paresseuse).
  • Ceci est propre au langage C, qui ne possède pas de véritable type booléen.
  • Une expression booléenne VRAI prend la valeur 1 et 0 si FAUX dans une expression arithmétique
  • Une expression arithmétique qui vaut 0 est FAUX tandis qu'une valeur qui n'est pas 0 est VRAI dans une expression booléenne.

Variables

Notion de variable

  • Une variable est un objet abstrait avec un nom (identificateur), un type et une valeur.
  • Sa valeur est stockée dans un emplacement mémoire de l'ordinateur et a la taille du type prévu.

Déclaration

  • En C, une variable doit être explicitement déclarée avant d'être utilisée.
  • Syntaxe de la déclaration d'une variable :
    • sans initialisation: <type> <identifiant>;
    • avec initialisation:[const] <type> <identifiant> = <valeur initiale>;
  • Règles:
    • L'identifiant doit être composé d'un seul mot, commencer par une lettre ou un underscore, et ne pas contenir de symboles interdits.
    • Les mots-clés du langage C sont interdits.
    • Les identifiants commencent généralement par une minuscule.
Exemples :
  • a, myValue,x, nbEtudiants, nb_etu, point_entree, x2, _a3, _ma_Variable_, nombreFreresEtSoeurs
  • Il est recommandé de privilégier des mots courts et simples.

Exemples de déclarations de variables en C

int nombreEtudiants = 20; /* un entier avec initialisation */
int abscisse, ordonnee; /* deux entiers sur la même ligne sans initialisation */
int age, nombreFreresEtSoeurs = 0, tailleFamille = 3;/* trois entiers sur la même ligne avec et sans initialisation */
float rayon; /* un réel sans initialisation */
float a, b = -2.0, c; /* trois réels sur la même ligne avec et sans initialisation */
  • La déclaration d'une variable sert à réserver un espace en mémoire.

Affectation

  • L'affectation permet de donner une valeur (du même type) à une variable et de l'écrire dans la mémoire.
  • Syntaxe de l'affectation d'une valeur à une variable : <identifiant> = <valeur>;
  • Exemples :
myValue = -1; /* je donne à myValue la valeur -1 */

y = toto + 6; /* je donne à y la valeur de toto à laquelle j'ajoute 6 */

x = x * 2; /* je donne à x son ancienne valeur multipliée par 2 */
  • Une affectation se fait en 2 temps :
    • L'expression à droite du signe égal est évaluée d'abord
    • La valeur du résultat de l'expression à droite est écrite dans la variable indiquée à gauche du signe égal
  • La nouvelle valeur écrase l'ancienne.
  • En C, pour échanger le contenu de 2 variables, il faut passer par une variable supplémentaire temporaire pour ne pas perdre de valeur (a et b ci-dessous).
int a = 1, b = 2, tmp;
tmp = a;
a = b;
b = tmp;
  • Ne pas confondre affectation (=) et comparaison (==).
  • Une initialisation est un raccourci qui permet d'effectuer une déclaration et une affectation sur la même ligne

Constantes

  • Les constantes sont des objets dont la valeur ne doit pas être modifiée.
  • Déclaration : const <type> <identifiant> = <valeur initiale>;

Constante sous la forme d'un ordre préprocesseur

  • Syntaxe : #define <identifiant> <valeur initiale>
  • Ici, il n'y a pas d'objet créé, ni de zone mémoire réservée.
  • Le préprocesseur remplace toutes les occurrences de l'identifiant par la valeur au moment de la compilation.
  • Ici, pas de point-virgule et pas de signe égal.
  • Par convention, on donne le plus souvent aux constantes des identificateurs en majuscules.
  • Les constantes clarifient le code, facilitent sa mise à jour et garantissent son invariance.

Blocs d'instructions

  • En C, les instructions sont séparées par un point-virgule (;), ce qui donne un caractère séquentiel.
  • On peut regrouper les instructions par blocs délimités entre accolades ({ }).
  • Une variable déclarée dans un bloc n’est visible que dans ce bloc et dans les blocs inclus, sauf si elle est redéclarée dans un sous-bloc.
  • Les tabulations sont indispensables afin d'améliorer la lisibilité et de souligner le découpage des blocs.
  • L'indentation seule ne suffit pas.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Use Quizgecko on...
Browser
Browser