Université des Antilles et de la Guyane Département Scientifique Interfacultaire Corrigé Examen INFO1 Informatique



Documents pareils
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)

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

Algorithmique et Programmation, IMA

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

Introduction au langage C

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

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

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

1.6- Génération de nombres aléatoires

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

Les structures de données. Rajae El Ouazzani

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

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

Initiation à la programmation en Python

I. Introduction aux fonctions : les fonctions standards

Solutions du chapitre 4

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

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

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

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

Programmation en langage C

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

STAGE IREM 0- Premiers pas en Python

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

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

Représentation d un entier en base b

Le langage C. Séance n 4

Cours 1 : Qu est-ce que la programmation?

ALGORITHMIQUE ET PROGRAMMATION En C

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

Chap III : Les tableaux

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

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

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.


Programmation Classique en langage C

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

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

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

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

Programmation en C - Sommaire

V- Manipulations de nombres en binaire

Licence Sciences et Technologies Examen janvier 2010

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

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

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

Programmation Objet - Cours II

ACTIVITÉ DE PROGRAMMATION

Le prototype de la fonction main()

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Calcul Formel et Numérique, Partie I

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

Introduction à MATLAB R

Introduction au Langage de Programmation C

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

Initiation à LabView : Les exemples d applications :

Application 1- VBA : Test de comportements d'investissements

Notions de Langage C

TP, première séquence d exercices.

Conventions d écriture et outils de mise au point

Les arbres binaires de recherche

Java Licence Professionnelle CISII,

Chapitre 4 Pierre, papier, ciseaux

Corrigés des premiers exercices sur les classes

Langage Java. Classe de première SI

INITIATION A LA PROGRAMMATION

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

TP : Gestion d une image au format PGM

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

L ALGORITHMIQUE. Algorithme

Présentation du langage et premières fonctions

Premiers Pas en Programmation Objet : les Classes et les Objets

Algorithmique et programmation : les bases (VBA) Corrigé

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

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

Cours d algorithmique pour la classe de 2nde

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Algorithmique I. Algorithmique I p.1/??

Puissances d un nombre relatif

Chapitre 2 Devine mon nombre!

Les chaînes de caractères

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

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

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

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

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

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

COURS D'INFORMATIQUE: LANGAGE C NOTES DE COURS

Utilisation d objets : String et ArrayList

Les fichiers. Chapitre 4

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

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

4. Groupement d objets

Propagation sur réseau statique et dynamique

SUPPORT DE COURS. Langage C

Examen Médian - 1 heure 30

Programmation système I Les entrées/sorties

Transcription:

Université des Antilles et de la Guyane Département Scientifique Interfacultaire Corrigé Examen INFO1 Informatique Le corrigé propose une des réponses possibles aux problèmes posés. Le but de l'examen n'étant pas de traiter le problème d'une manière précise (sauf si indications dans ce sens), les solutions différentes mais justes auront également été retenues comme réponses correctes. En particulier, les algorithmes demandés pour le jeu de la vie pouvaient être écrit en langage 'C' ou algorithmique. Somme des entiers pairs Exercice 1* Écrire une fonction qui retourne la somme des entiers pairs inférieurs ou égaux à un entier n donné. int sommepairs(int n) int i, somme = 0; for(i=0 ; i<=n ; i++) if (i % 2 == 0) somme += i ; return somme; Le jeu de la vie. NB : Chaque exercice peut être traité indépendamment. On dispose d'un échiquier, dans lequel les cases peuvent prendre les valeurs 0 ou 1. À chaque étape, on calcule la nouvelle valeur de chacune des cases en fonction des valeurs des cases voisines. Les cases voisines d'une case étant celles se trouvant de part et d'autre de cette case sur la même ligne ou sur la même colonne (pas en diagonale). La valeur d'une case passe à 0 si elle possède 0 ou 4 voisins à 1 (elle meurt isolée ou étouffée). La valeur d'une case passe à 1 si elle possède 2 ou 3 voisins à 1. Elle ne change pas dans les autres cas. Pour éviter les cas particuliers des cases se trouvant en périphérie de l'échiquier, on considérera que ce dernier est stocké dans un tableau comprenant un bordure remplie de zéros (0) : 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 Dans l'échiquier représenté ici (avec sa bordure), la case à l'intersection de la 2 ème ligne et de la 3 ème colonne à 3 voisins à 1. Le programme principal vous est donné et est le suivant :

void main() int n = 25; int M[n][n]; /* on déclare un tableau carré */ int i,nbetapes; configinit(m); printf("entrer le nombre d'etapes : "); scanf("%d",&nbetapes); for (i=1;i<=nbetapes;i++) changeetat(m); imprime(m); Exercice 2* On souhaite pouvoir visualiser l'évolution du jeu. Écrivez la procédure imprime qui prend en paramètre un tableau stockant un échiquier et affiche ce dernier à l'écran. void imprime(int M[n][n]) int i,j; printf("%1d ",M[i][j]); Exercice 3* On souhaite pouvoir calculer pour une case de l'échiquier le nombre de voisins à 1 afin de tester les différents cas. Écrivez l'algorithme permettant d'obtenir ce nombre. int nbvoisins(int M[n][n], int ligne, int colonne) return(m[i 1][j]+M[i+1][j]+M[i][j 1]+M[i][j+1]); Exercice 4** On dispose d une fonction binrandom qui retourne au hasard la valeur 0 ou la valeur 1. On souhaite initialiser l'échiquier avec une valeur au hasard pour chacune des cases. Écrivez la procédure configinit qui permet d'initialiser le tableau, c'est à dire non seulement initialiser l'échiquier mais aussi la bordure. void configinit(int M[n][n]) int i,j; /* Mise a 0 des contours */ for (i=0;i<n;i++)

M[0][i]=0; M[n 1][i]=0; M[i][0]=0; M[i][n 1]=0; /* Acquisition */ //printf("entrer la configuration initiale :\n"); M[i][j] = rand() > (RAND_MAX/2.0)? 1 : 0 ; //scanf("%d",&m[i][j]); Exercice 5** En utilisant les fonctions et procédures précédentes, écrivez la fonction estvivante qui retourne la valeur que devra prendre une case à l'étape suivante. int estvivante(int M[n][n], int ligne, int colonne) NbVois = nbvoisins(m,ligne,colonne); Exercice 6*** if ((NbVois==4) (NbVois==0)) return 0; else if (NbVois==2) return 1; else return M[ligne][colonne]; Complétez la procédure suivante qui permet de faire évoluer l'ensemble de l'échiquier d'une étape vers une autre. void changeetat(int M[n][n]) int i,j,nbvois; int Maux[n][n]; Maux[i][j] = estvivante(m, i, j); /* Recopie de MAux dans M */ M[i][j]=MAux[i][j];

Programmation en C Exercice 7* Dans le programmes C suivant, donnez les erreurs et les corrections à effectuer.* int addition(int a, int b); Exercice 8** int a, b, c; c = a + b ; return c; Que réalise les programmes suivant : ** 1) for (i=0;i<10;i++); printf("hello world!\n"); Boucle 10 fois puis affiche «hello world!» à l'écran. 2) for (i=0,i<10,i++) printf("hello world!\n"); Erreur à la compilation à cause des virgules dans l'instruction for. Exercice 9*** Que réalise le programme C suivant (répondez aux questions suivantes). *** Que fait la fonction t? La fonction t compare deux entiers, retourne 0 si le premier est inférieur au second, retranche le second du premier et retourne 1 sinon. La variable cont est déclarée en C comme un int, mais quel est réellement son type. La variable cont est en fait une variable booléenne puisqu'elle est utilisée en tant que telle dans l'instruction for. Quel relation lie les variables i, a, b et c à chaque passage dans la boucle for. La relation qui relie i, a, b et c est c = b*(i+1) + a. Completez l'instruction printf en fin du programme principal (main). printf("la quotient de la division de %d par %d est %d et le reste est %d\n", b*i+a, b, i, a); int i, a, b, cont = 1; int t(int *a, int b) if (*a < b) return 0; *a = *a b; return 1 main()

int i, a, b, c, cont = 1; printf("entrez une valeur pour a\n"); scanf("%d", &a); c = a; printf("entrez une valeur pour b\n"); scanf("%d", &b); for (i = 1 ; cont ; i++) cont = t(&a, b); printf("...\n",...,...,...,...); Parcours en accordéon Exercice 10**** Écrire une fonction qui affiche un parcours en accordéon d'un tableau à deux dimensions. Plus précisément, on parcourt la première ligne de gauche à droite puis la seconde de droite à gauche et ainsi de suite en alternant le sens de parcours des lignes. Exemple : Pour le tableau suivant, 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 On doit obtenir l'affichage suivant : 0, 1, 2, 3, 7, 6, 5, 4, 8, 9, 10, 11, 15, 14, 13, 12, 16, 17, 18, 19 void accordeon(tab[m][n] tableau, int m, int n) for (i=0 ; i<m ; i++) if (i%2 == 0) debut = 0 ; pas = 1 ; fin = n ; else debut = n 1 ; pas = 1 ; fin = 1 ; while (debut!= fin) printf("\t%i", tableau[i][j]); debut += pas;