09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

3.7. El tipo de una expresión 43<br />

3.7 El tipo de una expresión<br />

El resultado de cada expresión ti<strong>en</strong>e un tipo determinado, indep<strong>en</strong>di<strong>en</strong>te<br />

de su valor, y que puede conocerse aun ignorando los valores de sus elem<strong>en</strong>tos<br />

compon<strong>en</strong>tes, t<strong>en</strong>i<strong>en</strong>do <strong>en</strong> cu<strong>en</strong>ta sólo sus tipos. Así por ejemplo, pued<strong>en</strong><br />

existir expresiones numéricas, bi<strong>en</strong> <strong>en</strong>teras (como 2 + 3) o reales (como 3.14<br />

* Sqr(2.5) por ejemplo), booleanas (como 2 + 2 = 5) y de caracteres (como<br />

Succ(’a’)).<br />

La información sobre el tipo de una expresión (y el de sus subexpresiones<br />

compon<strong>en</strong>tes) juega <strong>en</strong> <strong>Pascal</strong> un importante papel: una vez escrito un programa,<br />

el compilador comprueba que las expresiones que intervi<strong>en</strong><strong>en</strong> <strong>en</strong> él son<br />

correctas sintácticam<strong>en</strong>te y que los tipos de las compon<strong>en</strong>tes de las mismas son<br />

consist<strong>en</strong>tes. Por ejemplo, la expresión sigui<strong>en</strong>te podría ser analizada así:<br />

( (6 + 8) * 3.14 < Ord ( ’a’ ) ) or True<br />

( (Z + Z) * R < Ord ( C ) ) or B<br />

( Z * R < Z ) or B<br />

( R < Z ) or B<br />

B or B<br />

B<br />

aceptándose la comparación sigui<strong>en</strong>te:<br />

True = ((6 + 8) * 3.14 < Asc(’a’)) or False<br />

y rechazándose <strong>en</strong> cambio esta otra:<br />

3.8 Ejercicios<br />

2 = ((6 + 8) * 3.14 < Asc(’a’)) or True<br />

1. De las sigui<strong>en</strong>tes expresiones <strong>en</strong> <strong>Pascal</strong>, detecte las erróneas; <strong>en</strong> las que son correctas,<br />

indique qué tipo deb<strong>en</strong> t<strong>en</strong>er los id<strong>en</strong>tificadores, y deduzca su tipo y su<br />

valor resultante, si es posible.<br />

(a) x = y (b) Odd(k) or Odd(Succ(k))<br />

(c) p = True (d) 10 div 3 = 10 / 3<br />

(e) p > Succ(p) (f) P = Q or R<br />

(g) Odd(n * (n - 1)) (h) Ord(’b’) - Ord(’a’) > 0<br />

2. Sea α un ángulo, dado <strong>en</strong> grados. Escriba una expresión <strong>en</strong> <strong>Pascal</strong> que halle:<br />

(a) el número de vueltas completas que da,<br />

(b) el ángulo <strong>en</strong>tre 0 y 359 al que equivale,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!