4to Estructura de datos

Views:
 
Category: Education
     
 

Presentation Description

Ultima semana de clases

Comments

Presentation Transcript

Slide 1: 

En el caso de que necesitemos asignar el contenido de un array a otro sólo es posible cuando tengan el mismo tipo estrictamente, hay que tener en cuenta que para el compilador igual declaración no implica el mismo tipo. Véase el programa siguiente :

Slide 2: 

En los ejemplos hemos empleado rangos numéricos con enteros positivos pero también es posible definir el rango del array con números negativos como por ejemplo [-2..2] o bien [-5..-3]. Es importante recordar que el rango inicial no puede ser nunca superior al final. Por tanto un array con rango [5..3] es incorrecta. Los string y los arrays Es posible acceder a los caracteres de un string (tanto si es ShortString, AnsiString o String[n]) mediante una sintaxis de array. Los string están indexados en cero pero el primer carácter se encuentra en la posición 1.

Slide 3: 

El nombre de caracteres de una cadena se puede obtener con la función Length. El valor que devuelve es el nombre de caracteres dinámicos, o sea el nombre de caracteres que tiene la cadena. En cambio no devuelve el máximo de caracteres que puede obtener la cadena : Para saber la longitud máxima de la cadena hay que emplear la función High. La función Low siempre devuelve cero con una cadena. Obsérvese que los elementos de una cadena son caracteres y por tanto podemos asignar a un Char el elemento de una cadena.

Slide 4: 

Registros o records

Slide 5: 

Un registro es un tipo de dato que contiene un conjunto de campos que no son más que un conjunto de identificadores reunidos bajo un mismo nombre. La declaración de un registro es de la forma siguiente : Por ejemplo si queremos almacenar datos referentes a un cliente podemos emplear el registro siguiente : Type TDatosCliente = record Nombre : String; Apellidos : String; NumTelefono : Integer; End;

Slide 6: 

Ahora sólo hay que declarar una variable de este tipo y emplear sus campos : Como se puede ver, empleamos el punto para distinguir con qué variable queremos trabajar. Así DatosCliente.Nombre representa el campo Nombre que como hemos visto en la declaración es de tipo String. Téngase en cuenta que DatosCliente es de tipo TDatosCliente pero que los campos de éste tienen su propio tipo, tal como se ha declarado en el registro. Podemos indicar al compilador que los identificadores que no conozca los busque al registre mediante la palabra reservada with. Podíamos haber escrito el código así:

Slide 7: 

A menos que sea necesario, no se recomienda el uso de with ya que confunde al programador. La utilización del punto permite cualificar el identificador y evita confusiones. También podemos cualificar el identificador en función de su unit. Por ejemplo la función ReadKey de la unit Crt se puede indicar como Crt.Readkey. En este caso, el punto es útil para determinar exactamente qué variable o qué función estamos llamando, especialmente cuando haya más de una en diferentes units.

Slide 8: 

Registros variantes Pascal permite definir lo que se llaman registros con partes variantes. Un registre con una parte variante consta de un campo que llamaremos selector. El valor de este selector es útil para el programador pues le permite saber cual de los campos posibles se están empleando. El compilador no tiene en cuenta el valor de este campo selector ya que permite el acceso a todos los campos declarados en la parte variante.

Slide 9: 

Por ejemplo podemos realizar lo siguiente Combinado.Caracter := ‘z’; y después Combinado.conjutoDatos:= Tcaracter; para indicar qué campo hay que leer. Por ejemplo, si hacemos la asignación Combinado.Numero := 65; y después hacemos Writeln (Combinado.Caracter); se escribirá en la pantalla la letra A. Este comportamiento, en apariencia tan raro, es debido a que un registro con la parte variante sitúa los distintos campos en una misma región de memoria de forma que podamos trabajar con un Byte y un Boolean o trabajar con un Cardinal y leer sus dos Word, el superior y el inferior. El uso de registros variantes está restringido a usos muy concretos. Esta es la forma Pascal de implementar un union de C/C++.

authorStream Live Help