Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
1 Prof. Claudia Dania – Datos Simples Algoritmos y Estructuras de Datos 1° Año Ingeniería en Sistemas de Información * Datos Simples Prof. CLAUDIA DANIA Magister en Docencia Universitaria Analista Universitario de Sistemas Licenciada en Sistemas de Información 2 Prof. Claudia Dania – Datos Simples DATOS Los datos son objetos que al ser manipulados por diferentes sentencias o instrucciones de un programa, se convierten en información que ofrece dicho programa. ESTRUCTURA DE DATOS: Cada dato tiene un formato, según sea su característica, se establecerán las operaciones de acceso que se usan para almacenar, recuperar y operar cada elemento individual. DATOS CONSTANTES CONST nombre = valor; Identificador al cual se le asigna un dato permanente durante la ejecución del programa DATOS VARIABLES VAR nombre: tipo; Identificador que permite cambiar su valor durante la ejecución del programa IDENTIFICADORES: Tipos de Datos El tipo de dato es una descripción formal del conjunto de valores posibles que una variable o constante puede presentar y que operaciones que se le puede aplicar. SIMPLES Se asocian a Identificadores únicos uno a uno Pascal STANDARD o REALES (real) o ENTEROS (integer) o CARACTERES (char) o CADENAS (string) o LOGICOS (bool) DEFINIDOS por el USUARIO o ENUMERADOS o SUBRANGO Python STANDARD o REALES (float) o ENTEROS (int) o CARACTERES (str) o CADENAS (str) o LOGICOS (bool) 3 Prof. Claudia Dania – Datos Simples DATOS DE TIPO SIMPLE Elementos individuales STANDARD Entero (integer / int): No pueden incluir comas, puntos ó espacios dentro de un número; puede venir precedido de un signo (+) ó (-), si no aparece el signo se considera positivo. Se pueden sumar (+), restar (-), multiplicar (*), dividir (con 1/ resultado real, con DIV ó 2 // resultado entero truncado, MOD resto entero). El valor MAXINT en Pascal es ± 32767 (en Python no tiene importancia sys.maxint: puede ser 9223372036854775807). Ej.: 0 +12 23 -5280 Real (real / float): No puede comenzar ni terminar en un punto, éste debe estar comprendido entre dos dígitos; puede llevar exponente entero (negativo o positivo) como notación científica. Se pueden sumar (+), restar (-), multiplicar (*), dividir (/). Ej.: 3.OE+10 -5,026 2E-8 1,66 Caracter (char / str): en cada variable se admite un solo carácter. Varían de una máquina a otra según el conjunto de caracteres de la misma, puede ser CDC-científico, ASCII y EBCDIC. Aunque las ordenaciones sean distintas en cada uno de ellos, en los tres están ordenados y se le llama Secuencia de Cotejo. Ej.: letra = ‘T’ signo = ‘?’ numero = ‘7’ No se pueden realizar operaciones matemáticas entre variables char, pero si operaciones de comparación. Booleano o lógico (boolean): son valores que pueden ser ciertos o falsos. No pueden ser leídos desde teclado. Se los puede trabajar con operadores lógicos: .AND. .OR. .NOT. / AND OR NOT y operadores relacionales: <> = < >= > <= == != += 4 Prof. Claudia Dania – Datos Simples String / str : permite procesar cadenas de carateres, con una longitud constante que al momento de ser declarada puede variar entre 1 y 255. En el caso de longitud 1 es equivalente a la declaración tipo Char. En el caso particular de Pascal, no se le declara la longitud máxima permitiendo cargar hasta 255 caracteres. Las operaciones válidas entre string son la asignación y la concatenación. Ejemplo: var a, b, c: string[10]; a:= ´123´; b:= ´ *´ c:= a + b por lo cual c contendría ´123 *´ Se pueden utilizar operadores relacionales para comparar string y los resultados sería: • para el operador = ==, si las cadenas son de la misma longitud y contienen los mismos símbolos en el mismo orden el resultado es verdadero, de lo contrario falso. • para el operador <> != , es lo opuesto a lo anterior. • para operadores >, <, >=, <= : compara símbolo a símbolo según a su aparición el el código ASCII, ejemplo si se compara ‘sala’ con ‘sola’, se puede decir que ‘sola’ es mayor que ‘sala’ dado que la ‘o’ aparece después de la ‘a’. Si es una cadena de caracteres la que deseamos exhibir, sin ser asignada a una variable, debe estar encerrada entre apóstrofos: 'El costo es:' y puede estar formada por letras, dígitos y/o caracteres especiales. Si dentro de ella se incluye un apóstrofo, éste debe escribirse dos veces para que el primero no sea tomado como fin de la cadena. Los cuatro tipos de datos (menos el string), tienen dos propiedades en común: están formados por elementos indivisibles y están ordenados, por estas razones se los llama ESCALARES. Excepto los REALES, los otros tres tipos tienen una propiedad adicional: cada valor tiene un predecesor único excepto el primero y cada valor tiene un sucesor único excepto el último; estos tipos de datos se los llama ORDINALES. FUNCIONES SOBRE ORDINALES ORD: Devuelve mediante un valor entero la posición de un valor en su ordenación según la secuencia de cotejo, teniendo en cuenta que la primera posición es el 0 y no el 1. Para los enteros devuelve el mismo número y para los booleanos el 0 es Falso y el 1 es Verdadero. PRED: Devuelve el único valor anterior al del dato ordinal. Se produce un error en tiempo de ejecución si el parámetro es el primer valor. SUCC: Devuelve el valor posterior al dato ordinal, produciéndose un error en tiempo de ejecución si el parámetro es el último elemento del tipo de dato. CHR: Toma una posición ordinal entera y devuelve el carácter de esa posición, se define sólo sobre valores tipo CHAR. 5 Prof. Claudia Dania – Datos Simples TIPOS DE DATOS ESCALARES DEFINIDOS POR EL USUARIO Se pueden crear nuevos tipos de datos por medio de una definición TYPE antes de la sección VAR para Pascal. TIPO DE DATOS ENUMERADOS (Pascal) TYPE nombre = (dato1, dato2,....., datoN); Es una secuencia ordenada de identificadores, donde cada uno se interpreta como dato individual, asociados a un nombre que sirve como identificador de tipo. Esta asociación se la realiza mediante una declaración TYPE. Debido que los datos tienen una secuencia ordenada, se los puede trabajar con operadores relacionales o utilizar funciones standard como: pred() ó succ() para conocer que datos preceden ó suceden a uno en particular y ord(): entendiendo que el primer dato tiene asignado el valor ordinal 0. No pueden ser utilizados en instrucciones de entrada ni de salida. La forma de definir este conjunto de datos es listar todos los valores posibles que puede tomar una variable de dicho tipo, separándolos con coma y encerrados entre paréntesis. Hay que tener en cuenta que un identificador de tipo NO puede ser utilizado como variable, sino que se lo debe asignar en la sección VAR. TYPE semana = (domingo, lunes, martes, miercoles, jueves, viernes, sabado); lunes < martes. . . verdadero; succ(miercoles) = jueves; ord(martes) = 2; TYPE Animales = (raton, gato, perro, tigre); VAR salvajes, domesticos: Animales; Los tipos enumerados son ordinales por lo tanto se les puede aplicar las funciones de Pred, Succ y Ord. Además pueden usarse en las etiquetas de las estructuras de control CASE, en los bucles FOR y WHILE. CASE domesticos OF FOR domesticos:= gato TO perro DO ... ; raton: write ('trampa'); gato: write ('darle comida') domesticos:= gato; END; WHILE domesticos < tigre DOdomesticos:= Succ (domesticos); Los identificadores del enumerado deben seguir las mismas reglas que otros identificadores: no pueden comenzar con un número, ni con caracteres especiales, no pueden estar definidos en dos tipos enumerados al mismo tiempo, no pueden ser leídos, se los debe ingresar como un número o una letra (codificados) y luego traducirlos a su valor real y tampoco pueden ser exhibidos directamente. Read (dato) CASE domesticos OF IF dato = ‘G’ THEN domesticos := gato gato: Write ('gato'); ELSE ......; ....... END; 6 Prof. Claudia Dania – Datos Simples TIPO DE DATOS SUBRANGO (Pascal) TYPE nombre = primer dato . . ultimo dato; VAR dato: nombre; . . Es un tipo de datos compuesto de un rango específico de cualquier tipo ordinal, ordenados y contiguos. Se define por un valor inicial inferior, dos puntos suspensivos y un valor final superior, según la ordenación del tipo residente, no van encerrados entre paréntesis. Se puede aplicar a cualquier conjunto de datos de tipo simple (entero, char, boolean y enumerado) excepto los de tipo real. Valen las mismas consideraciones que los enumerados en cuanto a funciones y operadores relacionales. Unicamente se pueden usar en instrucciones de entrada/salida si son de tipo entero o char, siempre que estén dentro del rango especificado. Además de hacer un programa más legible, nos facilita la comprobación automática de rango, detecta automáticamente la asignación fuera de rango de una variable, por ejemplo si quisiéramos asignar una 'F' a una variable que fue definida con un subrango de 'A' . .'D', se detiene el programa con un mensaje de error. TYPE semana = (domingo, lunes, martes, miercoles, jueves, viernes, sabado); TYPE trabajo = lunes . . viernes; TYPE numero = 1 . . 6; TYPE dias = 1 . . 31; TYPE nota = 0 . . 10; VAR calificar : nota;
Compartir