ALGORITHMIQUE et LANGAGE PASCAL

Documents pareils
Corrigé des TD 1 à 5

Examen Médian - 1 heure 30

Enseignement secondaire technique

Cours Informatique Master STEP

STAGE IREM 0- Premiers pas en Python

LES TYPES DE DONNÉES DU LANGAGE PASCAL

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Algorithmique et programmation : les bases (VBA) Corrigé

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)

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

Cours d algorithmique pour la classe de 2nde


Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Algorithmes et programmation en Pascal. Cours

Recherche dans un tableau

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

1. Structure d'un programme FORTRAN 95

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

Maple: premiers calculs et premières applications

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

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

ALGORITHMIQUE ET PROGRAMMATION En C

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

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

L informatique en BCPST

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

Représentation des Nombres

Programmation structurée et algorithmes de base en Pascal

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

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

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

Notions fondamentales du langage C# Version 1.0

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Algorithmique & programmation

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

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Plan du cours Cours théoriques. 29 septembre 2014

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Représentation d un entier en base b

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

Initiation à la programmation en Python

Application 1- VBA : Test de comportements d'investissements

Cours d algorithmique BTS SIO première année. Nicolas FRANCOIS nicolas.francois@free.fr

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Introduction à MATLAB R

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

TP 1. Prise en main du langage Python

Compléments de documentation Scilab : affichage de texte et formatage de nombres

Conventions d écriture et outils de mise au point

Glossaire des nombres

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

Licence Sciences et Technologies Examen janvier 2010

Chap III : Les tableaux

OCL - Object Constraint Language

Organigramme / Algorigramme Dossier élève 1 SI

Programmer en JAVA. par Tama

1 Recherche en table par balayage

Java Licence Professionnelle CISII,

Algorithmique et Programmation, IMA

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Algorithme. Table des matières

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Algorithmes récursifs

L ALGORITHMIQUE. Algorithme

Les structures. Chapitre 3

Propagation sur réseau statique et dynamique

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

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

Utilisation d objets : String et ArrayList

Logiciel Libre Cours 2 Fondements: Programmation


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

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

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

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Présentation du langage et premières fonctions

Découverte de Python

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

ACTIVITÉ DE PROGRAMMATION

INF 321 : mémento de la syntaxe de Java

Cours d Algorithmique et de Langage C v 3.0

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

Gestion mémoire et Représentation intermédiaire

Algorithmique avec Algobox

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

Feuille TD n 1 Exercices d algorithmique éléments de correction

Introduction à l algorithmique et à la programmation (Info 2)

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

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Initiation à la programmation OEF pour Wims (exercices).

Rappels sur les suites - Algorithme

Rappels Entrées -Sorties

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

I. Introduction aux fonctions : les fonctions standards

MÉTHODES NUMERIQUES. Cours. Licence de Physique Année Universitaire : Licence Chimie, parcours Physique. Semestre S3

Transcription:

Lycée Dominique Villars ECE 1 COURS ALGORITHMIQUE et LANGAGE PASCAL 1 Notion d algorthme Certains voient à tort, dans l ordinateur une machine pensante, capable de résoudre bien des problèmes. En réalité, celui-ci ne serait capable de rien si quelqu un (le programmeur) ne lui avait fourni la liste des actions à exécuter. Cette desciption doit être faite de manière non ambigüe et dans un ordre bien choisi. Il ne faut s attendre à aucune interprétation des ordres fournis. L ordinateur exécutera ces actions de manière purement mécanique. Le problème principal du programmeur est donc de décrire la suite des actions élémentaires permettant d obtenir à partir des données fournies, les résultats escomptés. Cette description doit à la fois la plus simple (niveau de complexité d un programme) et précise possible. Cette marche à suivre porte le nom d algorithme. Cette notion est totalement indépendante de l informatique. En effet, une recette de cuisine est un algorithme, tout comme une notice de montage de meubles suédois... Dans le contexte informatique, un algorithme doit être traduit dans un langage qui permettra à l ordinateur de comprendre chacune des instructions élémentaires. Cette année nous traduirons chacun des algorithmes étudiés dans le langage Turbo-Pascal. Exemple principal : Calcul d une puissance : (1,7) 64 La valeur (1,7) 64 peut être obtenue par la mise en oeuvre d un algorithme 1 dont on peut proposer la description suivante : 1 Calcul du produit 1,7 1,7 dont la valeur est stocké comme résultat intermédiaire, noté A 1. 2 Calcul de 1,7 A 1 dont la valeur est stocké comme résultat intermédiaire, noté A 2. 3 Répéter 61 fois cette dernière opération ; 4 La valeur cherchée est le dernier résultat intermédiaire. Pour un même travail, il est possible de faire appel à d autres algorithmes. Par exemple, on peut décrire l algorithme 2 par : 1 Calculer le produit 1,7 1,7 dont la valeur est stocké comme résultat intermédiaire,b 1. 2 Calculer le produit B 1 B 1 dont la valeur est un nouveau résultat intermédiaire B 2. (B 2 = (1,7) 4 ) 3 Répéter 4 fois cette opération. 4 La valeur cherchée est B 6 dernier résultat intermédiaire calculé. Structure générale d un algorithme : A l image d une recette de cuisine, l algorithme de décompose en trois parties : 1. On énumère tous les ingrédients = on liste toutes les donnés nécessaires, les entrées. 2. On décrit les étapes successives = on énumère les instructions que l ordinateur doit exécuter. 3. Si les étapes 1 et 2. sont cohérentes, le résultat de l algorithme est la sortie (oh le beau gâteau!!) 2 Bases du language de programmation pascal 2.1 Objets de bases Un programme Turbo Pascal décrit un enchainement d instruction portant sur des objets. Ces objets sont des données constantes ou des variables : 1 CONSTANTE = une donnée constante est une donnée dont la valeur est fixée par le programmeur et qui reste inchangée au cours de l exécution du programme. Un exemple important est la constante chaîne de caractères (ou string) : bonjour ou rerevgeetr... Pour définir une chaîne de caractères, il suffit de mettre une suite de caractères à l intérieur de. 2 VARIABLE = une donnée variable est une donnée dont la valeur est initialisée par le programmeur ; cette valeur peut être modifiée au cours de l exécution du programme.

Exemple : Dans la première algorithme de calcul de (1,7) 64, les objets sont : 1,7 (constante), 64 (constante) ainsi que le résultat intermédiaire (variable). Tous ces objets vont avoir des noms définis par le programmeur : ces noms s appellent des identificateurs. Ces identificateurs ne peuvent pas être des mots réservés c.a.d. des mots dont la signification est prédéfinie par le logiciel, tels que REAL ; etc... De plus il ne peut y avoir ni espace ni lettres accentuées dans un identificateur, et le premier caractère ne doit pas être un chiffre. 2.2 Structure d un programme en language Turbo Pascal Structure d un programme Turbo Pascal. L en-tête du programme : PROGRAM nom du progamme ; Les déclarations (variables, constantes, types des variables, procedures, fonctions..) begin le programme end. 2.3 Types des variables Les variables correspondent à divers type, correspondant à la nature des valeurs qui peuvent leur être affectées. En effet, déclarer un type pour une variable permet de réserver une case mémoire adaptée aux valeurs que va prendre cette variable tout au long de l éxecution de programme. Les principaux types d objet sont : type entier : integer = Ils doivent être compris entre -32768 et +32767. type réel : real Ils doivent être compris entre 2,910 39 et 1,710 38 avec 11 décimales type booléen : boolean = Il définit deux valeurs logiques : TRUE (vrai) ou FALSE (faux). Par exemple, si x est connu la variable (x > 0) est de type booléen. type charactère ; char = Ces variables contiennent un caractère. type chaîne de charactère ; string = Ces variables contiennent une chaîne de caractères. type tableau : array = Il faut alors préciser le type des éléments du tableau qu il doit prendre en compte. On verra ce type plus en détail dans une prochaine partie. Nous allons voir par la suite qu il est possible de définir des types de variables à l aide de l instruction TYPE. 2.4 Déclaration des types(variables)/valeurs(constantes) des objets Il faut déclarer le type des variables ainsi que les valeurs des constantes dans la première partie du programme. ❶ Les valeurs des différentes constantes sont déclarées à l aide de l instruction CONST de la manière suivante : Exemple 1 : CONST tauxtva = 17; Exemple 2 : CONST message = Salut ca va? ; ❷ Les types des variables sont déclarées à l aide de l instruction VAR de la manière suivante : Exemple 1 : VAR variable1, variable2,..., variablen : REAL; Exemple 2 : VAR i,k,n : INTEGER ; Lors de la phase de déclaration, regrouper les variables ayant même type. 2.5 Variables En informatique, une variable est une case mémoire, réservée pour stocker la future valer de cette variable (valeur pouvant être modifiée au cours de l exécution du programme). Pour être utilisée une variable doit être : déclarée : une variable doit avoir un nom (identificateur) ainsi qu un type (entier, réel, etc...) qui va définir la taille de la case mémoire à réserver. VAR x,a,b : REAL;

initialisée : on doit donner une valeur initiale à la variable. Deux moyens sont possibles : a) par affectation directe: on attribue une valeur à la variable x préalablement déclarée par l instruction x : = 1 b) affectation intéractive par écriture/lecture : i/ on demande à l utilisateur du programme de rentrer à l écran les valeurs initiales pour une ou plusieurs variables writeln ( écrire les valeurs de a et b ); ii/ la ou les valeurs écrites par l utilisateur sont affectées aux variables en questions. readln (a,b); Remarque : Supposons avoir déjà initialisé la variable a. Si l on a veut affecté à la variable b, la même valeur qu à a il est possible d utiliser l instruction b : = a ; à condition que ces deux variables soient déclarées de même type!!! ATTENTION : Ne pas confondre l instruction d affectation directe := avec le = réservé aux données constantes et au symbole de comparaison!!! 2.6 Opérateurs élémentaires Ces opérations dépendent du type des objets (variables ou constantes). Attention, les opérations doivent être effectuées entre objets de même type. ❶ Opérations arithmétiques opérateurs entrées sortie + ; - ; * ; / réel ou entier réel ou entier div ; mod entier entier quotient ou reste de la division euclidienne exp ; ln ; sqrt réel réel sqrt est la racine carrée sqr réel/entier réel/entier carré trunc réel entier partie entière abs réel/entier réel/entier valeur absolue ❷ Opérateurs relationnels = ; <> pour traduire ; <; <; <= pour et >= pour. ❸ Opérateurs logiques Ils sont au nombre de quatre : not ; or ; and ; xor (OU exclusif). Ces opérateurs servent généralement à définir des variables booléennes c est à dire des propositions mathématiques prennant les valeurs VRAIE ou FAUSSE selon si celles-ci sont vérifiées ou pas. On verra que ces variables de type booléen et donc les opérateurs ci-dessous, sont souvent utilisé dans les instructions conditionnelles selon les modèles : if variable booléenne then instructions 1 else instructions 2 while variable booléenne do instructions repeat instructions until variable booléenne Exemples : if x>2 then a:=-3 while (x<-1) and (x>1) do 2.7 Les variables de type tableau Les tableaux peuvent être à une ou plusieurs dimensions. Ils se prêtent principalement : i) à la représentations de n-uplets ou de matrices. ii) au stockage des données (on verra qu il est possible de générer des expériences aléatoires et d en stocker les différents résultats).

2.7.1 Déclarer une variabe de type tableau Exemples : 1) tableau à une entrée (un vecteur) VAR M : ARRAY[ taille] OF type des nombres du tableau VAR M : ARRAY[1..4] OF REAL Cette ligne, déclare la variable M comme un élément de R 4. 2) tableau à double entrées (une matrice) VAR M : ARRAY[1..4,1..3] OF REAL Cette ligne, déclare la variable M comme un élément de M 4,3 (R) (4 lignes et 3 colonnes). 2.7.2 Accéder aux éléments du tableau Chacune des cases du tableau ainsi déclaré est un variable du type type des nombres du tableau et identifiée par : M[i] (le [i] représente le numéro de la case dans le tableau à une entrée) M[i,j] ( le couple [i,j] représente le numéro de la ligne et de la colonne de l emplacement de la variable) ATTENTION : Au départ, le tableau est vide!! Il faut penser à l initialiser toutes les cases du tableau avant de l utiliser!! 2.7.3 Créer un type tableaux Pour pouvoir appliquer des fonctions ou des procédures (voir plus loin) à un tableau, il faut donc déclarer le type de ce tableau en amont. De même, par commodité, si l on souhaite travailler avec plusieurs matrice de M 3 (R) il est préférable de créer un type matrice de taille 3 3... La déclaration d un nouveau type se fait juste avant la déclaration des variables!! TYPE matrice = ARRAY[1..3,1..3] OF REAL ; Ainsi dans la suite du programme, il est possible de déclarer (par exemple) 4 variables A, B, C et D en tant que matrice de taille 3 3 par : VAR A, B, C, D : matrice ; 2.7.4 Opérations sur les tableaux La seule opération globale que Turbo-Pascal sait réaliser sur les tableaux est l affectation en bloc des valeurs d un tableau dans un tableau identique (même dimensions et même type de contenu) Ainsi si R et A sont des tableaux identiques alors R:= A remplace le contenu du tableau R par celui du tableau A. 2.7.5 Initialiser un tableau Plusieurs possibilités pour initialiser efficacement le contenu d un tableau : i) utiliser une boucle itérative FOR pour initaliser tout les éléments du tableau à 0. VAR k : INTEGER ; VAR M : ARRAY[1..12] OF REAL ; FOR k:=1 TO 12 DO M[k]:=0 ;

ii) utiliser une boucle FOR pour initaliser les éléments du tableau à des valeurs entrées par l utilisateur. Exemple 1 : initialiser un tableau à une entrée par saisie de l utilisateur. VAR k : INTEGER ; VAR M : ARRAY[1..12] OF REAL ; FOR k:=1 TO 12 DO WRITELN ( Entrer la valeur de la case,k) ; READLN (M[k]) ; Exemple 2 : initialiser un tableau double entrées par saisie de l utilisateur. VAR i, j : INTEGER ; VAR M : ARRAY[1..4,1..5] OF REAL ; FOR i:=1 TO 4 DO FOR j:=1 TO 5 DO WRITELN ( Entrer la valeur de la ligne,i, colonne,j) ; READLN (M[i,j]) ; 3 Instructions conditionnelles Une instruction conditionnelle est une instruction dont l action dépend de la valeur d une proposition : si la condition est vraie alors on effectue une instruction 1 sinon on effectue une instruction 2. instruction A IF condition THEN ELSE END instruction C instructions 1 ; instructions 2 ; Définition - Instructions simples/composées Une instruction est dite simple si elle se réduit à une seule commande : writeln( bonjour ) ou s:= 0. Sinon l instruction est dite composée. Une instruction composée est donc une suite d instructions terminées par un ; : l ensemble de ces instructions doit alors commencer par un et finir par un END;. Pour des raisons de lisibilité, on utilise très souvent une présentation décalée : instruction 1 ; instruction 2 ; instruction 3 où instruction1, instruction2, et instruction3 peuvent être des instructions simples ou composées. Le point virgule ; est en fait un séparateur d instructions : c est pourquoi il n est pas nécessaire d en insérer un à la fin de l instruction3.

Remarques : 1 Si les instructions 1 ou 2 sont simples le...end n est pas utile!! 2 Le ELSE est facultatif, mais ne doit pas être précédé immédiatement d un ;. 4 Boucles itératives 4.1 Boucle FOR L idée de la boucle FOR : on répète une suite d instructions un certain nombre de fois. L utilisation d une telle boucle nécéssite la déclaration du variable (indice de décompte). La syntaxe est la suivante : VAR i :... instruction A INTEGER; FOR i:= n 1 TO n 2 DO instruction C instructions B ; ATTENTION : Le groupe d instructions B est effectué une première fois avec i = n 1, la deuxième fois avec i = n 1 +1,..., la dernière fois avec i = n 2. 4.2 Boucles conditionnelles 4.2.1 Boucles WHILE L idée de la boucle WHILE : on répète une suite d instructions tant qu une certaine condition reste vraie. La syntaxe est la suivante : instruction A WHILE condition DO instruction C instruction B ; ATTENTION : Ce type de boucle peut ne jamais s achever si la condition reste toujours vraie. Assurez vous bien que celle-ci devient donc fausse au bout d un certain temps!!! 4.2.2 Boucles REPEAT L idée de la boucle REPEAT : on répète une suite d instructions jusqu à ce qu une certaine condition soit vraie. La syntaxe est la suivante : instruction A REPEAT instruction B; UNTIL condition; instruction C ATTENTION : Le REPEAT...UNTILpermet de délimiter l instruction B! Nul besoin donc de...end! Attention également de bien vous assurer que la condition devient vraie au bout d un certain temps : sinon le programme ne s arrete jamais.

5 Fonctions et procédures La notion de sous-programme représente toute la puissance du langage Turbo Pascal. En fait c est la possibilité de structurer encore davantage le programme en créant de nouveaux ordres utilisables dans le corps du programme mais non définis dans celui-ci. Celà permet d avoir un programme beaucoup plus lisible puisque l on décompose ainsi le programme en actions simples ou blocs d instructions. 5.1 Fonctions Définition - Fonction sous TPascal Une fonction est un sous-programme qui fournit un résultat à partir des données qu on lui apporte : la notion de fonction en Turbo-Pascal est assez proche de la notion de fonction en mathématiques. Une fonction se déclare comme suit : FUNCTION Nom de la fonction (Nom du paramètre:type du paramètre) : Type de sortie VAR déclaration des éventuelles variables ou constantes (utile à la fonction) Corps de la fonction (listes des instructions séparées par des ; ) Nom de la fonction := Valeur de sortie; Remarques : 1 Une fonction ne peut avoir en sortie qu un réel ou un entier!! 2 Il peut y avoir plusieurs paramètre d entrées dans une fonction. Ils seront alors séparés par un ; dans la déclaration mais lors de l appel de la fonction dans le corps du programme, ils seront séparés par une,. Exemple 1 : Fonction donnant l image d un nombre par la fonction mathématiques x 3 x+2 Après voir définit la fonction, l utiliser afin de calculer 3 3+2. PROGRAM Exemple1 ; FUNCTION f (x : END. REAL) : REAL f : = 3*sqrt(x)+2 WRITE(f(3)) Exemple 2 : Fonction associant à un entier positif n sa factorielle n!. PROGRAM Exemple2 ; FUNCTION factorielle ( N : INTEGER) : INTEGER ; VAR i, F : INTEGER ; END. F:=1 ; FOR i:=1 TO N DO F:=F*i ; factorielle:=f; Compléter le programme ci-dessus de l exemple 2 afin d utiliser la fonction factorielle dans le calcul de du coefficient binomial ( n k ). On demandera à l utilisateur d entrer les valeurs de n et k.

5.2 Procédures Définition - Procédures sous TPascal CONTRAIREMENT aux fonctions, la procédure ne fournit pas un résultat mais crée une action ou une suite d actions (instructions) : on utilisera les procédures principalement lorsqu on manipulera des tableaux (matrices ou autres). En effet, une fonction ne permet pas de modifier un tableau puisque en sortie elle renvoie un réel. La syntaxe d une procédure est double : SYNTAXE 1 SYNTAXE 2 PROCEDURE Nom de la fonction (Nom du paramètre:type du paramètre) ; VAR déclaration des éventuelles variables ou constantes (via CONST) Corps de la fonction (listes des instructions séparées par des ; ) PROCEDURE Nom de la fonction (VAR Nom du paramètre:type du paramètre) ; VAR déclaration des éventuelles variables ou constantes (via CONST) Corps de la fonction (listes des instructions séparées par des ; ) Essayons de comprendre la différence entre ces deux syntaxes sur l exemple suivant. Exemple PROGRAM proc ; VAR A : REAL ; PROCEDURE P (x : REAL) ; write(x) ; x:=x+1 writeln(x) ; A;=5 ; P(A) ; write(a) ; END. PROGRAM proc ; VAR A : REAL ; PROCEDURE P1 (VAR x : REAL) ; write(x) ; x:=x+1 writeln(x) ; A;=5 ; P1(A) ; write(a) ; END. L affichage de la syntaxe 1 est : 56 L affichage de la syntaxe 2 est : 56 5 6