Corrigé du QCM de programmation, 15 avril 2003

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

Introduction au langage C

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)

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

Java Licence Professionnelle CISII,

Programmer en JAVA. par Tama


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

Algorithmique et Programmation, IMA

Programme Compte bancaire (code)

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

TP, première séquence d exercices.

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

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

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

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

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

Recherche dans un tableau

as Architecture des Systèmes d Information

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

Outils pour la pratique

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

Programmation en langage C

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

Cours d Algorithmique et de Langage C v 3.0

Algorithmique, Structures de données et langage C

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

Introduction à MATLAB R

Notions fondamentales du langage C# Version 1.0

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

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

Machines virtuelles fonctionnelles (suite) Compilation ML Java

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

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

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

Cours de Programmation 2

INITIATION A LA PROGRAMMATION

Les structures de données. Rajae El Ouazzani

Classes et Objets en Ocaml.

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Le prototype de la fonction main()

Claude Delannoy. 3 e édition C++

Génération de code binaire pour application multimedia : une approche au vol

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

Algorithmique I. Algorithmique I p.1/??

Initiation à la programmation en Python

TP 1. Prise en main du langage Python

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

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

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

Le langage C. Introduction, guide de reference

OS Réseaux et Programmation Système - C5

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Cours 1 : La compilation

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

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

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

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

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Principes des langages de programmation INF 321. Eric Goubault

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

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

ACTIVITÉ DE PROGRAMMATION

Java 1.5 : principales nouveautés

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Chap III : Les tableaux

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Objets et Programmation. origine des langages orientés-objet

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

Méthodes de programmation systèmes UE n NSY103. Notes de cours. Nombre d'heures : 55h (~ cours de 3 heures)

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Les processus légers : threads. Système L3, /31

Conventions d écriture et outils de mise au point

Programmation système I Les entrées/sorties

Les arbres binaires de recherche

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

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

1. Structure d'un programme FORTRAN 95

Utilisation d objets : String et ArrayList

SUPPORT DE COURS. Langage C

INF 321 : mémento de la syntaxe de Java

Corrigé des TD 1 à 5

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

Les débordements de tampons et les vulnérabilités de chaîne de format 1

Cours Informatique Master STEP

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

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Assurance Qualité. Cours de génie logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 23/04/2007

Corrigés des premiers exercices sur les classes

Les structures. Chapitre 3

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

Chapitre 1 : La gestion dynamique de la mémoire

Java Licence Professionnelle CISII,

COMPARAISONDESLANGAGESC, C++, JAVA ET

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

Transcription:

IENAC S02 Examen Programmation 1 IENAC S02 Corrigé du QCM de programmation, 15 avril 2003 1. Le style impératif consiste essentiellement à faire des appels de fonctions (c est possible mais ce n est pas l essence) faire des boucles while (pas uniquement) écrire et lire en mémoire, en séquence utiliser des références (pas uniquement) 2. Lequel de ses identificateurs n est pas lexicalement correct toto_encore bob.txt f1 _loop 3. Qu affiche le programme suivant void f(int x) { int x = 1729; { int y = x; y = 12; printf("%d", y); main() { f(123); 1729 12 123 Rien (y est interne au bloc, la fonction n est pas compilable) 4. Qu affiche le programme suivant let x = ref 1;; let f = fun () -> let x = ref 2 in x := 3;; let g = fun () -> x := 4; let x = ref 5 in ();; f (); g (); Printf.printf "%d\verb"\"n"!x;; 2 3 4 (attention aux let in locaux) 5. Le message suivant warning: return with a value, in function returning void est affiché lors de la compilation avev gcc -Wall pour la fonction void f() { return 1; (il suffit de lire!) int g() { char h() { return 7.0; aucune de ces fonctions 6. La fonction suivante let f = fun x y -> if x = 1 then!y else float x;; est de type int -> float ref -> float (application des règles de typage) (int -> float) -> float ref -> int int -> float -> float n est pas typable

IENAC S02 Examen Programmation 2 7. La fonction suivante char *f(char g(float x), int y) { return &g((float)y); est syntaxiquement incorrecte est mal typée n est pas compilable (on ne peut pas prendre (avec &) l adresse de la valeur retournée par une fonction) est correcte 8. La fonction suivante let rec f = fun f x -> if x = 0 then f x else x;; est récursive non terminale est récursive terminale n est pas récursive (le paramètre f masque le f global) n est pas correcte 9. Soit le programme suivant int t[3] = { 7, 8, 9 ; Que vaut t[2]+t[3] 17 9 ça dépend (l élément d indice 3 est situé dans la mémoire après le tableau : on ne peut pas connaître sa valeur a priori) 10. Qu affiche le programme suivant? let m = Array.create 10 (Array.create 5 7);; for i = 0 to 4 do m.(2).(i) <- i+1 done;; Printf.printf "%d\n" m.(1).(3);; 7 4 (m est un tableau contenant 10 fois la même ligne qui est partagée) 3 le programme ne peut pas être compilé 11. Soit la fonction suivante let rec iter = fun f n z -> if n = 0 then z else f (iter f (n-1) z);; La fonction«puissance de 2»s écrit fun n -> iter (fun x -> 2 * x) 1 n fun n -> iter (2 * n) n 1 fun n -> iter (fun x -> 2 * x) n 1 (attention à l ordre des paramètres et à leur type) ne peut pas s écrire avec iter 12. Les éléments d un tableau de n éléments ne peuvent être que des entiers entre 0 et n 1 (non il existe des tableaux de flottants) sont indexés de 0 à n (non seulement jusqu à n 1) sont éventuellement de type différent (non, les tableaux sont homogènes) sont accessibles en temps constant

IENAC S02 Examen Programmation 3 13. La fonction suivante let f = fun n -> let s = malloc(n) in for i = 0 to n - 1 do s.(i) = i done; s;; renvoie un tableau d entiers n est pas syntaxiquement correcte n est pas typable ne veut rien dire (pas de malloc en O Caml) 14. Soient les fichiers suivant /* toto.c */ static int x = 1; extern void f(int); int g(int y) { f(y); return(x+y); /* titi.c */ extern int g(int); int main() { return g(91); La commande de compilation gcc -Wall -c toto.c titi.c s exécute correctement (l option -c n effectue pas l édition de lien) produit le message undefined symbol f génère un exécutable a.out ne fonctionne pas car il manque titi.h et toto.h (non il ne sont pas inclus) 15. Pour représenter un point à la surface de la terre de l hémisphère N, le meilleurs type en O Caml est le suivant type t = Lat of float Long of float (méridien ou parallèle) type t = float * float (trop anonyme) type t = { lat : float; long : float type t = { lat : float >= 0; long : float (pas de mélange entre type et valeur en O Caml) 16. En C, un type produit se construit avec union enum struct (c.f. cours) typedef

IENAC S02 Examen Programmation 4 17. Qu affiche le programme suivant int main() { int x = 2; switch (x) { case 1: x = 4; case 2: x = 5; case 3: x = 6; default: { printf("%d\n", x); return 0; 2 6 (il manque les break) rien car il n est pas correct 18. Soit la fonction suivante let rec f = fun l -> match l with [] -> [] x::xs -> l @ f xs;; Que renvoie l appel f [1; 2; 3] rien car ça boucle [3; 2; 1] [[1; 2; 3]; [2; 3]; [3]] [1; 2; 3; 2; 3; 3] (@ effectue une concaténation) 19. Soient les déclarations classiques suivantes pour représenter une liste struct cons { int car ; struct cons* cdr; ; typedef struct cons* list; const list nil = (list)0; La fonction suivante appliquée à la liste des 10 premiers entiers int d(list l) { while(l) l = l->cdr; return l->car; n est pas compilable retourne le dernier élément d une liste produit un Segmentation fault(on ne peut pas déréférencer le pointeur nul) boucle indéfiniment 20. Que vaut l expression suivante List.fold_right (fun x r -> x::x*x::r) [1;2;3] [4] [1;1;2;4;3;9;4] (c.f. la définition de List.fold_right) [(1,1);(2,4);(3,9);(4,16)] [1;1;2;4;3;9] [4] 21. Question subsidiaire. Soit la fonction let a b=let rec a b c d=if c=0 then d else b(a b(c-1)d)in a(fun c b->a c(b+1)1)b succ;;

IENAC S02 Examen Programmation 5 Que retourne (a 3 3)? Il fallait reconnaître la fonction d Ackermann : donc 61 évidemment.