Foros del Web » Programación para mayores de 30 ;) » Programación General »

Comenzando a programar: 4b- Errores, tipos de datos, operadores y más.

Estas en el tema de Comenzando a programar: 4b- Errores, tipos de datos, operadores y más. en el foro de Programación General en Foros del Web. Seguimos desde la parte a de esta lección: Tipos de datos: Tipos Ordinales : Son aquellos que, dado un elemento, podemos saber cual es el ...
  #1 (permalink)  
Antiguo 20/10/2011, 11:17
 
Fecha de Ingreso: enero-2011
Mensajes: 51
Antigüedad: 13 años, 11 meses
Puntos: 21
Comenzando a programar: 4b- Errores, tipos de datos, operadores y más.

Seguimos desde la parte a de esta lección:

Tipos de datos:

Tipos Ordinales: Son aquellos que, dado un elemento, podemos saber cual es el siguiente y/o el anterior además de que poseen una cantidad finita de elementos, o sea, hay uno que es el primero y por ende no tiene predecesor, y uno que es el último y por ende no tiene sucesor.

Integer --- Números enteros, sin ninguna cifra decimal.
Char --- Caracteres.
Boolean --- Valores lógicos, pueden valer True o False.
Enumerados --- Definido por el programador.
Subrango --- Definido por el programador.

Todos ellos los veremos a medida que avancemos, no se preocupen.

Para estos tipos llamados Ordinales tenemos tres funciones predefinidas por Pascal que suelen ser útiles:

Pred(valor_de_tipo_ordinal)---> Devuelve el predecesor para cualquier valor de tipo ordinal excepto si éste es el primero de todos. En este caso tenemos un error en tiempo de ejecución.

Succ(valor_de_tipo_ordinal)---> Devuelve el sucesor para cualquier valor de tipo ordinal excepto si éste es el último de todos. En este caso tenemos un error en tiempo de ejecución.

Ord(valor_de_tipo_ordinal)---> Devuelve el ordinal para cualquier valor de tipo ordinal. Ya hablaremos de esto más tarde, al igual que de las dos funciones anteriores.

Tipos Reales: Solo tenemos el tipo real para esta categoría. Las funciones anteriores no funcionan con valores de tipo real ya que es imposible saber, dado un real, cual es su sucesor o su predecesor.

Tipos Estructurados: Forman estructuras de datos, en general, bastante complejas.

String --- Cadena de caracteres.
Array --- Tablas de datos (String es un array de caracteres).
Record --- Registros de datos.
File --- Secuencias de datos (No trabajaremos con este tipo).
Set --- Conjuntos de datos (No trabajaremos con este tipo).


Tipo Punteros: Hablaremos de ellos al final de este curso.

Notas: El mayor entero posible es identificado por la palabra reservada MAXINT, la cual es una constante (hablaremos de estas más adelante).

Esos son todos los tipos existentes, ustedes solo han trabajado con tres de ellos, pero pronto veremos más, y al final los habrán visto todos excepto set y file.


Operadores en pascal:


Veamos los operadores aritméticos de Pascal, los cuales son usados para crear expresiones matemáticas y realizar cálculos:




Precedencia de operadores:

Dada una expresión matemática donde se combinen varios de estos operadores, al igual que en el álgebra común, se realizarán primero los productos ( * ), las divisiones (div), (mod) y ( / ) y luego las
sumas ( + ) y restas ( - ). Para quebrar esta precedencia de quién va primero que quién, se utilizan los paréntesis.

Ejemplo: A+B*C

En este caso aparece primero la suma (+) y luego un producto (*). Sin embargo el producto tiene precedencia ante la suma y se evaluará primero B*C para luego sumar ese resultado con A. Si se quisiera realizar primero la suma habría que utilizar paréntesis y escribir aquella expresión como (A+B)*C. Ahora sí se realizará primero la suma y luego el producto ya que los paréntesis tienen la precedencia absoluta excepto si existen funciones que deben evaluarse entro.

Si se llevan bien con las matemáticas esto no supone novedad alguna.


Funciones matemáticas de pascal:

Pascal nos provee de varias funciones matemáticas predefinidas para realizar algunos cálculos comunes. En los siguientes ejemplos la letra x simbolizará un número o expresión del tipo adecuado para la función en cuestión:
  • ABS(x) Calcula el valor absoluto de X. X debe ser integer o real. El resultado es del mismo tipo que X.
  • SQR(x) Calcula el cuadrado de X. X debe ser integer o real. El resultado es del mismo tipo que X.
  • SQRT(x) Calcula la raíz cuadrada de X siendo X un real o entero mayor o igual que 0. El resultado es un del tipo real.
  • SIN(x) Calcula el seno de X expresado en radianes. X debe ser integer o real. El resultado es del tipo real.
  • ARCTAN(x) Calcula el arco tangente de X. X debe ser integer o real. El resultado es del tipo real.
  • EXP(x) Calcula la exponencial de X (ex donde e= 2.7182818…). X debe ser integer o real. El resultado es del tipo real.
  • LN(x) Calcula el logaritmo neperiano (base e) de X siendo X mayor que cero. X debe ser integer o real. El resultado es del tipo real.
  • TRUNC(x) Suprime la parte decimal de X dejando solo el valor anterior a la coma. X debe ser real. El resultado es del tipo integer.
  • ROUND(x) Redondea el valor de X al entero más próximo. X debe ser real. El resultado es del tipo integer.
  • ORD(x) Obtiene el número de orden de X dentro de un conjunto de valores definidos por su tipo. X debe ser de un tipo ordinal. El resultado es de tipo integer.
  • CHR(x) Devuelve el caracter cuyo número ordinal es X. El tipo de X debe ser integer. El resultado es de tipo char.

Un ejemplo del uso de DIV y MOD. Introducción a los comentarios:

Se nos plantea el siguiente problema. Dado un número entero de cuatro cifras que será leído desde la entrada estándar se nos pide que hagamos la suma de sus cifras. Por ejemplo, si el usuario ingresa el número 5648 el programa debe realizar la suma de 5+6+4+8 y mostrar el resultado. Se asume que el usuario ingresará efectivamente un número de cuatro cifras.

Esto es complicado, así que preste atención a toda la descripción y pregunten todo lo que haga falta.

Código Pascal:
Ver original
  1. {El siguiente programa desglosará un número de cuatro cifras
  2. en sus cuatro números distintos, uno por cada cifra y realizará
  3. la suma entre ellas}
  4. PROGRAM SumaCifras;
  5.  
  6. Var
  7.     numero: integer; //El valor que será leído.
  8.     c1, c2, c3, c4: integer;//Una variable para cada cifra.
  9.  
  10. BEGIN
  11.     write('Ingresa un número de cuatro cifras: ');
  12.     readln(numero); //Leemos el número de 4 cifras.
  13.  
  14.    (*Asignamos a cada variable el valor de la cifra que le corresponde*)
  15.    c1:= numero mod 10;
  16.    c2:= (numero mod 100) div 10;
  17.    c3:= (numero mod 1000) div 100;
  18.    c4:= numero div 1000;
  19.  
  20.    //Mostramos el resultado al usuario.
  21.    write('El resultado de sumar ',c4,'+',c3,'+',c2,'+',c1,' es: ',c1+c2+c3+c4);
  22. END.

Este es nuestro primer programa en el que vemos el uso de comentarios. Los comentarios son anotaciones hechas por el propio programador para ir explicando lo que se va realizando en su código. Esto es debido a que normalmente el software se desarrolla en equipo y resulta imprescindible que otros lean el código que uno escribe y sean capaces de entenderlo. Los comentarios son omitidos por el compilador por lo cual no afectan en absoluto al funcionamiento del programa. Existen dos tipos de comentarios, los comentarios multilínea y los comentarios de fin de línea.

Los primeros pueden abrirse con { y cerrarse con } tal como se ve en las primeras tres líneas de nuestro programa, o abrirse con (* y cerrarse con *). Un comentario multilínea puede ocupar una o más líneas de código.

Los comentarios de fin de línea se abren con // y no requieren ningún símbolo de cierre ya que, como su nombre lo indica, finalizan al terminar la línea en que aparecen.

Ahora miremos un poco la lógica de nuestro programa, como usando mod y div solamente, puede desglosarse un número en sus respectivas cifras. En la línea 12 leemos de la entrada estándar un valor y lo guardamos dentro de numero. Luego, en la línea 15, mediante el símbolo de asignación := le damos a c1 el valor de la primera cifra de nuestro número. Fíjense que si uno tiene un número de más de una cifra y lo divide entre 10, el resto de esa división será la primera cifra si leemos de derecha a izquierda. Teniendo por ejemplo el 1456, si dividimos ese número entre 10 (división entera, sin llevarlo a decimales) obtenemos como resto el 6 y como resultado el 145.

En la línea 13 obtenemos el resto de dividir nuestro número entre 100, eso da como resultado el entero formado por las dos primeras cifras (de derecha a izquierda) y luego (notar que esta operación está entre paréntesis para que se realice primero) mediante div obtenemos el cociente de dividir ese número entre 10. Por ejemplo, si tenemos 1456 y lo dividimos entre 100, el resultado es 14 y el resto 56. Teniendo el resto, al dividirlo entre 10 tenemos como resultado el 5 y como resto el 6. De este modo en las líneas 17 y 18 obtenemos las últimas dos cifras de nuestro número.

Ahora las variables c1, c2, c3 y c4 contienen cada una los valores de una cifra de nuestro valor inicial.

En la línea número 21 mostramos mediante el procedimiento write los resultados de nuestro programa.


Ejercicios:

Les dejo un enlace a ejercicios de aplicación de todo lo que hemos visto hasta ahora, tanto en esta lección como en las anteriores. Háganlos todos. El número 14 puede ser complicado por lo que pueden omitirlo.
Este link los lleva a la página de la Facultad de Ingeniería de mi país, por lo tanto los ejercicios allí propuestos son pensados por profesores reales enfocados a una programación poderosa. Dicho enlace está autorizado por nuestro administrador Tesis, gracias a quién este curso es posible ya que me ha dado todo su apoyo.

HAGAN CLIC AQUÍ PARA ACCEDER

Tendrán mucho trabajo. Esta lección les traerá dudas y muchísimas preguntas. Trabajen también con las anteriores.

Estaremos un tiempo con esto, hasta que logren hacer los ejercicios planteados.

Última edición por Kyshuo; 17/11/2011 a las 10:13 Razón: Mejorar las vistas de código fuente

Etiquetas: entrada, errores, ide, operadores, php, programa, variables, tipo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:32.