IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Utilisation de Turbo Pascal 7.0

Passer du langage Pascal au C

Cette série de tutoriels est destinée à aider les débutants à prendre en main Turbo Pascal 7.0.

Dans cette partie, retrouvez l'équivalent en C des éléments du langage Pascal.

2 commentaires Donner une note à l´article (5)

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Langage

Turbo Pascal

C++

Explication

uses NomUnite;

#include <NomUnite>

Utilise une unité

{ Commentaire intégré }
(* Long commentaire *)

/* Commentaire intégré */

Permet d'ajouter un commentaire intégré au code

 

// Commentaire jusqu'à la fin de la ligne

Permet d'ajouter un commentaire en fin de ligne, ou de désactiver un ligne de code

Case VAR of
1: … ;
2: …;
else …;
end;

switch (VAR) {
case 1: …; break;
case 2: …; break;
default: …; break;
}

Tableau des différents cas pour une variable :
1 : Si VAR égal 1 alors …
2 : Si VAR égal 2 alors …
Sinon : …

for i := 1 to 9 do …

for (i=1; i<= 9; i++) …

Boucle de 1 jusqu'à 9 par ajout de 1 à chaque étape

for i := 9 downto 1 do …

for (i=9; 1 <=i; i--) …

Boucle de 9 à 1 par soustraction de 1 à chaque étape

i := 1;
repeat
inc (i,2);
until 9<=i;

for (i=1; i<= 9; i += 2)

Boucle de 1 à 9 par ajout de 2 à chaque étape

sizeof (a);

sizeof (a);

Renvoie la taille d'une variable

if COND then begin
  instructionA1;
  instructionA2;
end else begin
  instructionB1;
  instructionB2;
end;

COND ? instructionA1; instructionA2; : instructionB1; instructionB2;

Si COND est vrai alors exécute les instructions A1, A2, … ; sinon exécute les instructions B1, B2, …

II. Types

Turbo Pascal

C++

Explication

var char a;

unsigned char a;

Déclare le caractère "a" (valeur entre 0 et 255)

var byte a;

unsigned char a;

Déclare l'octet "a" (valeur entre 0 et 255)

var shortint a;

char a;

Déclare l'octet signé "a" (valeur entre -127 et 128)

var word a;

unsigned int a;

Déclare le mot "a" (valeur entre 0 et 65 535)

var integer a;

int a;

Déclare le mot signé "a" (valeur entre -32 768 et 32 767)

X

unsigned long a;

Déclare le double-mot "a" (valeur entre 0 et "4 294 967 295")
Remarque: N'existe pas en Turbo Pascal !

var long a;

long a;

Déclare le double-mot signé "a" (valeur entre "-2 147 483 648" et "2 147 483 647")

var single a;

float a;

Déclare la variable "a" de type virgule flottante sur 32 bits (valeur entre "-3,4 x10^38" et "3,4 x10^-38", précision sur 7 chiffres)

var double a;

double a;

Déclare la variable "a" de type virgule flottante sur 64 bits (valeur entre "1,7 x10^308" et "3,4 x10^-308", précision sur 15 chiffres)

var extended a;

long double a;

Déclare la variable "a" de type virgule flottante sur 80 bits (valeur entre "3,4 x10^4932" et "1,1 x10^-4932", précision sur 19 chiffres)

const a = 10;

#DEFINE a 10

Déclare la constante "a" stockant le nombre 10

const a = "abc";

#DEFINE a "abc"

Déclare la constante "a" stockant la chaîne "abc"

a = ord( b);

a = (char) b;

Copie la valeur ASCII du caractère "b" dans "a"

a = word( b);

a = (unsigned int) b;

Copie la valeur "b" dans le format mot non signé dans "a"

p := addr( a);

p = & a;

Copie l'adresse de "a" dans le pointeur "p"

a = ptr(p);
???

a = * p ;

Copie l'adresse du pointeur "p" dans "a"

a := $ F54B;

a = 0x F54B;

Stocke le nombre hexadécimal F545B h dans "a"

III. Tests

Turbo Pascal

C++

Explication

if CAS1 and CAS2 then

if (CAS1 && CAS2)

si le CAS1 est vrai ET le CAS2 est vrai

if CAS1 or CAS2 then

if (CAS1 || CAS2)
(double-barre verticale, touche ALT+6)

si le CAS1 est vrai OU le CAS2 est vrai

if CAS1=FALSE then

if (!CAS1)

si le CAS2 est faux

if a = b then

if (a == b)
(deux « égal »)

si a égale b

if a < b then

if (a < b)

si a est inférieur à b

if a <= b then

if (a <= b)

si a est inférieur ou égal à b

IV. Fonctions mathématiques

Turbo Pascal

C++

Explication

inc (a);

a++;

Ajoute un à la valeur "a"

inc (a, b);

a+= b ;

Ajoute la valeur "b" à "a"

dec (a);

a--;

Soustrait un à "a"

dec (a, b);

a-= b ;

Soustrait la valeur "b" à "a"

a := b *c;

a = b *c;

Multiplication

a := a *b;

a*=b ;

Écrit "a" multiplié par "b" dans "a"

a := b div c;

a = b /c;

Division entière

a := a div b;

a/=b ;

Divise "a" par "b"

a := b modc;

a = b %c;

Écrit le reste de la division de "b" par "c" dans "a"

a := a mod b;

a%=b ;

Écrit le reste de la division de "a" par "b" dans "a"

a := b and c;

a = b &c;

"et"

a := a and b;

a &= b;

Écrit "a" AND "b" dans "a"

a := b orc;

a = b | c;
(trait vertical, touche ALT+6)

"ou"

a := a or b;

a|=b ;

Écrit "a" OR "b" dans "a"

a := b xor c;

a := b ^ c;

"ou exclusif"

a := a xor b;

a^=b ;

Écrit "a" XOR "b" dans "a"

a := b shr n;

a = b >> n;

Décalage binaire vers la gauche (division par 2^ n) de "b"

a := a shr n;

a>>= n;

Écrit le décalage binaire de "n" bits vers la gauche de "a" dans "a"

a := b shl n;

a = b << n;

Décalage binaire vers la droite (multiplication par 2^ n) de "b"

a := a shl n;

a<<= n;

Écrit le décalage binaire de "n" bits vers la droite "a" dans "a"

a := not (b);

a := ~ b;
(touche ALT+2)

Écrit le complément de "b" dans "a" (inverse tous les bits).

V. Mémoire

En C : pour afficher du texte dans une application console, il faut utiliser l'unité stdlib.h. Ajoutez la ligne "#include <stdlib.h>" au début de votre programme.

Turbo Pascal

C++

Explication

getmem (p, taille );

p = malloc ( taille );

Alloue un espace mémoire de "taille" octets et stocke le pointeur dans "p"

dispose (p);

free(p);

Libère la mémoire allouée qui était pointée par "p"

move (src,dst, taille);

memcpy (dst, src,taille);

Copie les "taille" octets de "src" dans "dst"

VI. Chaînes de caractères

En C : pour afficher du texte dans une application console, il faut utiliser l'unité stdio.h. Ajoutez la ligne "#include <stdio.h>" au début de votre programme.

Turbo Pascal

C++

Explication

var a: string [10];

char a [10+1];

Déclare la chaîne "a" ayant une longueur maximale de 10 caractères
Remarque : en C, il faut faire +1 pour pouvoir écrire le zéro terminal

a := length(txt);

a = strlen (txt);

Écrit la longueur du texte "txt" dans le nombre "a"

a[1] := 'g';

a[0] = 'g'; 

Écrit le caractère 'g' dans le premier octet de la chaîne 'a'

a := ' Salut';

strcpy (a, "Salut"); 

Écrit la chaîne "Salut" sans la chaîne "a"

a := b;

strcpy (a, b);

Écrit la chaîne "b" dans la chaîne "a" 

Write ("Allo ?");

printf ("Allo ?");

Écrit le texte "Allo ?"

Writeln ("Bonjour !");

printf ("Bonjour !\n");

Écrit le texte "Bonjour !", puis revient à la ligne

Writeln ("Nombre = ", nbr);

printf ("Nombre = %d\n", nbr);

Écrit le texte "Nombre = nbr" incluant le nombre "nbr", puis revient à la ligne

Writeln ("a=", A," b=", B , " et c=", C);

printf ("a=%d b=%d c=%d\n ", A, B,C);

Écrit le texte "a=A b=B c=C" incluant les trois nombres "A", "B" et "C", puis revient à la ligne

Writeln ("Texte = ", txt);

printf ("Texte = %s\n ",txt);

Écrit le texte "Texte = txt" incluant le texte "txt", puis revient à la ligne

Caractères spéciaux en C++ :

\a

Émet un bip sonore

\b

Retour en arrière d'un caractère

\f

Saut de page

\n

Retour à la ligne

\r

Revient au début de la ligne

\t

Tabulation

\v

Descend d'une ligne

\\

Écrit le caractère « \ »

\"

Écrit le caractère « " »

\'

Écrit le caractère « ' »

\?

Écrit le caractère « ? »

/000

Écrit le caractère ASCII en code octal (sur base 8)

/x000

Écrit le caractère ASCII en code hexadécimal (sur base 16)

Code pour afficher des nombres avec printf en C :

%c

Un caractère

%s

Chaîne de caractères

%d

Entier

%ld

Entier long

%f

Nombre réel float

%lf

Nombre réel double

%Lf

Nombre réel long double

%p

Pointeur

VII. Accès aux fichiers

En C++ : pour afficher du texte dans une application console, il faut utiliser l'unité stdio.h. Ajoutez la ligne "#include <stdio.h>" au début de votre programme. En bonus : "#include <errno.h>" permet d'accéder à la dernière erreur.

Turbo Pascal

C++

Explication

const nomfich = "test.txt";
Var F: File;
Var Erreur: Integer;

{$I-}
Assign (F, "test.txt");
FileMode := 0;
Reset (F, 1);
{$I+}

Erreur := IOResult;
If Erreur<>0 then
Writeln ('Erreur d'ouverture du fichier "',nom,'" : erreur ",Erreur);

const char *nomfich = "test.txt";
FILE *F;



F = fopen (nomfich,"r");





if (F == NULL)
printf ("Erreur d'ouverture du fichier '%s' : erreur %i\n",nom,errno);

Ouvre le fichier "test.txt" en lecture seule avec gestion des erreurs

Note : Changer "FileMode := 0;" en "FileMode := 1;" (Pascal) ou "r" en "w" pour l'ouvrir en écriture seule. Ou bien "FileMode := 2;" (Pascal) et "rw" (C) pour la lecture+écriture

Note : IOResult (Pascal) / errno (C) = code de la dernière erreur d'entrée/sortie

Append (F);

append (F);

Se positionne à la fin d'un fichier ouvert pour pouvoir rajouter des octets

a := Read (F);

a = fgetc (F);

Lit un caractère

Write (F, a);

fputc (F, a);

Écrit le caractère "a"

var Ligne: String;
Ligne := ReadLn(F);

#define LongMax 80
char Ligne[LongMax+1];
fgets (F, LongMax+1, Ligne);

Lit une ligne de texte
Le C ajoute une limite : LongMax caractères au maximum (+1 pour le zéro terminal)

const txt = "test";
Writeln (F,txt);

const char *txt = "test";
fputs (F, txt);

Écrit une ligne de texte

BlockRead (F, Tampon, taille); 

fread (Tampon, taille,1,F);

Lit taille octets

BlockWrite (F, Tampon, taille);

fwrite (Tampon, taille,1,F);

Écrit taille octets

Seek (F, pos);

fseek (F, pos);

Positionne le curseur du fichier de handle "F" à la position "pos"

a := FilePos(F);

a := ftell (F);

Lit la position du fichier de handle "F" et la stocke dans "a"

Close (F);

fclose (F);

Ferme le fichier de handle "F"

VIII. Remerciements

Merci à Claude LELOUP pour ses corrections.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2001-2016 haypo. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.