dijous, 14 d’abril del 2011

tipus simples de dades

tipus simples de dades

numèrics | char | boolean | string

introducció al tipus simples de dades de Pascal

El tipus d'una dada és el conjunt de valors que pot prendre durant el programa. Si se li intenta donar un valor fora del conjunt es produirà un error.

Existeixen moltes classificacions per als tipus de dades, una primera classificació dels tipus de dades podria ser la de diferenciar les dades dinàmiquesde les estàtiques.

Que un tipus de dades sigui estàtic vol dir que la grandària que ocupa en memòria no pot variar durant l'execució del programa. És a dir, una vegada declarada una variable d'un tipus determinat, a aquesta se li assigna un tros de memòria fix, i aquest tros no es podrà augmentar ni disminuír. En pascal gairebé tots els tipus de dades són estàtics, l'excepció són els punters que són dinàmics. Dintre dels tipus de dades estàtiques podem diferencia entre els tipus simples i els tipus estructurats

Els tipus simples són els bàsics del pascal: integer, boolean, char, string i real, aquests tipus només referencien a un element. També existeixen dos tipus de dades simples definides per l'usuari, el tipus enumerats i el tipus subrang.

Pel que fa referència a la definició i utilització dels tipus estructurats veure els apartats de array, record, file.


tipus simple de dades

tipus numèrics (integer / real)

Per representar els nombres hem de distingir dos tipus numèrics diferents, segons si
volem representar nombres sencers o nombres reals. En Pascal el tipus sencer rep el nom d'integer i el de real no canvia, real.

No obstant, a la majoria de compiladors de Pascal, a més a més, es poden utilitzar altres tipus numèrics per representar nombres sencers i reals amb un rang de valors diferent.

números sencers: Tipus i rang de valors:
Byte 0..255
ShortInt - 128..127
Integer - 32768..32767
Word 0..65535 (2 bytes)
LongInt - 2147483648..2147483647

número reals: Tipus i rang de valors
Real 2.9x10-39 .. 1.7x1038
Single 1,5x10-45 .. 3.4x1038
Double 5.0x10-324 .. 1.7x10308
Extended 3.4x10-4932 .. 1.1x104932
Comp -263 –1 .. 263 -1

En principi un nombre sencer pot estar entre els valors –32768 i +32767. Això és perquè per al seu emmagatzematge es fan servir 2 bytes (16 bits). Noteu que el primer bit es reserva per al signe i aleshores 215 és igual a 32767. Quant als reals, es fan servir per representar els nombres amb decimals, ja sigui en notació ordinària o exponencial. El tipus real pot representar el rang de valors entre 2.9x10-39 i 1.7x1038.

tipus caràcter (char)

Emmagatzema un caràcter alfanumèric, és a dir no només les lletres sinó també els dígits numèrics, signes de puntuació i demés signes especials com $, %, & o d'altres. En realitat allò que es guarda a la memòria és un codi numèric que representa el caràcter. Així doncs, cada caràcter té assignat un número entre 0 i 255. Aquest número rep el nom de codi ASCII. Noteu que per representar un número entre 0 i 255 es necessiten 8 bits, és a dir, un byte. Per tant, un caràcter ocupa un byte de memòria.

Per tal defiferenciar els carcaters dels identificadors aquest caràcter es posa entre cometes simples ('caràcter'). exemples 'a' 'M'


tipus lògic (boolean)

Poden prendre dos valors True (veritable) False (fals). L'identificador estàndard boolean defineix una variable d'aquest tipus.

tipus cadena (string)

Una cadena (string) és una seqüència de caràcters que té una longitud màxima de 255 caràcters. Els caràcters que componen la cadena es delimiten amb apòstrofes.
Exempe. 'abcd' longitud de la cadena 4,'' cadena buida o nul·la.

Es pot definir la longitud de la cadena posant string [n] on n està entre 0 i 255.

Longitud fisica: correspon al maximo numero de caràcters que pot emmagatzemar.

Longitud lògica: correspon al numero de caràcters que té en un instant determinat.

Exemple

Type cadena:string[20];

Var nom, cognom : cadena;


estructura del programa

estructura del programa

paraules reservades | seccions | identificadors | capçalera | unit | const | type | var | procedure i function

paraules reservades de Pascal

El Turbo Pascal, com a llenguatge de programació té el seu propi codi amb paraules d'ús exclusiu per a certes funcions; a aquestes paraules s'anomenen paraules reservades de Turbo Pascal

Pascal Estandar y Turbo Pascal 6.0

AND

ARRAY

BEGIN

CASE

CONST

DIV

DO

DOWNTO

ELSE

END

FILE

FOR

FORWARD

FUNCTION

GOTO

IF

IN

LABEL

MOD

NIL

NOT

OF

OR

PACKED

PROCEDURE

PROGRAM

RECORD

REPEAT

SET

THEN

TO

TYPE

UNTIL

VAR

WHILE

WITH

Turbo Pascal

ABSOLUTE

ASM

DESTRUCTOR

IMPLEMENTATION

INTERFACE

OBJECT

PRIVATE

SHR

UNIT

VIRTUAL

CONSTRUCTOR

EXTERNAL

INLINE

INTERRUPT

SHL

STRING

USES

XOR

Cada una de les paraules reservades té funció definida en Turbo Pascal.


seccions d'un programa en pascal

A continuació tens una taula que aparella seccions amb paraules reservades. A més apareixen en l'ordre correcte:

secció del programa

paraula reservada

capçalera (títol del programa)

program

declaració d'units

uses

declaració de constants

const

declaració de tipus

type

declaració de variables

var

declaració de subprogrames

fuction i procedure

cos del programa

begin.... end i punt (.)

Moltes seccions no són obligatòries. Per tant, en un programa no tenen per que aparèixer totes aquestes paraules.

identificadors

Són les paraules que utilitzem per representar les constants, tipus de dades, variables, procediments, funcions. Aquestes paraules són definides pel programador.

Un identificador és una seqüència de 1 a 127 caràcters, depenent del compilador la longitud pot variar, aquest ha de començar per una lletra, no té espais ni símbols: &, !, *, etc. i no es alguna paraula reservada.En Turbo Pascal no existeixen diferències entre Majúscules i Minúscules i tot identificador ha d'ésser declarat abans de la seva utilització, en la part declarativa del programa.


capçalera d'un programa

La capçalera és una secció obligatòria, ha de figurar en tots els programes. Ha de començar amb la paraula reservada program seguida del nom del programa i un ";". Amb això ja es complirien els requisits mínims que ha de tenir una capçalera, però es pot i és molt recomanable incluír també un comentari. Aquest comentari ho utilitzem per a documentar el programa, que és una mica que la gent sol deixar en segon pla, però és d'allò més important en programació. En el comentari s'ha de incluír el major nombre de components dels quals se citen a continuació:

Autor del programa :

Versió actual :

Data d'inici del programa :

Data de l'última modificació :

Què es pretén que faci el programa :

Nom del fitxer font en el qual es guarda :

Altres coses que t'ajudin a documentar el teu programa

declaració d'units

Sense aprofundir massa en el tema, comentar que la paraula reservada amb que comença la declaració d'unitats és uses i que va seguida dels noms de les unitats que es vulguin utilitzar en el programa separats per ",". Es finalitza la secció amb un punt i coma ";". Evidentment, aquesta secció no és obligatòria.

uses nom_unit_1, nom_unit_2, ....nom_unit_n;

declaració de constants

Aquesta secció no és obligatòria, i només hauràs de declarar-la si vols definir alguna constant en el teu programa. Una constant és un objecte al que se li assigna un valor al declarar-lo i ho manté durant tota l'execució del programa

const identificador_1 = valor_1; .... ; identificador_n = valor_n;

A continuació teniu un exemple de declaració de constants

const
Min = 0;
Max = 1000;
salutació = 'Hola';


declaració de tipus

Aquesta secció no és obligatòria, i només hauràs de declarar-la si vols definir els teus propis tipus de dades en el programa. Per a programes senzills no et farà falta declarar tipus, et bastarà amb els tipus simples que proporciona Pascal (Integer, Real, Boolean, String, Char...).

A continuació, tens la forma genèrica que descriu com declarar un tipus

type identificador_1 = valor_1; .... ; identificador_n = valor_n;

A continuació, teniu un exemple de declaració de tipus

type
paraula = String[20];
cap_de_setmana = (dissabte, diumenge); { tipus enumerat }
hores_dia = 0..23 {tipus subrang}
dies_mes = array[1..12] of word; {col·lecció ordenada de dades}
matriu = array[1..10,1..10] of integer;

declaració de variables

Aquesta secció, encara que no és obligatòria gairebé sempre es declara. Doncs un programa per molt petit que sigui, gairebé sempre va a fer ús de variables. Per exemple, si utilitzes alguna iteració en el teu programa, has de tenir almenys una variable per a la progressió d'aquesta.

La forma de declarar variables és molt senzilla. Aquesta secció ha de començar amb la paraula reservada var, seguida d'una llista de parelles

var llista_var_1: tipus_1; .... ; llista_var_n;

Una variable no representa més que una porció de memòria on guardem una dada que dependrà del tipus al que pertanyi la variable. A diferència d'una constant, el valor d'una variable pot canviar durant l'execució d'un programa. Altra diferència, és que a una variable no n'hi ha prou amb declarar-la, sinó que també és necessari iniciar-la. Això es refereix a donar-li un valor inicial, i és important ja que si no ho fem, igual ens trobem amb errors quan executem el programa.

inicialització de variable

Principalment, existeixen dues maneres d'atorgar valors inicials a variables: Mitjançant una sentència d'assignació; Mitjançant un dels procediments d'entrada de dades (read o readln).

Assignació: x:=22;

Readln(x,y,z)


utilització de variables

Una cop declarada i inicialitzada una variable, és el moment d'utilitzar-la. Aquesta és la part que presenta un major ventall de possibilitats. A continuació tens unes quantes:

Incrementar el seu valor: i := i + 1;

Controlar un bucle: for i:=1 to 10 do

Testejar una condició: if i<10 then ...

Participar en una expressió: n := (Max - Min) div i

Vegeu un exemple on s'inicialitzen i utilitzen les variables:

begin

...
i:=1; (* sentència d'assignació *)
readln(n); (* entrada de dades * )
while i < n do
begin

i := i + 1 (* ús de la variable, incrementant el seu valor *)

end;

...

end.

declaració de procediments i funcions

Aquesta secció és molt important, encara que per als teus primers programes no la necessitaràs. En aquesta pots declarar procediments i funcions (subprogrames) per ser utilitzats en altres subprogrames o en el cos principal. Tot el relatiu a això ho trobaràs en el tema dedicat a la programació modular.

function Suma(a:integer;b:integer):integer;
begin

Suma := a + b;

end;

procedure Escriu(frase:string);

begin

writeln(frase) ;

end;

...

Són dos subprogrames molt senzills. La funció rep com paràmetres dues variables de tipus sencer, les suma i retorna el seu valor. El procediment rep una cadena de caràcters i invoca a writeln per a escriure-la en pantalla.


cos del programa

És juntament amb la capçalera, l'única secció obligatòria en un programa Pascal. Ha de començar i finalitzar amb les paraules reservades begin i end (punt) respectivament. Molt imortant: Després de la paraula end, sempre ha d'anar un punt que indica el final del programa.

Entre begin i end s'escriuen una o més sentències, aquestes poden ser vàries: assignacions, crides a procediments i funcions, sentències condicionals, sentències iteratives.

program de_base_10_a_base_x;

uses crt;

var num:integer;

base:byte;

procedure entrada(var num:integer; var x:byte);

var ok:boolean;

begin

repeat

writeln ('Donam la base (entre 2 i 10):');

readln(x);

If x in [2..10]then

ok:=true;

until ok=true;

writeln ('Donam un numero per pasar a base ', x);

readln(num);

ok:=false;

end;

procedure DeciX (base,num:integer);{Recursiva}

Begin

if num <> 0 then

begin

DeciX(base,num div base);

write (num mod base);

end;

End;

Begin { cos del programa / crida les procedures definides a dalt }

entrada(num,base);

writeln('El n£mero en base ',base,' es');

DeciX (base,num);

readln;

end.


Introducció al llenguatge pascal

introducció al llenguatge Pascal

El llenguatge de programació Pascal és un llenguatge d'alt nivell i propòsit general (aplicable a una gran quantitat d'aplicacions diverses) desenvolupat pel professor suís Niklaus Wirth (Institut tecnològic de Zurich, Suïssa). El propòsit de Wirth era crear un llenguatge per a l'ensenyament de tècniques de programació a estudiants universitaris. Una versió preliminar del llenguatge va aparèixer en 1968 i el primer compilador totalment complet va aparèixer a la fi de 1970. Des de llavors, molts compiladors han estat construíts i estan disponibles per a diferents màquines. Durant molts anys, el llibre Pascal User Manual and Report , publicat per Wirth i Kathleen Jensen en 1974, ha servit de facto com estàndard de totes les versions.

Existeixen dues versions o definicions estàndards que es coneixen com ISO Pascal i ANSI/IEEE Pascal, i difereixen en alguns aspectes no especialment significatius. No obstant això, una versió no estàndard s'ha popularitzat considerablement: Turbo Pascal (marca registrada per Borland International, Inc.). Aquesta versió ha contribuït en gran mesura a la popularització del llenguatge Pascal.

llenguatges de programació

Un llenguatge de programació permet a l'usuari crear programes que seran entesos per l'ordinador (directa o indirectament) amb l'objectiu de realitzar alguna tasca. A grans trets podem classificar els llenguatges de programació en tres categories: màquina, baix nivell (ensamblador) i alt nivell.

Els llenguatges màquina són aquells les instruccions dels quals són directament entendibles per l'ordinador sense la necessitat de traducció alguna. Les seves instruccions no són més que rests de zeros i uns (bits).

Els llenguatges de baix nivell són generalment depenents de la màquina, és a dir, depenen d'un conjunt d'instruccions específiques de l'ordinador. Un exemple d'aquest tipus de lengujes és el ensamblador. En ell, les instruccions s'escriuen en codis alfabètics coneguts com mnemotècnics.

Els llenguatges d'alt nivell són aquells en els quals les instruccions o sentències són escrites amb paraules similars a les dels llenguatges humans (en la majoria dels casos, l'Anglès). Això facilita l'escriptura i comprensió del codi al programador.

Els programes escrits en llenguatge d'alt nivell no són entendibles directament per la màquina. Necessiten ser traduïts a instruccions en llenguatge màquina que entenguin els ordinadors. Els programes que realitzen aquesta traducció es diuen compiladors, i els programes escrits en llenguatges d'alt nivell es denominen programes font.

Un programa font és aquell que ens permet escriure un algorisme mitjançant un llenguatge formal. Per això al codi desenvolupat al programar s'anomena codi font. Un programa objecte és el resultat de traduir un programa font per a obtenir un llenguatge comprensible per la màquina, codi objecte.

Els traductors de programes

Els traductors són un tipus de programes la funció dels quals és convertir el codi d'un llenguatge en un altre. Per exemple un compilador, que traduïx codi font en codi objecte.

Els intèrprets es tracta de traductors-executors ja que amb cada instrucció realitzen un procés triple de lectura-traducció-execució. Són relativament lents, però molt bons per a la depuració de programes.

Els compiladors, és el tipus de traductor més conegut. Es tracta d'un programa que traduïx codi font escrit en un llenguatge d'alt nivell com Pascal, en codi màquina (no sempre). Són més ràpids que els intèrprets però presenten major dificultat a l'hora de detectar errors.