dimarts, 8 de març del 2011

[Programació] Objectes d'un algorisme

Tal com em vaig imaginar, aquesta assignatura està essent una de les més complicades d'aquest quadrimestre. Només començar el curs se'ns demana que comencem amb una PAC, la qual és bastant complicada pels què no tenim cap idea bàsica de programació. Per això he decidit fer un petit resum del què vaig entenent. Començo amb els objectes:

Un algorisme està format per objectes, els quals tenen tres atributs (nom, tipus i valor). Els objectes poden ser constants o variables. I els objectes poden ser de quatre tipus elementals:
  • Boolea (cert, fals)
  • Caracter (format per símbols, com ara lletres)
  • Enter (números positius i negatius sense decimals)
  • Real (números positius, negatius i zero, amb decimals)
Abans que un algorisme faci servir un objecte, aquest s'ha de declarar. Com he dit abans, els objectes poden ser constants o variables, així que caldrà definir-ho, o sigui, declarar-ho mitjançant const/fconst o var/fvar. Per fer-ho cal especificar el nom, el tipus i el valor de l'objecte (els atributs):
const
nom: tipus = valor;
fconst
o
var
nom: tipus;
fvar
Un cop tenim els objectes definits, és possible que necessitem operar entre ells en un algorisme. Per fer-ho fem servir les expressions. Les expressions són com funcions matemàtiques, però amb un matís important: les expressions han de complir amb una correctesa sintàctica i una correctesa semàntica. És a dir, no només han d'estar ben formulades, si no que han de tenir sentit. Per exemple, no es poden sumar números enters amb números reals.

Un cop tenim l'expressió, aquesta s'ha d'avaluar. Per fer-ho començarem per les funcions i els parèntesis interns i a continuació seguirem la següent llista de prioritats dels operadors de l'expressió:
  1. - (canvi de signe), no
  2. *, /, div, mod
  3. +, - (resta)
  4. =, ≠, <, ≤, >, ≥
  5. i
  6. o
En el cas que hi hagi igualtat de prioritats, s'avalua d'esquerra a dreta.

Es pot donar la situació que no hi hagi cap tipus que satisfaci les nostres necessitats, així que podem crear i definir tipus mitjançant un constructor de tipus. El constructor de tipus per enumeració permet definir un tipus nou de manera que els valors possibles que pugui tenir s'enumeren en la mateixa definició del tipus:
tipus
nom = { valor1, valor2, valor3, ..., valorn };
ftipus
L'ordre en què s'enumeren els valors es fa servir per establir la relació de més petit a gran. És a dir valor1 < valor2 és cert.

Com he comentat abans, les expressions han de tenir correctesa sintàctica i semàntica. Per això no podíem sumar un número real amb un número enter. Però hi ha una sèrie de funcions que serveixen per convertir els tipus que coneixem (boolea, caracter, enter i real):
  • realAEnter: converteix un real a un enter (també conegut com realToInteger).
  • enterAReal: converteix un enter a un real (també conegut com integerToReal).
  • caracterACodi: converteix un caràcter a enter i depèn de la codificació emprada (ASCII, etc.).
  • codiACaracter: converteix un enter a caràcter i depèn de la codificació emprada (ASCII, etc.).

2 comentaris:

  1. Molt bé! Mica en mica s'omple la pica. I ja saps, hi ha coses que estan malament aquí i en pekin i si no es en pekin es en pokon! jeje

    ResponElimina
  2. Merci, de moment seguiré els apunts de la UOC, a veure on em porten.

    ResponElimina