Embarcadero

Autor Tema: Operaciones básicas y funciones  (Leído 6766 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Fenareth

  • Administrador
  • ******
  • Thank You
  • -Given: 43
  • -Receive: 131
  • Mensajes: 2,846
  • Calificaciones: +157/-1
  • Sexo: Femenino
  • Dulce corderito entre lobos
Operaciones básicas y funciones
« Topic Start: 30 de mayo de 2009, 17:25:45 »
Aquí mi segunda aportación... Críticas y sugerencias ??? Super Bienvenidas !!!!  :D  (y)

Código: cpp [Seleccionar]
/* Programa que realiza las 4 operaciones básicas a travéss de funciones*/

#include <stdio.h>
#include <conio.h>

int suma(int a, int b)//Función que suma dos enteros que recibe como parámetros y regresa un resultado también entero
{
int resultado; //Declara resultado como variable local de tipo entero

resultado=a+b; //Realiza la operación aritmética de suma y guarda el valor en la variable resultado
return resultado; //Regresa el valor de la variable resultado
}

int resta(int a, int b)//Función que resta dos enteros que recibe como parámetros y regresa un resultado también entero
{
int resultado; //Declara resultado como variable local de tipo entero

resultado=a-b; //Realiza la operación aritmíéica de resta y guarda el valor en la variable resultado
return resultado; //Regresa el valor de la variable resultado
}

int multiplica(int a,int b)//Función que multiplica dos enteros que recibe como parámetros y regresa un resultado también entero
{
int resultado; //Declara resultado como variable local de tipo entero

resultado=a*b; //Realiza la operación aritmética de multiplicación y guarda el valor en la variable resultado
return resultado; //Regresa el valor de la variable resultado
}

int divide(int a,int b)//Función que divide dos enteros que recibe como parámetros y regresa un resultado también entero
{
int resultado; //Declara resultado como variable local de tipo entero

if (b!=0) // Verifica que el divisor sea diferente de CERO para evitar un error al dividir
resultado=a/b; //Realiza la operación aritmética de división y guarda el valor en la variable resultado
else
if (a!=0) // En caso de que b sea CERO verifica si la división puede tomar a como divisor
resultado=b/a; //Realiza la operación aritmética de división y guarda el valor en la variable resultado
else
resultado= -1; // Si tanto a como b son ceros, asigna a resultado un valor de error (-1)

return resultado; //Regresa el valor de la variable resultado
}

void main (void) //Función principal
{
int x,y; //Se declaran dos variables locales para el main, de tipo entero

printf("\n Introduce un numero entero positivo -> "); //Mensaje de salida a pantalla
scanf("%d",&x); //Se capta el valor introducido por el usuario y se almacena en la variable x
printf("\n Introduce otro numero entero positivo -> "); //Segundo mensaje de salida a pantalla
scanf("%d",&y); //Se capta el valor introducido por el usuario y se almacena en la variable y

printf("\n\n\n\t La sumatoria es de -> %d",suma(x,y)); //Envía el resultado a pantalla, mandando llamar a la función "suma" con  x y y como parámetros
printf("\n\n\t La resta es de -> %d",resta(x,y)); //Envia el resultado a pantalla, mandando llamar a la función "resta" con  x y y como parámetros
printf("\n\n\t La multiplicacion es de -> %d",multiplica(x,y)); //Envía el resultado a pantalla, mandando llamar a la función "multiplica" con  x y y como parámetros
if ((divide(x,y))!=-1)//Si el resultado del llamado a la función "divide" con x y y como parámetros es diferente al resultado de error (-1) envía a pantalla el resultado
printf("\n\n\t La division es de -> %d",divide(x,y));
else //En caso de recibir -1 como resultado, envía un mensaje de error a pantalla
printf("\n\n\t La division no pudo ser realizada");


printf("\n\n\n\n Pulsa cualquier tecla para terminar....");
getch(); //Espera pulsación de tecla por parte del usuario para terminar
}



Nota Adicional:
El "\n" en el printf, permite un salto de línea en el lugar donde se coloque, en este caso, al inicio de cada uno de los mensajes en pantalla. También está el "\t" que permite hacer tabulaciones.
« Última Modificación: 05 de febrero de 2010, 13:22:53 por escafandra »
Tu corazón late a la izquierda y el mío late junto al tuyo...

Desconectado Fenareth

  • Administrador
  • ******
  • Thank You
  • -Given: 43
  • -Receive: 131
  • Mensajes: 2,846
  • Calificaciones: +157/-1
  • Sexo: Femenino
  • Dulce corderito entre lobos
Re:Operaciones básicas y funciones
« Respuesta #1: 30 de mayo de 2009, 17:28:22 »
Se ve un poco feo sin indentar, pero no respeta los espacios al momento de publicarlo  :$, les aseguro que en mi programa original sí­ está todo correctamente indentado  :p...

Saludos,
Tu corazón late a la izquierda y el mío late junto al tuyo...

Desconectado escafandra

  • Moderador
  • ******
  • Thank You
  • -Given: 104
  • -Receive: 750
  • Mensajes: 2,566
  • Calificaciones: +792/-0
  • Sexo: Masculino
Re:Operaciones básicas y funciones
« Respuesta #2: 30 de mayo de 2009, 17:33:49 »
Bravo  (y) Buen ejemplo para ir abriendo boca.

Podemos resumir el código de las funciones, ahora que las hemos entendido?
Código: cpp [Seleccionar]
int suma(int a, int b)//Función que suma dos enteros que recibe como parámetros y regresa un resultado también entero
{
   int resultado; //Declara resultado como variable local de tipo entero
 
   resultado=a+b; //Realiza la operación aritmética de suma y guarda el valor en la variable resultado
   return resultado; //Regresa el valor de la variable resultado
}

Se puede escribir así­:
Código: cpp [Seleccionar]
int suma(int a, int b)//Función que suma dos enteros que recibe como parámetros y regresa un resultado también entero
{
    return a+b; //devuelve la operación aritmética de suma
}


Saludos.

Desconectado escafandra

  • Moderador
  • ******
  • Thank You
  • -Given: 104
  • -Receive: 750
  • Mensajes: 2,566
  • Calificaciones: +792/-0
  • Sexo: Masculino
Re:Operaciones básicas y funciones
« Respuesta #3: 30 de mayo de 2009, 17:35:06 »
Se ve un poco feo sin indentar, pero no respeta los espacios al momento de publicarlo  :$, les aseguro que en mi programa original sí­ está todo correctamente indentado  :p...

Saludos,

Trata de hacerlo con espacios y no con tabulaciones  :D

Saludos.

Desconectado Fenareth

  • Administrador
  • ******
  • Thank You
  • -Given: 43
  • -Receive: 131
  • Mensajes: 2,846
  • Calificaciones: +157/-1
  • Sexo: Femenino
  • Dulce corderito entre lobos
Re:Operaciones básicas y funciones
« Respuesta #4: 30 de mayo de 2009, 17:39:51 »
Se ve un poco feo sin indentar, pero no respeta los espacios al momento de publicarlo  :$, les aseguro que en mi programa original sí­ está todo correctamente indentado  :p...

Saludos,

Trata de hacerlo con espacios y no con tabulaciones  :D

Saludos.

Yo hablaba del código no de lo que se mostraba en pantalla  *-)... hablamos de lo mismo ???  :$  :p

Saludos

P.D. Las siguientes entregas tendrán que esperar un poco, jejeje, aún no han inventado un programa que lave la ropa sin lavadora, así­ que tendré que hacerlo a mano  :(  :p
Tu corazón late a la izquierda y el mío late junto al tuyo...

Desconectado Fenareth

  • Administrador
  • ******
  • Thank You
  • -Given: 43
  • -Receive: 131
  • Mensajes: 2,846
  • Calificaciones: +157/-1
  • Sexo: Femenino
  • Dulce corderito entre lobos
Re:Operaciones básicas y funciones
« Respuesta #5: 30 de mayo de 2009, 17:50:20 »
Antes de irme, la modificación del código con las observaciones de nuestro amigo escafandra aplicadas  :D...

Código: cpp [Seleccionar]
/* Programa que realiza las 4 operaciones básicas a través de funciones*/

#include <stdio.h>
#include <conio.h>

int suma(int a, int b)//Función que suma dos enteros que recibe como parámetros y regresa un resultado también entero
{
    return a+b; //Regresa el valor de la variable resultado
}

int resta(int a, int b)//Función que resta dos enteros que recibe como parámetros y regresa un resultado también entero
{
    return a-b; //Regresa el valor de la variable resultado
}

int multiplica(int a,int b)//Función que multiplica dos enteros que recibe como parámetros y regresa un resultado también entero
{
    return a*b; //Regresa el valor de la variable resultado
}

int divide(int a,int b)//Función que divide dos enteros que recibe como parámetros y regresa un resultado también entero
{
    if (b!=0) // Verifica que el divisor sea diferente de CERO para evitar un error al dividir
        return a/b; //Regresa la operación aritmética de división
    else
        if (a!=0) // En caso de que b sea CERO verifica si la división puede tomar a como divisor
            return b/a; //Regresa la operación aritmética de división
        else
            return -1; // Si tanto a como b son ceros, regresa como resultado un valor de error (-1)

}

void main (void) //Función principal
{
    int x,y; //Se declaran dos variables locales para el main, de tipo entero

    printf("\n Introduce un numero entero positivo -> "); //Mensaje de salida a pantalla
    scanf("%d",&x); //Se capta el valor introducido por el usuario y se almacena en la variable x
    printf("\n Introduce otro numero entero positivo -> "); //Segundo mensaje de salida a pantalla
    scanf("%d",&y); //Se capta el valor introducido por el usuario y se almacena en la variable y

    printf("\n\n\n\t La sumatoria es de -> %d",suma(x,y)); //Enví­a el resultado a pantalla, mandando llamar a la función "suma" con  x y y como parámetros
    printf("\n\n\t La resta es de -> %d",resta(x,y)); //Enví­a el resultado a pantalla, mandando llamar a la función "resta" con  x y y como parámetros
    printf("\n\n\t La multiplicacion es de -> %d",multiplica(x,y)); //Enví­a el resultado a pantalla, mandando llamar a la función "multiplica" con  x y y como parámetros
    if ((divide(x,y))!=-1)//Si el resultado del llamado a la función "divide" con x y y como parámetros es diferente al resultado de error (-1) enví­a a pantalla el resultado
        printf("\n\n\t La division es de -> %d",divide(x,y));
    else //En caso de recibir -1 como resultado, enví­a un mensaje de error a pantalla
        printf("\n\n\t La division no pudo ser realizada");


    printf("\n\n\n\n Pulsa cualquier tecla para terminar....");
    getch(); //Espera pulsación de tecla por parte del usuario para terminar
}


P.D. Lo de los espacios en vez de tabulaciones en código también funcionó de perlas, gracias amigo  (y)  :D
Tu corazón late a la izquierda y el mío late junto al tuyo...

Desconectado escafandra

  • Moderador
  • ******
  • Thank You
  • -Given: 104
  • -Receive: 750
  • Mensajes: 2,566
  • Calificaciones: +792/-0
  • Sexo: Masculino
Re:Operaciones básicas y funciones
« Respuesta #6: 30 de mayo de 2009, 17:55:29 »
Claro, a eso me referí­a al código. Lo captaste rápido. (y)

Saludos.

Desconectado escafandra

  • Moderador
  • ******
  • Thank You
  • -Given: 104
  • -Receive: 750
  • Mensajes: 2,566
  • Calificaciones: +792/-0
  • Sexo: Masculino
Re:Operaciones básicas y funciones
« Respuesta #7: 30 de mayo de 2009, 18:02:59 »
Otro pequeño detallito a la hora de resumir código, en eso C es todo un campeón:

No es necesario especificar, en los condicionales, que sea distinto de cero. Si la expresión no es cero y se mete en un if el compilador automáticamente realiza un casting a BOOL de forma que estas dos expresiones son lo mismo:

Código: cpp [Seleccionar]
if(a!=0)....
if(a)....


Entonces podemos cambiar esto:
Código: cpp [Seleccionar]
int divide(int a,int b)//Función que divide dos enteros que recibe como parámetros y regresa un resultado también entero
{
    if (b!=0) // Verifica que el divisor sea diferente de CERO para evitar un error al dividir
        return a/b; //Regresa la operación aritmética de división
    else
        if (a!=0) // En caso de que b sea CERO verifica si la división puede tomar a como divisor
            return b/a; //Regresa la operación aritmética de división
        else
            return -1; // Si tanto a como b son ceros, regresa como resultado un valor de error (-1)
 
}


por esto otro:
Código: cpp [Seleccionar]
int divide(int a,int b)//Función que divide dos enteros que recibe como parámetros y regresa un resultado también entero
{
    if (b) // Verifica que el divisor sea diferente de CERO para evitar un error al dividir
        return a/b; //Regresa la operación aritmética de división
    else
        if (a) // En caso de que b sea CERO verifica si la división puede tomar a como divisor
            return b/a; //Regresa la operación aritmética de división
        else
            return -1; // Si tanto a como b son ceros, regresa como resultado un valor de error (-1)
 
}



Saludos.

Desconectado Fenareth

  • Administrador
  • ******
  • Thank You
  • -Given: 43
  • -Receive: 131
  • Mensajes: 2,846
  • Calificaciones: +157/-1
  • Sexo: Femenino
  • Dulce corderito entre lobos
Re:Operaciones básicas y funciones
« Respuesta #8: 30 de mayo de 2009, 18:06:02 »
Otro pequeño detallito a la hora de resumir código, en eso C es todo un campeón:

No es necesario especificar, en los condicionales, que sea distinto de cero. Si la expresión no es cero y se mete en un if el compilador automáticamente realiza un casting a BOOL de forma que estas dos expresiones son lo mismo:

Código: cpp [Seleccionar]
if(a!=0)....
if(a)....

....

Interesante, eso sí­ no lo sabí­a  :)... Gracias !  8-|
Tu corazón late a la izquierda y el mío late junto al tuyo...

Desconectado eduarcol

  • Administrador
  • ******
  • Thank You
  • -Given: 14
  • -Receive: 123
  • Mensajes: 3,914
  • Calificaciones: +154/-2
  • Sexo: Masculino
  • Rejodedor
Re:Operaciones básicas y funciones
« Respuesta #9: 31 de mayo de 2009, 07:36:15 »
eso ultimo si seria complicarle la vida a los que apenas si conocemos el lenguaje jejejje
...Yo naci en esta ribera del arauca vibrador
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela

Desconectado Fenareth

  • Administrador
  • ******
  • Thank You
  • -Given: 43
  • -Receive: 131
  • Mensajes: 2,846
  • Calificaciones: +157/-1
  • Sexo: Femenino
  • Dulce corderito entre lobos
Re:Operaciones básicas y funciones
« Respuesta #10: 31 de mayo de 2009, 16:34:33 »
eso ultimo si seria complicarle la vida a los que apenas si conocemos el lenguaje jejejje

A mi me parece no tan lógico al sólo observar el código, claro que si alguien te lo explica pues comprendes la situación pero a primera vista no es tan obvio  :p...

Lo bueno es que se han quedado las dos opciones junto con la explicación para que se tome la que se desee, se sabe que ambas son correctas, sólo que una más óptima que la otra...

Saludos  :)
Tu corazón late a la izquierda y el mío late junto al tuyo...

Desconectado escafandra

  • Moderador
  • ******
  • Thank You
  • -Given: 104
  • -Receive: 750
  • Mensajes: 2,566
  • Calificaciones: +792/-0
  • Sexo: Masculino
Re:Operaciones básicas y funciones
« Respuesta #11: 31 de mayo de 2009, 17:17:17 »
eso ultimo si seria complicarle la vida a los que apenas si conocemos el lenguaje jejejje
Pues por suerte o por desgracia, en C existen innumerables formas de contraer código y de complicarse la vida conozcas o no el lenguaje  :p :D.

A mi me parece no tan lógico al sólo observar el código...

Bueno, desde la perspectiva de que una sentencia if evalúa una expresión lógica booleana, el resultado es verdadero o falso. Si la expresión es simplemente:
Código: cpp [Seleccionar]
if(a)
y a, no es cero, entonces es verdadero.

Para mi es lo mas lógico y natural del mundo, y recudes código. Al fin y al cabo, un BOOL no es ni mas ni menos que un int que vale cero o no.  ;)

Saludos.
« Última Modificación: 31 de mayo de 2009, 17:23:16 por escafandra »

Desconectado cHackAll

  • Administrador
  • ******
  • Thank You
  • -Given: 2
  • -Receive: 83
  • Mensajes: 496
  • Calificaciones: +87/-666
  • Sexo: Masculino
  • Baneado?
Re:Operaciones básicas y funciones
« Respuesta #12: 31 de mayo de 2009, 17:55:32 »
...Pues por suerte o por desgracia, en C existen innumerables formas de contraer código y de complicarse la vida conozcas o no el lenguaje...

No está en duda las bien demostradas capacidades del lenguaje C, como ser la "reducción de código", sino hablamos de qué tan legible es éste para los ojos inexpertos o aquellos acostumbrados a la "no reducción" del mismo.

Hasta hace poco he creado código sin importarme que tan legible es éste, pero cuando se desarrolla en equipo o en el caso de que el código tenga fines didácticos se debe escribir de la forma más comprensible por razones obvias e independientemente de las capacidades que uno tenga :)

No es crí­tica mi buen amigo escafandra, solo que la letra entra con sangre y prefiero difundir mi experiencia.

Bueno, resulta que cierto bcb6p que hice por ahí­ no cuenta con librerí­as estándar y nadie me lo hizo notar :(, en mi siguiente post prometo aportar con algo de código :$

Salud!

Desconectado escafandra

  • Moderador
  • ******
  • Thank You
  • -Given: 104
  • -Receive: 750
  • Mensajes: 2,566
  • Calificaciones: +792/-0
  • Sexo: Masculino
Re:Operaciones básicas y funciones
« Respuesta #13: 31 de mayo de 2009, 18:10:19 »
No está en duda las bien demostradas capacidades del lenguaje C, como ser la "reducción de código", sino hablamos de qué tan legible es éste para los ojos inexpertos o aquellos acostumbrados a la "no reducción" del mismo.

Claro está que la contracción del código C puede volverlo difí­cil de leer y de entender. Y esto no favorece el aprendizaje ni la adopción del lenguaje.

Con el ejemplo de los condicionales mostré una forma de usar el if muy común en C, de forma que en casi cualquier fragmento de código vamos a encontrar ese uso, lo que me hizo pensar en hacer la observación para que se entienda con claridad el significado.  :)

Saludos.

Desconectado cHackAll

  • Administrador
  • ******
  • Thank You
  • -Given: 2
  • -Receive: 83
  • Mensajes: 496
  • Calificaciones: +87/-666
  • Sexo: Masculino
  • Baneado?
Re:Operaciones básicas y funciones
« Respuesta #14: 02 de junio de 2009, 09:47:47 »
Viendo el ejemplo de Fena, recordé unos ejercicios básicos que escribí­ hace 5 años y pensé que éste es el momento oportuno de publicarlo pues de seguro les será de utilidad. Aunque no están documentados, los primeros ejemplos cuentan con un enunciado lo que permite entender mejor su razón de existir.

Adjunto la mayorí­a del codigo escrito en aquella época (casi 100 ejercicios en C). De acuerdo al hilo aconsejo revisar los ejemplos alfabéticamente, llegando a un ejemplo grafico para hallar la "ruta mas corta" y otro que muestra el uso de pilas, colas y otros. Como habrán de notar ni si quiera en la universidad me resistí­a a utilizar lenguaje de maquina y cualquier artilugio para compensar mi inasistencia a clases :p

Si lo ven pertinente los conocedores del tema pueden comentar acerca de algún ejemplo para analizar sus funciones, alternativas, mejoras o falencias (como la comentada por mi mismo mas arriba). Al igual los aprendices solicitando el mismo efecto para una mejor comprensión.
 
PD; No los retoque en este tiempo, así­ que les pido sean flexibles conmigo :$

Enjoy!

Desconectado egostar

  • Administrador
  • ******
  • Thank You
  • -Given: 1219
  • -Receive: 650
  • Mensajes: 10,053
  • Calificaciones: +709/-7
  • Sexo: Masculino
  • coding my life
    • MeXistemas punto com
Re:Operaciones básicas y funciones
« Respuesta #15: 02 de junio de 2009, 10:02:53 »
Ya he visto tus programas amigo, me haces recordar mis años de estudiante :D (y)

Salud OS

"Si no quieres que la gente se olvide de ti apenas te mueras, escribe algo que valga la pena leerse o valga la pena escribirse."
- Benjamin Franklin
"Los programadores hicimos un pacto con dios, el no hace sistemas y nosotros no hacemos milagros."- Anónimo


          

Desconectado cHackAll

  • Administrador
  • ******
  • Thank You
  • -Given: 2
  • -Receive: 83
  • Mensajes: 496
  • Calificaciones: +87/-666
  • Sexo: Masculino
  • Baneado?
Re:Operaciones básicas y funciones
« Respuesta #16: 02 de junio de 2009, 10:15:24 »
Ya he visto tus programas amigo, me haces recordar mis años de estudiante :D (y)

Salud OS

Mira que es la mejor epoca de la vida! :)

Desconectado egostar

  • Administrador
  • ******
  • Thank You
  • -Given: 1219
  • -Receive: 650
  • Mensajes: 10,053
  • Calificaciones: +709/-7
  • Sexo: Masculino
  • coding my life
    • MeXistemas punto com
Re:Operaciones básicas y funciones
« Respuesta #17: 02 de junio de 2009, 10:30:16 »
Mira que es la mejor epoca de la vida! :)

Por supuesto amigo, mira que cuando tu estabas naciendo yo ya estaba escribiendo código basic :p :D :D :D

Salud OS

"Si no quieres que la gente se olvide de ti apenas te mueras, escribe algo que valga la pena leerse o valga la pena escribirse."
- Benjamin Franklin
"Los programadores hicimos un pacto con dios, el no hace sistemas y nosotros no hacemos milagros."- Anónimo


          

Desconectado escafandra

  • Moderador
  • ******
  • Thank You
  • -Given: 104
  • -Receive: 750
  • Mensajes: 2,566
  • Calificaciones: +792/-0
  • Sexo: Masculino
Re:Operaciones básicas y funciones
« Respuesta #18: 02 de junio de 2009, 17:18:56 »
Viendo el ejemplo de Fena, recordé unos ejercicios básicos que escribí­ hace 5 años y pensé que éste es el momento oportuno de publicarlo pues de seguro les será de utilidad...

Buenos ejercicios, y no cabe duda que que serán de utilidad. La única pega la pondrán aquellos programadores noveles e impacientes que quieran resultados rápidos en un entorno gráfico. Pero no cabe duda de que a leer se empieza por la "A" y el que algo quiere algo le cuesta. De forma que paciencia, que todo se andará.

Estos ejercicios sientan las bases no ya del lenguaje C sino de muchos conceptos importantes de programación.  (y)

Buenos tiempos aquellos, los de TurboC.
Buenos tiempos los del Basic.

Saludos.

Desconectado RaCerLokO

  • Usuario Activo
  • ***
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Mensajes: 28
  • Calificaciones: +4/-0
  • Sexo: Masculino
Re:Operaciones básicas y funciones
« Respuesta #19: 06 de julio de 2009, 13:52:13 »
Tengo una sugerencia, bueno creo que sera buena no se que les parezca a ustedes, lo que Pasa que el codigo que vi al inicio se me hizo muy enredoso en cuanto a que los comentarios lo haces como muy psado de leer, pero si esta muy bien entendible, propongo que los comentarios vayan en la parte superior de la sentencia, digo para que no vayan en la misma linea y se preste a confusiones o dolores de cabeza, creo que asi seria mas facil de leer, no se que piensen ustedes