Podcast
Questions and Answers
Quel est le but de l'UE (Unité d'Enseignement)?
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?
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?
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?
Quels sont les trois types d'objets prédéfinis que l'on trouve au minimum dans les ordinateurs?
Qu'est-ce qu'un code exécutable?
Qu'est-ce qu'un code exécutable?
Citez les types de langages de programmation.
Citez les types de langages de programmation.
Qu'est-ce qu'un compilateur?
Qu'est-ce qu'un compilateur?
Qu'est-ce qu'un interpréteur?
Qu'est-ce qu'un interpréteur?
Les programmes compilés sont plus lents et plus lourds en ressources à l'exécution.
Les programmes compilés sont plus lents et plus lourds en ressources à l'exécution.
Les programmes interprétés ont une plus grande portabilité.
Les programmes interprétés ont une plus grande portabilité.
Qu'est-ce qu'un algorithme?
Qu'est-ce qu'un algorithme?
Un algorithme doit dépendre du langage de programmation.
Un algorithme doit dépendre du langage de programmation.
Chaque étape d'un algorithme doit être définie de façon rigoureuse et non ambiguë.
Chaque étape d'un algorithme doit être définie de façon rigoureuse et non ambiguë.
Un algorithme ne doit pas être déterministe.
Un algorithme ne doit pas être déterministe.
Qu'est-ce qu'un programme impératif?
Qu'est-ce qu'un programme impératif?
Quelles sont les quatre parties principales de la structure d'un programme en C?
Quelles sont les quatre parties principales de la structure d'un programme en C?
Qu'est-ce que la fonction main
et quelle est son importance?
Qu'est-ce que la fonction main
et quelle est son importance?
Les définitions de types sont locales, utilisables uniquement dans la fonction principale.
Les définitions de types sont locales, utilisables uniquement dans la fonction principale.
Pourquoi les commentaires sont-ils importants dans le code?
Pourquoi les commentaires sont-ils importants dans le code?
Quelle est la commande pour compiler un fichier C?
Quelle est la commande pour compiler un fichier C?
Définir Un type exprime un ensemble d'objets et leurs caractéristiques communes?
Définir Un type exprime un ensemble d'objets et leurs caractéristiques communes?
Quels sont les types de données Entiers (relatifs)?
Quels sont les types de données Entiers (relatifs)?
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)
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)
En C, l'évaluation d'une expression est toujours effectuée entièrement, même si le résultat est déjà certain.
En C, l'évaluation d'une expression est toujours effectuée entièrement, même si le résultat est déjà certain.
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.
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.
La variable id_variable
doit obligatoirement avoir le _____ type que le <type_retour>
annoncé lors de la déclaration de la fonction.
La variable id_variable
doit obligatoirement avoir le _____ type que le <type_retour>
annoncé lors de la déclaration de la fonction.
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?
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?
En C par contre, on fait pas de distinction entre fonctions et procédures.
En C par contre, on fait pas de distinction entre fonctions et procédures.
La _____ sert à afficher des valeurs à l'écran
La _____ sert à afficher des valeurs à l'écran
Quelle est la différence entre un effet de bord et une fonction mathématique?
Quelle est la différence entre un effet de bord et une fonction mathématique?
Les arguments d'origine envoyés dans une fonction lors de l'appel ne sont _____ par l'appel de cette fonction
Les arguments d'origine envoyés dans une fonction lors de l'appel ne sont _____ par l'appel de cette fonction
À quoi servent les caractères de mise en forme précédés d'un backslash dans printf?
À quoi servent les caractères de mise en forme précédés d'un backslash dans printf?
Indique à scanf comment le flux de texte reçu de l'entrée standard est traité?
Indique à scanf comment le flux de texte reçu de l'entrée standard est traité?
Attention : les break
sont indispensable!
Attention : les break
sont indispensable!
Que permet l'opérateur ternaire?
Que permet l'opérateur ternaire?
Flashcards
Mémoire
Mémoire
Espace de stockage d'informations sous forme de suites de 0 et de 1.
Octet
Octet
Unité d'information composée de 8 bits.
Instructions
Instructions
Ordres exécutés par le processeur (CPU), codés en mémoire.
Code exécutable
Code exécutable
Signup and view all the flashcards
Langage machine
Langage machine
Signup and view all the flashcards
Langages de programmation évolués
Langages de programmation évolués
Signup and view all the flashcards
Langage Logique
Langage Logique
Signup and view all the flashcards
Langage Fonctionnel
Langage Fonctionnel
Signup and view all the flashcards
Langage Impératif
Langage Impératif
Signup and view all the flashcards
Programme
Programme
Signup and view all the flashcards
Compilation
Compilation
Signup and view all the flashcards
Compilateur
Compilateur
Signup and view all the flashcards
Interprété
Interprété
Signup and view all the flashcards
Interpréteur
Interpréteur
Signup and view all the flashcards
Cross-platform
Cross-platform
Signup and view all the flashcards
Programme
Programme
Signup and view all the flashcards
Algorithme
Algorithme
Signup and view all the flashcards
Langage de programmation
Langage de programmation
Signup and view all the flashcards
Ordres pré-processeurs
Ordres pré-processeurs
Signup and view all the flashcards
Commentaires
Commentaires
Signup and view all the flashcards
Type élémentaire
Type élémentaire
Signup and view all the flashcards
short
short
Signup and view all the flashcards
int
int
Signup and view all the flashcards
long
long
Signup and view all the flashcards
float
float
Signup and view all the flashcards
double
double
Signup and view all the flashcards
char
char
Signup and view all the flashcards
Table ASCII
Table ASCII
Signup and view all the flashcards
Booléen
Booléen
Signup and view all the flashcards
Division (/)
Division (/)
Signup and view all the flashcards
Incrémentation/Décrémentation
Incrémentation/Décrémentation
Signup and view all the flashcards
Opérateurs d'accumulation
Opérateurs d'accumulation
Signup and view all the flashcards
Opérateurs de comparaison
Opérateurs de comparaison
Signup and view all the flashcards
Opérateurs logiques
Opérateurs logiques
Signup and view all the flashcards
Expression
Expression
Signup and view all the flashcards
Évaluation paresseuse
Évaluation paresseuse
Signup and view all the flashcards
Variable
Variable
Signup and view all the flashcards
Affectation
Affectation
Signup and view all the flashcards
Constante
Constante
Signup and view all the flashcards
Blocs d'instructions
Blocs d'instructions
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>;
- sans initialisation:
- 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.