Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Teoria capítol 3, Apuntes de Introducción a la Informática

Asignatura: Fonaments d'informàtica, Profesor: , Carrera: Enginyeria en Electrònica Industrial i Automàtica (GEI), Universidad: UAB

Tipo: Apuntes

Antes del 2010

Subido el 30/07/2008

sergiprc
sergiprc 🇪🇸

4

(29)

494 documentos

1 / 14

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Fonaments d'informàtica
3. Dades
Índex del tema
Objectius..................................................................................................................................1
3.1. Què es una dada? ...........................................................................................................1
3.2. Tipus de dades..................................................................................................................2
3.3. Variables i constants.........................................................................................................3
3.3.1. Identificadors.............................................................................................................4
3.3.2. Declaració de variables.............................................................................................5
3.3.3. Constants..................................................................................................................6
3.4. Tipus de dades enumerats i subrangs.............................................................................8
3.4.1. Enumerats.................................................................................................................8
3.4.2. Subrangs...................................................................................................................9
3.5. Expressions.......................................................................................................................9
3.5.1. Definicions.................................................................................................................9
3.5.2. Tipus de dades de les expressions.........................................................................12
3.5.3. Prioritat i associativitat............................................................................................12
3.5.4. Coercions i moldejat................................................................................................14
Objectius
1. Saber què és una dada.
2. Conèixer el concepte de tipus de dades.
3. Saber els tipus de dades predefinits de Pascal i pseudocodi.
4. Saber escriure correctament expressions matemàtiques en Pascal i pseudocodi.
5. Saber definir constants i variables en Pascal i pseudocodi.
6. Conèixer els operadors de Pascal i pseudocodi.
3.1. Què es una dada?
Ja hem dit que en un programa és tant important l'algoritme, com es resol, com una bona estructura
de dades. El com emmagatzemem les informacions que necessita l'algoritme pot simplificar o
complicar l'algoritme.
Per arribar a poder definir estructures de dades correctes hem de començar per les més simples que
els llenguatges de programació porten incorporades.
Abans, però, definim uns conceptes previs.
Una dada és la representació d'una informació del món real.
Els nostres problemes treballen amb informacions. Programar consistirà en trobar el mètode de
resolució i la manera de representar les informacions en dades que s'emmagatzemen i es tracten en
un ordinador.
Del funcionament de l'ordinador, que hem vist al capítol 1, podem deduir que les informacions que
són de tipus numèric un ordinador les podrà tractar fàcilment. Ja que un ordinador és una màquina
fonamentalment numèrica.
La resta d'informacions, com poden ser formes, colors, caràcters, texts, etc. les haurem de convertir
en dades que físicament emmagatzemen números, però que el nostre programa interpretarà com a
formes, colors, etc.
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Vista previa parcial del texto

¡Descarga Teoria capítol 3 y más Apuntes en PDF de Introducción a la Informática solo en Docsity!

Fonaments d'informàtica

3. Dades

Índex del tema

Objectius.................................................................................................................................. 1 3.1. Què es una dada? ........................................................................................................... 1 3.2. Tipus de dades.................................................................................................................. 2 3.3. Variables i constants......................................................................................................... 3 3.3.1. Identificadors............................................................................................................. 4 3.3.2. Declaració de variables............................................................................................. 5 3.3.3. Constants.................................................................................................................. 6 3.4. Tipus de dades enumerats i subrangs............................................................................. 8 3.4.1. Enumerats................................................................................................................. 8 3.4.2. Subrangs................................................................................................................... 9 3.5. Expressions....................................................................................................................... 9 3.5.1. Definicions................................................................................................................. 9 3.5.2. Tipus de dades de les expressions......................................................................... 12 3.5.3. Prioritat i associativitat............................................................................................ 12 3.5.4. Coercions i moldejat................................................................................................ 14

Objectius

1. Saber què és una dada.

2. Conèixer el concepte de tipus de dades.

3. Saber els tipus de dades predefinits de Pascal i pseudocodi.

4. Saber escriure correctament expressions matemàtiques en Pascal i pseudocodi.

5. Saber definir constants i variables en Pascal i pseudocodi.

6. Conèixer els operadors de Pascal i pseudocodi.

3.1. Què es una dada?

Ja hem dit que en un programa és tant important l'algoritme, com es resol, com una bona estructura

de dades. El com emmagatzemem les informacions que necessita l'algoritme pot simplificar o

complicar l'algoritme.

Per arribar a poder definir estructures de dades correctes hem de començar per les més simples que

els llenguatges de programació porten incorporades.

Abans, però, definim uns conceptes previs.

Una dada és la representació d'una informació del món real.

Els nostres problemes treballen amb informacions. Programar consistirà en trobar el mètode de

resolució i la manera de representar les informacions en dades que s'emmagatzemen i es tracten en

un ordinador.

Del funcionament de l'ordinador, que hem vist al capítol 1, podem deduir que les informacions que

són de tipus numèric un ordinador les podrà tractar fàcilment. Ja que un ordinador és una màquina

fonamentalment numèrica.

La resta d'informacions, com poden ser formes, colors, caràcters, texts, etc. les haurem de convertir

en dades que físicament emmagatzemen números, però que el nostre programa interpretarà com a

formes, colors, etc.

Dades

Les dades les podem classificar en diferent tipus, aquestes agrupacions les

denominarem tipus de dades.

Els llenguatges de programació incorporen tipus de dades predefinits.

3.2. Tipus de dades

Donem ara una definició més precisa de tipus de dades.

Un tipus de dada és una manera de representar la informació en un

ordinador. Segons com es representa una dada tindrem un rangs de valors

que es poden emmagatzemar a la mateixa.

S'ha de tenir en conte que en un ordinador no podem tenir classes de dades amb rangs de valors

infinits com en el món de les matemàtiques.

Els llenguatges de programació defineixen les operacions aritmètiques o lògiques que es poden

realitzar amb aquestes representacions.

Resumint, podem dir que un tipus de dades és:

  • Un marge de valors possibles.
  • Un conjunt d'operacions que es poden tenir aquest tipus de dades com a operands.
  • La forma de representar a memòria la dada.

Per exemple, el tipus de dades integer de Pascal vol dir:

  • Representació en memòria: es fan servir dos bytes consecutius de memòria i

s'emmagatzema el número en binari en complement a dos, per a poder representar

números negatius.

  • Operacions: +, -, /, *, DIV, MOD, <, >, <>, >=, <=, =, **, -, Y, O, NO
  • marge de valors: números del conjunt dels enters compresos entre -32768 i 32767 ambdós

inclosos.

Els llenguatges de programació ens donen mecanismes per crear els nostres propis tipus de dades, i

un conjunt de tipus de dades bàsics. Aquests últims els veurem ara, tant en el cas de pseudocodi

com en el cas de Pascal.

Com pseudocodi és un llenguatge de programació fictici no tindrem que preocupar-nos del marge de

valors i s'assemblaran als conjunts de números de les matemàtiques. A la taula 1 trobem els tipus

de dades de pseudocodi.

Tipus de dades marge de valors Operacions

Natural Conjunt N : des de 0 fins a + +, - , /, *, DIV, MOD, <, >, ≠, ≤, ≥, =, **, Y, O,

OE, EQV, IMP, NO

Enter Conjunt Z : des de - fins a + +, - , /, *, DIV, MOD, <, >, ≠, ≤, ≥, =, **, -, Y,

O, OEX, NO

Real Conjunt R : des de - fins a + +, -, /, *, <, >, ≠, ≤, ≥, =, **, -

Caràcter Conjunt de tots els caràcters possibles.

Lògic Fals, cert Y, O, OEX, NO Cadena[n] Conjunt de totes les cadenes de caràcters que es poden formar amb els caràcters i que tenen longitud des de 0 fins a n.

Taula 1 Tipus de dades en pseudocodi

Dades

Les constants només es diferencien de les variables en que el llenguatge de programació no ens

permet modificar el seu valor un cop definida. Dins les constants podem distingir dos tipus: les

anònimes o literals i les constants amb nom.

Els literals són aquells valors que apareixen a l'escriptura del programa. Les constants amb nom són

constants que han de ser definides, a l'igual que les variables, i que permeten augmentar la

llegibilitat del codi.

Podem veure gràficament una variable com una capsa on podem guardar un valor adequat a la

capsa. La capsa tindrà un nom que ens permetrà identificar-la d'entre totes les que manega el

programa.

Què vol dir que el valor ha de ser adequat a la capsa? O, què vol dir que el valor ha de ser adequat a

la variable?

El programa, per poder fer servir una variable, haurà, en primer lloc, de dir com és, és a dir, quin

tipus de dades guardarem en ella. Com la variable serà d'un tipus de dades concret, el valor que

s'emmagatzemi haurà de pertànyer al marge de valor del tipus de dades.

3.3.1. Identificadors

Tant les variables, com les constants amb nom, han de tenir nom. Aquest nom, que anomenarem

identificador, ha de complir les normes del llenguatge per a la creació d'identificadors correctes.

En pseudocodi no tindrem gaires restriccions ni normes, si no més aviat recomanacions. Bàsicament

cal recordar que es millor que el nom comencí per un caràcter no numèric i que no sigui una paraula

reservada.

Una paraula reservada és un identificador que té sentit en el llenguatge que fem servir. Per exemple,

si tenim un tipus de dades que s'anomena Real, serà millor que no donem aquest nom a una

variable per evitar confusions.

Diguem ara les normes bàsiques que ens trobarem en Pascal (cal consultar el manual de cada

compilador en particular per possibles variacions):

  • Els caràcters vàlids per a formar identificadors són les lletres de l’alfabet anglès, els dígits i

el caràcter subratllat ‘_’. Això exclou lletres com ‘ç’, ‘ñ’ i vocals accentuades, així com

d'altres símbols.

  • No es diferencien majúscules de minúscules. Així ‘nom’ i ‘Nom’ seran dos identificadors

idèntics.

  • No es pot utilitzar una paraula reservada a altre fi en el llenguatge com a identificador d’una

variable. Com per exemple integer, real, while, for , etc.

  • No es pot començar per dígit.
  • Son significatius els 255 primers caràcters. La resta de caràcters s'ignoren.

A més de les limitacions que ens dona el llenguatge, és bo seguir els següents consells pràctics:

El nom ha de ser el més identificatiu possible respecte del valor que emmagatzema. Per exemple, és

millor Saldo que X.

Identificador correctes Identificadors incorrectes A 3X Saldo Edat. Saldo_Acreedor Edat- _Num AquestNomD'IdentificadorTéApòstrofiAccents _23X No Valid Edat12 NoVàlid AquestNomDIdentificadorTeMesDe10Lletres Preu$ Taula 3 Exemples d'identificadors correctes i incorrectes

Fonaments d'informàtica

Si el nom ha de tenir més d'una paraula podem fer servir alguns dels següents criteris: separar les

paraules amb el caràcter '_' ( saldo_acreedor, nota_mitja_alumne ), o bé, posar en majúscula la

primera lletra de cada paraula ( SaldoAcreedor, NotaMitjaAlumne ).

Si el nom resultant ha de ser molt llarg podem abreujar les paraules a tres o quatre caràcters

( SalAcr , NotMitAlu ).

Podem fer servir l'anomenada notació hongaresa , que consisteix en que els primers caràcters

identifiquin el tipus de dades de la variable. Això vol dir que per cada tipus de dades utilitzat en el

programa hi haurà un identificador de una o dues lletres que escriurem en minúscules. Per exemple

tindrem iSaldoAcreedor, rNotaMitjaAlumne (i és integer i r és real)

3.3.2. Declaració de variables

Segons el llenguatge que utilitzem, abans de utilitzar una variable en un programa, haurem de

definir-la o de declarar-la. D'aquesta manera assignem a la variable un nom i indiquem quin tipus de

dades emmagatzemarà. Aquest és el cas del llenguatge Pascal.

Les variables es defineixen dins de blocs específics de definició de variables que els llenguatge

preveuen per a aquesta finalitat.

Per explicar la sintaxi d'un llenguatge de programació (és a dir, les normes d'escriptura de les

instruccions, definicions, etc. del llenguatge) farem servir una simbologia, anomenada BNF, que està

explicada a l'annex A.

Declaració de variables en pseudocodi

var

{< nom >[{,< nom >}...] {és | són} < tipus >}...

fvar

On < tipus > pot ser qualsevol tipus de dades definit del llenguatge o bé hagi estat definit prèviament

pel programador. I < nom > és un identificador vàlid.

A l'exemple 1 tenim un bloc de definició de variables en pseudocodi.

Declaració de variables en Pascal

var

{< nom >[{,< nom >}...] : < tipus >;}...

Com es pot observar, el bloc comença amb var però no té cap marca de final. Es considera que

acaba quan comenci un altre bloc.

En el moment de la declaració, el llenguatge no ens garantitza que aquesta ja tingui un valor

predeterminat inicial. Per tant una variable declarada que mai se li ha assignat un valor té un valor

desconegut.

A l'exemple 2 tenim les mateixes variables de l'exemple 1 escrites en Pascal.

var Saldo és Enter Pes és Real Nom és Cadena Teléfon és Cadena[9] Lletra és Caràcter Sol1, Sol2 són Real fvar Exemple 1 Definició de variables en pseudocodi var Saldo : integer; Pes: real; Nom : string; Teléfon :string[9]; Lletra : char; Sol1, Sol2 : real; Exemple 2 Definició de variables en pascal

Fonaments d'informàtica

Per a identificar caràcters especials fem servir el codi ASCII del caràcter (a l'annex B tenim la taula

ASCII) precedit del caràcter #. A la taula 5 tenim uns quants exemples de caràcters especials.

Literals en pseudocodi

Les normes de pseudocodi per als literals són les següents:

  • Els números sense decimals són considerats com a enter i es poder escriure en 4 sistemes de

numeració:

  • Decimal: Utilitza els dígits del 0 al 9.
  • Binari: Per a indicar un nombre en binari afegim una 'b' al final.
  • Octal: Per indicar un nombre en octal afegim una 'o' al final.
  • Hexadecimal: Per a indicar un nombre en hexadecimal afegim una 'h' al final.
  • Els números en format exponencial i els que porten el punt decimal són considerats com a reals.
  • Els caràcters situats entre cometes simples són de tipus caràcter.
  • Els caràcters situats entre cometes dobles són considerats cadenes de caràcters.

Per a identificar caràcters especials ho farem igual que en Pascal per raons de simplificació.

Definició de constants

Com ja hem dit entendrem per constants les constant a les que els hi hem donat nom. Per donar-lis

nom hem de definir-les.

Per què volem donar nom a les constants? Les constants amb nom són útils per definir valors que

s’utilitzaran al llarg d’un programa i que seran repetitius i susceptibles de modificació per a

l’elaboració d’un nou programa. Gràcies a elles, podrem variar tot el programa canviant únicament la

Caràcter Descripció Caràcter en Pascal NULL Caràcter nul # BS Backspace. Caràcter enrere esborrant # FF Form Feed. En una impressora, saltar a l'inici de la propera pàgina

CR Carry Retorn. Tornar a l'inici de la línia # LF Line Feed. Saltar a la següent línia # HT Horizontal Tab. Següent posició de tabulació # BEL Bell. Fa sonar la campana de l'ordinador # ' Cometa simple # ESC Escape. Tecla de cancel·lació, sortida, etc # Taula 5 Exemples de literals Literal Sistema de numeració Tipus de dada 3 -32 234 0 Decimal Enter 10001b 0010011101b Binari enter 13o -56o Octal enter 13h -f8a9h Hexadecimal Enter 3.0 -3.454e-2 Decimal real 'a' 'g' 'D' '9' Caràcter “Hola” “” “ prog “ “9” Cadena de caràcters Taula 6 Exemples de literals en pseudocodi

Dades

definició i tornant-lo a compilar per a generar un nou codi màquina. També es poden utilitzar per

afegir claredat a la lectura del programa.

Definició de constants en Pascal.

Les constants en Pascal es declaren dins del bloc anomenat const.

A la definició es pot indicar el tipus o no. Si no es fa s'agafa el tipus per defecte de la mateixa

manera que amb els literals.

const

{< nom > [: < tipus >] = < expressió >;}...

Encara que no hem parlat del que són les expressions , es pot intuïr el que fan i pel que serveixen

veient l'última constant definida a l'exemple 3.

Com es pot observar, els noms de totes les constants estan escrits en majúscules. Això no és

obligatori però facilita distingir ràpidament les variables de les constants.

Definició de constants en pseudocodi.

En pseudocodi tenim el bloc de constants delimitat per const i fconst.

const

{< nom > és < tipus > = < expressió >;}...

fconst

3.4. Tipus de dades enumerats i subrangs 3.4.1. Enumerats

Els tipus de dades enumerats són conjunts ordenats de constants amb

nom, definides per l'usuari.

La sintaxi per definir enumeracions, tant en Pascal com en pseudocodi, és la següent:

(< identificador > {, < identificador >}...)

Les constants no han de ser declarades prèviament, queden definides com a enteres i el seu valor

és assignat seguint l'ordre d'aparició començant des de zero.

Segons l'exemple 5 dilluns serà una constant entera amb valor 0, dimarts valdrà 1, i així

successivament.

const PI = 3.14151692; E : double = 2.71828182; MAX = 100; SALUTACIO = 'Hola'; TOTAL : integer = MAX * 6; Exemple 3 Definició de constants en pascal const PI és real ← 3, E és real ← 2, MAX és enter ← 100 SALUTACIO és cadena ← "Hola" TOTAL és enter ← MAX * 6 fconst Exemple 4 Definició de constants en pseudocodi

Dades

Operador Pascal Operador Pseudocodi Nombre operands i tipus Intern/Extern i tipus del resultat Funcionalitat Descripció

    • Unari / Tipus numèrics Intern Aritmètic Canvi de signe
    • Unari / Tipus numèrics Intern Aritmètic Signe
    • Binari / Tipus numèrics Intern Aritmètic Suma
    • Binari / Tipus numèrics Intern Aritmètic Resta
    • Binari / Tipus numèrics Intern Aritmètic Producte / / Binari / Tipus numèrics Extern / Real Aritmètic Divisió real DIV DIV Binari / Tipus enters i naturals Intern Aritmètic Divisió entera MOD MOD Binari / Tipus enters i naturals Intern Aritmètic Mòdul (resta de la divisió) ** ** Binari / Tipus enters i naturals Intern Aritmètic Elevat a < < Binari / Qualsevol Extern / Lògic Relacional Menor

Binari / Qualsevol Extern / Lògic Relacional Major <> ≠ Binari / Qualsevol Extern / Lògic Relacional Diferent = = Binari / Qualsevol Extern / Lògic Relacional Igual <= ≤ Binari / Qualsevol Extern / Lògic Relacional Menor o igual = ≥ Binari / Qualsevol Extern / Lògic Relacional Major o igual NOT NO Unari / Lògic i enters Intern Lògic Negació AND Y Binari / Lògic i enters Intern Lògic Y lògica OR O Binari / Lògic i enters Intern Lògic O Lògica XOR OEX Binari / Lògic i enters Intern Lògic O exclusiva lògica EQV Binari / Lògic Intern Lògic Equivalènt IMP Binari / Lògic Intern Lògic Implica Taula 7 Operadors en Pascal i Pseudocodi Edat -Deure A * - 4 -4 Base * Altura / 2

'C' NO HaVingut HaVingut Y No HaAcabat PI * R ** 2 NO Edat > 18 Edat > 24 Cert +Edat (Edat ≥ 18) Y (Edat <100) Exemple 7 Expressions correctes en pseudocodi

  • -Deure Y / O HaAcabat A + Edat HaVingut * Base * / Altura A + *5 NO Y HaAcabat HaVingut O No A > B, C < D (^) NO > Edat Exemple 8 Expressions incorrectes en pseudocodi Var A : integer; B : integer; C : real; Expressions: (1) A * B (2) B * C Exemple 9 Expressions en Pascal

Fonaments d'informàtica

  • Pel tipus de dades del resultat
    • Interns: el resultat és del mateix tipus de dades dels operands
    • Externs: el resultat pot ser d'un tipus de dades diferent del dels operands.
  • Per la seva funcionalitat
    • Aritmètics: realitzant càlculs de la aritmètica.
    • Lògics: fan càlculs de la lògica matemàtica.
    • Relacionals: Comproven la relació existent entre els operands. Són operadors externs.

Els operadors aritmètics i els relacionals els coneixem bé. Potser no siguin tant coneguts els

operadors lògics. Donem a la il·lustració 1 les taules de la veritat dels operadors lògics perquè

coneguem com funcionen. La taula de la veritat és una taula on es mostra el resultat de l'operador en

funció del valor del dos operands. Alerta que l'últim operador, el NOT, és unari.

S'ha de tenir en compte que els operadors lògics es poden utilitzar amb operands lògics i funcionen

com diuen les taules de la veritat. Però, també es poden utilitzar amb operands enters, llavors

l'operació lògica es realitza bit a bit, sent el resultat un número enter i no cert o fals. A l'exemple 10

tenim dos exemples per explicar aquesta diferència.

A la taula 7 trobem tots els operadors^1 , tant en pseudocodi com en Pascal indicant la seva tipologia.

Habitualment no trobem els operadors sols, si no formant combinacions entre més d'un d'ells amb

els operands corresponents. Aquestes combinacions les anomenarem expressions.

Una expressió és una seqüència de variables, constants i operadors que,

estant correctament escrita, pot avaluar-se, donant un resultat que

pertanyerà a un tipus de dades o una altre en funció dels operadors i el

tipus de dades dels operands.

És important destacar que les expressions han d'estar escrites correctament segons les normes

sintàctiques del llenguatge. No insistirem gaire en elles ja que, bàsicament, ens diuen com ubicar

l'operador i l'operand en funció de si és unari o binari.

El que crida més l'atenció, acostumats com estem a les expressions matemàtiques, es que hem

d'escriure-les en una única línia de text.

(^1) Pascal té més operadors dels que mostra la taula. Per una informació més completa consulteu el manual de referència del llenguatge. Op1 Op2 AND OR XOR EQV IMP NOT op False False False False False True True True False True False True True False True True False False True True False False False True True True True False True True Il·lustració 1 Taules de la veritat dels operadors lògics Si tenim la següent definició de variables Var A,B : shortint; C,D : boolean; On les variables A,B,C i D valen 3, 16, True i False respectivament. El resultat de l'operació: C OR D serà True El resultat de l'operació: A OR B serà 19 ja que 00000011 (número 3 en binari) OR 00010000 (número 16 en binari)


00010011 (número 19 en binari) Exemple 10 Expressions lògiques en Pascal

Fonaments d'informàtica

Com podem observar, hem introduït dos nous operadors el ' ( ' i el ' ) ' necessaris per trencar la prioritat

per defecte dels operadors.

Posant en pràctica aquesta taula de prioritats tenim que l'expressió matemàtica

a b c

en Pascal s'ha

d'escriure de la forma (a+b)/c. Ja que al ser l'operador divisió més prioritari que la suma, l'expressió

sense parèntesi primer dividiria b entre c i el resultat seria sumat a a.

Associativitat

L'associativitat defineix per on es comença a avaluar una expressió, si va d'esquerra a dreta, o bé,

de dreta a esquerra.

L'associativitat ens ajuda, en el cas que dos operadors consecutius tinguin la mateixa prioritat, a

saber quin dels dos s'avaluarà primer.

Així, l'expressió a*b DIV c s'avaluarà segons l'associativitat:

  • D'esquerra a dreta: en primer lloc s'avalua a*b i el resultat es divideix per c.
  • De dreta a esquerra: s'avalua b DIV c i el resultat es multiplica per a.

En el cas de Pascal i de Pseudocodi l'associativitat és d'esquerra a dreta de forma habitual. En cas

contrari ho indicarem explícitament.

A l'igual que amb la prioritat, podem modificar l'associativitat amb els parèntesi.

Prioritat Operadors Major Menor

Not **

  • (unari), + (unari) *, /, Div, Mod, And, +, -, Or, XOr <, >, <=, >=, <>, = Taula 8 Taula de prioritats de Pascal

a b

c z

a b

×

× +

C * (a * b) / (a + b) + z

a

v

b c

a f

×

Sqrt( (a / (b + c) + v) / (a * f))

a £ b Ù c £ b (a <= b) And (c <= b)

b b ac

a

  • ± - Produeix dues expressions: (-b + sqrt(b2 – 4ac)) / (2a) (-b - sqrt(b2 – 4ac)) / (2a)

e f a

d

c

a b c

x

((a+b)c+3)/(10+cd/((e+f)*a)) Exemple 12 Exemples d'expressions matemàtiques escrites en Pascal

Dades

3.5.4. Coercions i moldejat

Ja hem dit que els operadors binaris necessiten que els dos operands siguin del mateix tipus de

dades. Això és així, per que l'operador està definit en aquest cas ni no en d'altres. És a dir, l'operador

'+' existeix en Pascal entre dos integer , entre dos long , entre dos single , etc. Però no està definit per

sumar un integer amb un single , ni al revés, ni un long amb un integer , ni al revés.

Què passa amb aquests casos?

En aquest casos es posa en marxa un mecanisme anomenat coerció.

La coerció és un canvi de tipus de dades automàtic.

El que fa el compilador és convertir un o ambdós operands de tipus de dades per que ambdós siguin

del mateix tipus.

Cada llenguatge de programació té les seves coercions i de vegades, inclús, depenen de cada

compilador.

En Pascal si els dos operands són del mateix tipus (ja siguin naturals, enters, reals, etc.) els càlculs

es fan en tipus de dades de major precissió de la mateixa categoria ( qword , int64 , extended , etc.).

Si un dels dos operands es real els dos operands es transformen a extended.

En pseudocodi si un dels operadors és real l'altre es converteix també a real.

Pot passar que les coercions no siguin els canvis de tipus que ens convinguin. En aquests casos

podem fer el que s'anomena moldejat, és a dir, un canvi de tipus explícit per part del programador.

En Pascal i pseudocodi tenim la següent sintaxi pel moldejat.

< tipus >(< expressió >)

S'ha de tenir en conte que en pseudocodi no hi ha restriccions per a la conversió de tipus. En Pascal,

però, cada compilador imposa les seves restriccions. A FreePascal la restricció és que la mida del

tipus de dades de l'expressió ha de ser igual al tamany del tipus.

També podem fer canvis de tipus de dades fen servir funcions predefinides del llenguatge. Aquestes

funcions seran tractades al capítol de funcions predefinides.

Real(45) Enter(3,5) Natural(23) Enter('A') Exemple 13 Exemples de moldejat en pseudocodi Correctes Incorrectes Byte('A') Integer('A') Char(48) Char(3635) Boolean(1) Boolean(100) Exemple 14 Exemples de moldejat en Pascal