Fecha y hora actual: Miércoles 18 Sep 2019 09:00
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Programando desde 0: 4- Errores, tipos, operadores y más.

Responder al Tema Ir a página 1234567Siguiente

Índice del Foro > Programación en general > Programando desde 0: 4- Errores, tipos, operadores y más.

Autor Mensaje
Kyshuo Ayame
Moderador Global


Registrado: 07 Ene 2011
Mensajes: 1044

Mensaje Publicado: Viernes 04 Mar 2011 17:31

Título del mensaje: Programando desde 0: 4- Errores, tipos, operadores y más.

Responder citando

LECCIÓN 4:

En esta lección veremos casi todas las últimas generalidades básicas del lenguaje y de la programación en sí abarcando varios temas. De este modo, con la siguiente lección a esta cerraremos lo que sería un capítulo del curso para posteriormente comenzar con el segundo en el cual nuestros programas se volverán bastante más complejos y comenzarán los dolores de cabeza, pero todavía falta un poquito.

Como dato les cuento que este curso consta de seis capítulos y un proyecto final muy complejo en el que haremos un pequeño juego. También les cuento que ya estoy escribiendo el segundo curso en el que atacaremos el lenguaje Modula 2 y aprenderemos a desarrollar programas de porte mediano. Pero todo eso lo veremos a su tiempo, ahora comencemos.

Esta lección será larga y les dará bastante que hacer.

-------------------------------------------------------------------------------------

Introducción a la compatibilidad de tipos:

Hasta ahora hemos visto solo tres tipos de datos, integer , real y string. Una variable integer no puede contener reales pero una real sí puede contener enteros. Esto puede resultar confuso, veamos:

El número entero 4 puede ser guardado en una variable del tipo real ya que automáticamente el compilador transforma el entero 4 en el real 4.0. Esto es totalmente posible porque el entero 4 y el real 4.0 siguen siendo exactamente el mismo valor.

A la inversa no es posible porque un real, por ejemplo, 1.2 no puede ser pasado a entero sin modificar su valor, ya sea truncándolo (dejándolo en 1) o redondeándolo de alguna manera. De este modo se pierde información y no existe un traspaso de real a integer automático.

En sus programas, si ustedes intentan ingresar un valor real, por ejemplo 5.2, verán que sus programas se caen, o sea que se da un error y el programa se cierra abruptamente. Eso pasa porque ustedes indicaron variables del tipo integer dentro de los procedimientos read o readln, entonces el programa intenta guardar un real en una variable integer y al no poder se cae.

A la inversa no habría problema, si ustedes declaran todas sus variables como real e ingresan en la entrada estándar un valor integer pues no habrá problema porque como ya dije, la conversión de integer a real es automática y no afecta en nada los valores.

Ahora, ¿qué pasa si en la entrada de nuestros programas de cálculo de área y perímetro el usuario ingresa una letra o una palabra? El programa se caerá inevitablemente. Obviamente no existe compatibilidad entre tipos numéricos y tipos de caracteres. Un buen programa debería, en vez de caerse, mostrar un mensaje de error al usuario o algo por el estilo, sin embargo eso lo veremos a partir del segundo capítulo de nuestro curso, aún no podemos hacerlo.

Estos errores no son predecibles para el compilador por lo tanto nuestros programas compilan satisfactoriamente, luego los errores vienen por parte de quién ingresa los datos y pues el sistema cae. Sin embargo, existen errores sí predecibles por el compilador y que se nos advertirán al intentar compilar:

Supongan que la variable area de mi programa del triángulo es del tipo integer, o sea que mi declaración fue así:

Código:
Var
   base, altura, area: integer;


Al intentar compilar nuestro programa tendríamos un error que nos señalaría esta línea:

Código:
area:= base*altura/2;


¿Por qué? Como dije antes, la operación de división (/) representa la división real y devuelve como valor un número real. Por ejemplo, si altura vale 3 y base vale 7 la operación base*altura/2 da como resultado 10.5, lo cual es un real. Ahora, si base vale 2 y altura vale 3 el resultado de base*altura/2 da 3, pero como / devuelve un real en realidad el 3 es 3.0. Como ven, la operación / siempre devuelve un real sin importar los operandos.

Al intentar asignar un valor involucrado con / a una variable del tipo integer, el compilador se da cuenta de eso y les dice que hay una incompatibilidad de tipos, que se esperaba un entero y se encontró un real.

Del mismo modo imaginen estas declaraciones de variables:

Código:
Var
   numero: real;
   palabra: string;


Imaginen esta asignación:

Código:
numero:= palabra;


Claramente hay una incompatibilidad de tipos, ya que estamos intentando asignar un valor String a un Real. El compilador se dará cuenta y nos regañará.

Sin embargo, si intentan asignar una variable entera a una real no habrá regaño, eso ya lo expliqué.

Para sus programas anteriores, lo mejor sería declarar todas las variables del tipo real, lo cual solucionaría los posibles problemas de incompatibilidad de números, sin embargo, si nuestros usuarios ingresan otra cosa que no sean números el programa caerá.

A la tarea de detectar todas las posibles situaciones que puede enfrentar nuestro programa al ser usado y sus consecuencias se le llama Captura de errores y es una de las tareas más difíciles ya que es fácil que se nos pase por alto algún caso, y más aún cuando nuestro programa es muy complejo. A medida que avancemos veremos cómo enfrentar estas situaciones, o sea, como hacer que nuestros programas sepan qué esperar y qué mostrar en caso de que lo ingresado sea incorrecto.
------------------------------------------------------------------------------------

Errores en Tiempo de Ejecución y errores en Tiempo de Compilación:

Luego de escribir el código siempre intentamos compilarlo para generar nuestro ejecutable y ver los resultados de nuestro trabajo. Mientras el programa se compila decimos que estamos en tiempo de compilación. Los errores que pueden sufrirse aquí son generalmente de sintaxis y de compatibilidad de tipos como vimos hace un momento. Cuando hay un error en tiempo de compilación el compilador se detiene y nos indica el lugar donde encontró el error proporcionándonos además alguna información acerca de por qué se produjo. Estos son los errores más fáciles de arreglar ya que son detectables de forma sencilla.
Ahora bien, que un programa compile perfectamente no nos dice que no tenga errores. Cuando ejecutamos un programa decimos que estamos en tiempo de ejecución. Los errores en tiempo de ejecución provocan que el programa se cuelgue, termine inesperadamente perdiéndose toda la información que teníamos o que muestre resultados inesperados. Estos errores son los menos deseados y los más difíciles de detectar ya que se deben a errores en nuestras instrucciones al programa, generalmente conocidos como errores lógicos.

Con los ejemplos de hace un momento, nuestros programas sufrirían errores en tiempo de ejecución si el usuario ingresa valores inesperados en la entrada, sin embargo, puede suceder que el usuario haga todo bien y el programa aún no funcione.

Veamos un ejemplo sencillo, un programa que divide dos números:

Código:
1 PROGRAM dividir;
2
3 Var
4    a, b: real;
5
6 BEGIN
7    Write(‘Ingrese un número: ‘);
8    Readln(a);
9    Write(‘Ingresa otro número: ‘);
10   Readln(b);
11
12   Wtieln(‘El resultado de la división es: ‘,a/b:1:2);
13 END.


Supongamos que sabemos que nuestros usuarios solo ingresarán números a nuestro programa, o sea que no habrá problemas con los tipos de datos. ¿Cuál sería el problema entonces?

Si ustedes escriben ese código e intentan compilarlo verán que funciona perfectamente. Si asumimos que solo se ingresan números entonces no habría error posible, pero sí lo hay.

Antes de continuar, quiero que todos ustedes compilen y prueben ese programa, pruébenlo muchas veces con valores diferentes, positivos y negativos a ver si son capaces de descubrir el problema. Luego continúen leyendo ya que lo explicaré aquí.


Pues bien. Ese código no tiene errores y el programa en sí tampoco. En realidad, si asumimos que solo se ingresarán números en la entrada estándar, de los infinitos casos de divisiones posibles existe solo una que es problemática: La división entre 0. ¿Qué pasa si el usuario ingresa como segundo valor el número 0?
Supongan el siguiente ejemplo de ejecución:

Código:
Ingrese un número: 5
Ingrese otro número: 0


¿Qué debería mostrar nuestro programa? Al llegar a la línea 12 he intentar la división de a/b, o sea 5/0, no podrá ya que la división entre 0 no está definida matemáticamente y el programa producirá un error y se terminará su ejecución. Lo correcto sería que si el usuario ingresa un 0 para la variable b el programa nos muestre un mensaje de error y nos vuelva a pedir un nuevo valor. Cuando veamos estructuras de control veremos como tomar distintos caminos según las condiciones que se dan.

Este es un ejemplo claro para ver que el hecho de que un programa compile no significa que haga lo que queremos o que hayan mil errores posibles. Cuando un programa se vuelve muy complejo los posibles errores son tantos que resulta casi imposible detectarlos todos ya que a veces las posibilidades son verdaderamente infinitas. No es posible, dado un programa muy complejo, detectar todos los errores, sin embargo en la industria del software se intenta minimizar al máximo esto, existiendo equipos de trabajo solo encargados al test de programas (testing).
-------------------------------------------------------------------------------------

Palabras reservadas:

Las palabras reservadas por Pascal son aquellas que indican alguna función específica del lenguaje, como por ejemplo, write indica que algo se desplegará en pantalla y readln que el usuario ingresará alguna información. Que una palabra sea reservada indica que esta no puede utilizarse como identificador, o sea, uno no puede crear un programa llamado Writeln o Var, o una variable llamada Readln. Utilizar palabras reservadas indebidamente es un error de sintaxis.

Dicho de otro modo, las palabras reservadas tienen un significado para el lenguaje y no pueden ser utilizadas como identificadores ni colocadas en lugares en los que no concuerden, cualquiera de estos actos en un error de sintaxis y será detectado en tiempo de compilación.

He aquí una lista de casi todas las palabras reservadas en pascal, muchas de las cuales no tocaremos en este curso:



------------------------------------------------------------------------------------

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. Por ejemplo dado un número entero sabemos que el siguiente es ese número más 1 y el anterior es el número menos 1. Dado el 5 su predecesor es el 4 y su sucesor es el 6.

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. Por ejemplo, dado el 1.5 ¿quién le sigue? ¿quién está detrás?

-----------------------------

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. Existen más tipos pero no nos importan en absoluto.

-------------------------------------------------------------------------------------

Operadores en pascal:


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



-------------------------------------------------------------------------------------

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:
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, solo son una documentación explicativa. 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 *) tal como se ve en la línea 14 de nuestro programa. Un comentario multilínea puede ocupar una o más líneas de código, tantas como sea necesario.


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. Podemos verlos en las líneas 7, 8, 12 y 20 de nuestro ejemplo. En el IDE se verán de color gris.

Como ya dije, todo lo que está en un comentario se omite por el compilador, por lo tanto puede escribir lo que se les antoje allí, incluso palabras reservadas e identificadores.

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.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
xaQes
Usuario Iniciado


Registrado: 21 Feb 2011
Mensajes: 31
Ubicación: Valencia - España

Mensaje Publicado: Sábado 05 Mar 2011 00:10

Título del mensaje: Re: Programando desde 0: 4- Errores, tipos, operadores y más

Responder citando

Gracias por la leccion!
Leida y comprendida, almenos eso creo.
En cuanto pueda intentare hacer los ejercicos.
Saludos!

Volver arriba
Ver perfil del usuario Enviar mensaje privado
nicagio
Usuario Iniciado


Registrado: 28 Dic 2010
Mensajes: 16

Mensaje Publicado: Sábado 05 Mar 2011 02:06

Título del mensaje: Re: Programando desde 0: 4- Errores, tipos, operadores y más

Responder citando

excelente Ok , vamos muy bien

Volver arriba
Ver perfil del usuario Enviar mensaje privado
espino316
Usuario Iniciado


Registrado: 13 Ene 2010
Mensajes: 16
Ubicación: Monterrey - Mexico

Mensaje Publicado: Sábado 05 Mar 2011 02:10

Título del mensaje: Re: Programando desde 0: 4- Errores, tipos, operadores y más

Responder citando

Ni estaba tan dificil Risa

Código:

PROGRAM Ejercicio14;

(*
        PROGRAMA QUE CALCULA LA POTENCIA DE DOS NUMEROS
*)

//      Declaraci¢n de variables
VAR
        a, b: integer;
        res: real;

//      Inicio de la ejecuci¢n del programa
BEGIN
        //      Mensaje de inicio
        writeln('Programa que calcula la potencia de dos numeros');

        //      Leer a
        write('Escriba el valor de a: ');
        readln(a);

        //      Leer b
        write('Escriba el valor de b: ');
        readln(b);
             
        (*     
         Calcular el resultado
         Si LN(a^b) = b * LN(a)
         y EXP( LN(x) ) = x
         Entonces        a^b = EXP( (b * LN(a)) )
      *)      
        res := EXP((b*LN(a)));

        writeln('El resultado de potenciar ',a,'^',b,' es: ',res:1:2);

END.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
DANIEL ARJONA CANO
Usuario Iniciado


Registrado: 08 Nov 2010
Mensajes: 13

Mensaje Publicado: Sábado 05 Mar 2011 05:06

Título del mensaje: Re: Programando desde 0: 4- Errores, tipos, operadores y más

Responder citando

Perdón, pero no acabo de coger lo que hace el logaritmo neperiano y el exponencial, que hace cada cosa?, gracias.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
DANIEL ARJONA CANO
Usuario Iniciado


Registrado: 08 Nov 2010
Mensajes: 13

Mensaje Publicado: Sábado 05 Mar 2011 05:11

Título del mensaje: Re: Programando desde 0: 4- Errores, tipos, operadores y más

Responder citando

He hecho los ejercicios hasta el 13 y me he quedado atascado en el 14 por lo del exponencial y el logaritmo neperiano dejándome también el 5 que todo el rato me da error y he probado unas 10 veces y nada, ayuda por favor!!.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
DANIEL ARJONA CANO
Usuario Iniciado


Registrado: 08 Nov 2010
Mensajes: 13

Mensaje Publicado: Sábado 05 Mar 2011 05:44

Título del mensaje: Re: Programando desde 0: 4- Errores, tipos, operadores y más

Responder citando

Hay una trampa en el primer programa del ejercicio 15, no se ha de darle el nombre del programa como lo escriben "muestra1 (output)" si no dara un error que dice que no es un archivo por lotes ejecutable o sea que no lo considera un nombre de ejecutable valido creo, en el programa no lo nombreis asi.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
DANIEL ARJONA CANO
Usuario Iniciado


Registrado: 08 Nov 2010
Mensajes: 13

Mensaje Publicado: Sábado 05 Mar 2011 06:37

Título del mensaje: Re: Programando desde 0: 4- Errores, tipos, operadores y más

Responder citando

Hechos todos, solo que no me sale el ejercicio 5 y el 14 tengo la duda de lo que significa el exponencial y el logaritmo neperiano, lo demás todo hecho, a ver quien me puede ayudar con mis dudas por favor, gracias.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Kyshuo Ayame
Moderador Global


Registrado: 07 Ene 2011
Mensajes: 1044

Mensaje Publicado: Sábado 05 Mar 2011 19:23

Título del mensaje: Re: Programando desde 0: 4- Errores, tipos, operadores y más

Responder citando

El ejercicio 5 no has podido realizarlo ya que habla de constantes y aún no he dado eso, va para la siguiente lección.

Para realizar el ejercicio 14 no necesitas entender qué hace el logaritmo neperiano y el exponencial, sino entender las dos expresiones allí dadas para, usando ambas, obtener a^b.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
DANIEL ARJONA CANO
Usuario Iniciado


Registrado: 08 Nov 2010
Mensajes: 13

Mensaje Publicado: Sábado 05 Mar 2011 19:49

Título del mensaje: Re: Programando desde 0: 4- Errores, tipos, operadores y más

Responder citando

Ok, gracias, pensaba que tenia que hacer un bucle para multiplicar sobre si mismo un numero 'n' veces hasta llegar a 'n', pero mejor me espero a que lo expliques cuando toque, que si lo miro por mi cuenta me liare.
Era bueno en algebra pero hace tanto tiempo que ya no me acuerdo de mucho, a la espera de otra lección y gracias.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Kyshuo Ayame
Moderador Global


Registrado: 07 Ene 2011
Mensajes: 1044

Mensaje Publicado: Domingo 06 Mar 2011 02:15

Título del mensaje: Re: Programando desde 0: 4- Errores, tipos, operadores y más

Responder citando

A las órdenes para cualquier duda. Aún ni hemos visto bucles, eso vendrá para la segunda parte.

Espero que por ahora todo resulte comprensible.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Ryouji
Usuario Iniciado


Registrado: 22 Mar 2009
Mensajes: 33

Mensaje Publicado: Domingo 06 Mar 2011 16:45

Título del mensaje: Re: Programando desde 0: 4- Errores, tipos, operadores y más

Responder citando

Yo también he hecho todos los ejercicios excepto los de constantes y el 14, pero se me suceden una serie de preguntas. Los de constantes es normal que no sepamos demasiado hacerlos porque aún no las hemos dado, pero el 14 no lo podemos hacer por no entender el logaritmo? o deberíamos saber hacerlo con lo aprendido hasta ahora aún no entendamos el logaritmo? es para seguir esforzándome con eso Risa tonta

Luego otra pregunta en el ejercicio 15 en la línea de PROGRAM :

Código:

PROGRAM Muestra1 (output);


¿Qué es lo que hace exactamente ese (output)?

y en :

Código:

PROGRAM Muestra2 (input, output);


¿Qué es lo que hace input? ¿hace alguna función diferente al juntarse con output?

Gracias por otra lección mas Risa

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Kyshuo Ayame
Moderador Global


Registrado: 07 Ene 2011
Mensajes: 1044

Mensaje Publicado: Domingo 06 Mar 2011 18:39

Título del mensaje: Re: Programando desde 0: 4- Errores, tipos, operadores y más

Responder citando

Ryouji escribió:
Yo también he hecho todos los ejercicios excepto los de constantes y el 14, pero se me suceden una serie de preguntas. Los de constantes es normal que no sepamos demasiado hacerlos porque aún no las hemos dado, pero el 14 no lo podemos hacer por no entender el logaritmo? o deberíamos saber hacerlo con lo aprendido hasta ahora aún no entendamos el logaritmo? es para seguir esforzándome con eso :):


El ejercicio de constantes lo harán en la siguiente lección y no supondrá absolutamente dificultad alguna.

El ejercicio 14 es, como dije, el que más problemas presenta. No hace falta comprender lo que es el logaritmo neperiano y la exponencial, ya que simplemente son funciones matemáticas.

Pascal nos provee de estas funciones:

ln(X) calcula el logaritmo de X y nos devuelve su valor en reales.
exp(x) calcula la exponencial de X y nos devuelve su valor en reales.
Esto ya lo dije en esta misma lección. Recuerden que [b]X
puede ser un valor, una variable o una expresión numérica.

exp(x) calcula simplemente e^x (e elevado a la x, dicho de otra forma, la potencia de x en base e).

Para los que no lo saben, e es un número matemático que vale
2.71828182...

con infinitas cifras luego de la coma. Es un número famoso al igual que el lo es el número pi que vale

3.141622555155151...

El ejercicio nos pide que hagamos un programa que usando estas propiedades

ln(a^b) = b * ln(a)
e^ln(x) = x

Para nosotros e^x es exp(x). Entonces, siguiendo esas propiedades tenemos que:

ln(a^b) = b*ln(a) y exp(ln(x)) = x.

Entonces si escribimos exp(b*ln(a)) estamos obteniendo a^b.

Este ejercicio es puramente matemático, por eso no me preocupa que no puedan hacerlo ya que este no es un curso de matemática. Sin embargo recuerden que yo dije al principio de este curso que la matemática y la programación están muy unidas.

Ryouji escribió:

Luego otra pregunta en el ejercicio 15 en la línea de PROGRAM :

Código:

PROGRAM Muestra1 (output);


¿Qué es lo que hace exactamente ese (output)?

y en :

Código:

PROGRAM Muestra2 (input, output);


¿Qué es lo que hace input? ¿hace alguna función diferente al juntarse con output?

Gracias por otra lección mas :)


Los parámetros (input, output) indican que los programas son de entrada y salida, al poner solo (input) o solo (outpu) indicamos que los programas son solo de entrada o solo de salida. Sin embargo yo no les expliqué esto porque pascal asume esos parámetros por defecto, por lo tanto no hace falta indicarlos.

Sigan adelante...[/b]

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Ryouji
Usuario Iniciado


Registrado: 22 Mar 2009
Mensajes: 33

Mensaje Publicado: Domingo 06 Mar 2011 22:26

Título del mensaje: Re: Programando desde 0: 4- Errores, tipos, operadores y más

Responder citando

Muchísimas gracias Kyshuo con tu explicación y lo que decían el resto de compañeros he logrado comprender cómo podría hacerse el ejercicio 14 Risa esto ya es otra cosa, ya que antes me había perdido un poco.

En cuanto a lo de input y output también me lo has explicado muy bien y lo he entendido, gracias!

Esperando entonces otra lección con ansias de nuevo :D a mí por lo menos me tienes completamente enganchada al curso.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Kyshuo Ayame
Moderador Global


Registrado: 07 Ene 2011
Mensajes: 1044

Mensaje Publicado: Lunes 07 Mar 2011 20:42

Título del mensaje: Re: Programando desde 0: 4- Errores, tipos, operadores y más

Responder citando

En breve publicaré la solución de algunos de los ejercicios y luego iremos a la siguiente lección.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema Ir a página 1234567Siguiente
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Buenas desde el sur del sur =)

Maugarni Preséntate a la comunidad 1 Jueves 22 Ago 2019 14:09 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Hola desde bcn

Dav2k6 Preséntate a la comunidad 2 Miércoles 26 Jun 2019 19:22 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Existen problemas al descargar musica desde you...

SusanaP Tu PC 2 Martes 26 Mar 2019 19:22 Ver último mensaje
El foro no contiene ningún mensaje nuevo

hola!! los saludo desde argentina

mery Preséntate a la comunidad 2 Jueves 13 Dic 2018 17:28 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Llamada a web service desde form

mrrobot2 Programación Web en general 1 Martes 14 Nov 2017 00:50 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,