• Aucun résultat trouvé

Partie1:compilationetfonctions TPn 2ProgrammationC(r´evisions) Universit´eParisDiderot–Paris7Programmationr´eseauxL3InformatiqueAnn´ee2011-2012,2 semestre

N/A
N/A
Protected

Academic year: 2022

Partager "Partie1:compilationetfonctions TPn 2ProgrammationC(r´evisions) Universit´eParisDiderot–Paris7Programmationr´eseauxL3InformatiqueAnn´ee2011-2012,2 semestre"

Copied!
2
0
0

Texte intégral

(1)

Universit´ e Paris Diderot – Paris 7 Programmation r´ eseaux L3 Informatique Ann´ ee 2011-2012, 2

`eme

semestre

TP n

2

Programmation C (r´ evisions)

Partie 1 : compilation et fonctions

#include <stdio.h>

int main(void) {

printf("Hello World!!!\n");

return 0;}

Ce programme est sauvegard´e dans le fichier hello.c. Pour cr´eer un fichier ex´ecutable, le plus simple consiste en la commande :

$ gcc hello.c

Cette commande effectue l’ensemble des phases de la compilation et cr´ee le fi- chier ex´ecutable a.out. Avec l’option -o nous pouvons sp´ecifier le nom du fichier ex´ecutable :

$ gcc -o hello hello.c

Ici le programme ex´ecutable est hello. Une autre possibilit´e, utile lors de compila- tion s´epar´ee, est de passer par l’interm´ediaire de fichiers objets (*.o) :

$ gcc -c hello.c

$ gcc -o hello hello.o

L’option -Wall permet d’afficher tous les messages de warnings. Il est recommand´e de prendre en compte ces messages afin d’avoir les bonnes habitudes de program- mation en C.

$ gcc -Wall -o hello hello.c Exercice 1

Ecrire un programme qui saisit 2 entiers et affiche successivement la somme , ´ la diff´erence, le produit et le quotient de ces 2 entiers.

Exercice 2

Ecrire un programme retournant la factorielle d’un nombre entier entr´e par ´ l’utilisateur.

1

(2)

Partie 2 : fonction, allocation de m´ emoire et pointeur Exercice 3

Soit P un pointeur qui ’pointe’ sur un tableau A : int A[] = {12, 23, 34, 45, 56, 67, 78, 89, 90};

int *P;

P = A;

Quelles valeurs ou adresses fournissent ces expressions : a) *P+2

b) *(P+2) c) &P+1 d) &A[4]-3 e) A+3

f) P+(*P-10)

g) *(P+*(P+8)-A[7])

Exercice 4

Ecrivez un programme qui utilise la fonction int toInt(char* s) qui convertit la ´ chaˆıne de caract`eres ascii s en un entier. On consid`ere que s repr´esente un nombre entier positif. Utilisez des pointeurs pour impl´ementer cette fonction.

Partie 3 : Big-endian et little-endian

Dans une architecture big-endian, les octets sont conventionnellement num´erot´es de la gauche vers a droite. Dans le mode big endian les octets de poids fort sont plac´es en tˆete et occupent donc des emplacements m´emoire avec des adresses plus petites. Dans une architecture little-endian, c’est le contraire.

Le protocole IP d´efinit un standard, le network byte order (soit ordre des octets du r´eseau). Dans ce protocole, les informations binaires sont en g´en´eral cod´ees en paquets, et envoy´ees sur le r´eseau, l’octet de poids le plus fort en premier, c’est-` a-dire selon le mode big-endian et cela quel que soit l’endianness naturel du processeur hˆ ote.

Exercice 5

Ecrire un programme qui teste si votre machine fonction en Big-endian ou ´ Little-endian. Une solution est de v´erifier l’octet de poids faible d’un entier donn´e.

Exercice 6

Ecrire un programme qui lit un entier (en 32 bit) et qui affiche ¸ca repr´esentation ´ hexad´ecimale en big endian et little endian. Pour cela utilisez une des fonctions vu en cours.

2

Références

Documents relatifs

Pour cela le client demande la d´efinition d’un mot au serveur et celui-ci lui renvoie le texte obtenu par l’appel ` a l’utilitaire dict. Si dict ne trouve pas de d´efinition,

Modi- fiez votre serveur pour que apr`es avoir v´erifi´e que le chemin de la requˆete com- mence par ”/” et ne contient pas la chaˆıne ”/../” 1 , il retourne au client le

Lancez la commande nc avec l’option -l 8080, cela ouvre un serveur sur votre machine locale sur le port 8080.. Tapez une ligne dans

Les hints prennent aussi le forme d’une structure addrinfo : vous pouvez indiquer des restrictions sur le type de socket que vous souhaitez utiliser (si vous n’avez aucune

Pour cela vous pouvez utiliser la commande telnet (usage : telnet machine service o` u service peut ˆetre soit le num´ero de service soit le nom du service)1. D´eterminez le

Ecrivez un programme Java ´ jdaytime qui se connecte au service daytime d’une machine donn´ ee en param` etre et r´ ecup` ere la date pour l’afficher ` a l’´ ecran.. Exercice

L’id´ee est la suivante : un client producteur envoie au serveur une chaˆıne de caract`eres qu’il aura re¸cu par l’entr´ee standard (le clavier), le serveur stocke alors

Lorsqu’il d´etermine que c’est n´ecessaire, le client SNTP envoie au serveur une requˆete sous forme d’un paquet UDP qui contient la date ` a laquelle ce message est transmis..