Autor Tema: CCS - Retorno de más de 1 parámetro - return - Proteus  (Leído 9435 veces)

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

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: CCS - Retorno de más de 1 parámetro - return - Proteus
« Respuesta #15 en: 07 de Septiembre de 2009, 01:16:35 »
Hola pajaro, la manera de trabajar con varios argumentos es como te explico RICHI777, ademas esta en completo acuerdo con el Kernighan (la biblia del C, de Kernighan & Ritchie). Parece razonable tener sobre este tema una opinion basada en la de los mismos creadores del lenguaje! Fijate la pagina 10 (version en ingles) "...C functions are like the subroutines and functions in Fortran or the procedures and functions of Pascal"... O basta con leer la introduccion de la seccion 1.7 (pagina 25).
En conclusion, es correcto que las funciones devuelven valores, y los procedimientos no. Pero mientras que en lenguajes como Pascal se hacen distinciones entre funciones y procedimientos, en C y C++ no, en éstos sólo existen funciones. En Pascal, con procedure cremos un procedimiento, y con function una funcion, y el primero es un procedimiento y el segundo una funcion. En C podemos crear una función del tipo void y llamarle procedimiento si eso nos hace sentir mejor, pero seguira siendo una funcion. Esta es la tipica clase de discuciones que ademas de hacernos perder tiempo no nos lleva a ninguna parte, mejor dejemos esas distinciones a los que trabajan en lenguajes como Pascal, ya que a ellos si les sirve :lol:
@fabianjsm is on twitter

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: CCS - Retorno de más de 1 parámetro - return - Proteus
« Respuesta #16 en: 07 de Septiembre de 2009, 01:23:49 »
Con respecto al codigo que posteaste al inicio del hilo, el unico error es la manera como definiste la funcion:

Código: C
  1. int void out_cnt(int hms,int temp_hms)
  2. {

Quitando el void compila sin problemas.
@fabianjsm is on twitter

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: CCS - Retorno de más de 1 parámetro - return - Proteus
« Respuesta #17 en: 07 de Septiembre de 2009, 01:35:54 »
Hola pajaro, la manera de trabajar con varios argumentos es como te explico RICHI777, ademas esta en completo acuerdo con el Kernighan (la biblia del C, de Kernighan & Ritchie). Parece razonable tener sobre este tema una opinion basada en la de los mismos creadores del lenguaje! Fijate la pagina 10 (version en ingles) "...C functions are like the subroutines and functions in Fortran or the procedures and functions of Pascal"... O basta con leer la introduccion de la seccion 1.7 (pagina 25).
En conclusion, es correcto que las funciones devuelven valores, y los procedimientos no. Pero mientras que en lenguajes como Pascal se hacen distinciones entre funciones y procedimientos, en C y C++ no, en éstos sólo existen funciones. En Pascal, con procedure cremos un procedimiento, y con function una funcion, y el primero es un procedimiento y el segundo una funcion. En C podemos crear una función del tipo void y llamarle procedimiento si eso nos hace sentir mejor, pero seguira siendo una funcion. Esta es la tipica clase de discuciones que ademas de hacernos perder tiempo no nos lleva a ninguna parte, mejor dejemos esas distinciones a los que trabajan en lenguajes como Pascal, ya que a ellos si les sirve :lol:


El que sabe,sabe! :D Olvidé mencionar que esa asignatura era en Pascal...
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: CCS - Retorno de más de 1 parámetro - return - Proteus
« Respuesta #18 en: 07 de Septiembre de 2009, 17:38:51 »
Hola amigos


Personalmente prefiero, programar en C o C++ que en pascal (o "pascual" como lo llamaban en la uni).

Buen ojo, Fabianjm...se me paso el void, la escribi primero como void y luego como int, pero esto como el conducir, conducir muchas horas llega un momento o descansas o cometes errores tontos, y te pueden costar caro.


un saludo.
« Última modificación: 07 de Septiembre de 2009, 17:43:31 por pajaro »

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: CCS - Retorno de más de 1 parámetro - return - Proteus
« Respuesta #19 en: 07 de Septiembre de 2009, 19:10:25 »
Igual, al C orientando a embebidos habria que hacerles algunas mejoras para que se nos haga las cosas mas faciles, se me ocurren estas:

  • Lo que comento Suky, parametros por referencia
  • Mejorar el preprocesador para incluir algunas caracteristicas de los macro ensambladores como repeticiones, etc
  • Alguna abtsraccion a objetos sin caer en los vicios que para mi tiene C++
  • Datos definidos dentro del lenguaje aparte de los conocidos
  • Declarar variables en cualquier punto como hace C++
  • Que el tamaño de los array pueda no ser definido en tiempo de compilación
  • Funciones inline
  • Conceptos de RTOS incorporados al lenguaje

Saludos !


Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: CCS - Retorno de más de 1 parámetro - return - Proteus
« Respuesta #20 en: 07 de Septiembre de 2009, 23:13:54 »
Amigos, de lo poco que he aprendido en el mundo de la programación de los uC pic, he reconocido que hay que diferenciar los compiladores para micros, de los compiladores para ordenadores. No podemos por ejemplo hacer semejanzas con C++. tengo entendido el que plus plus significa estar orientado al objeto. Cosa que es hasta la fecha es imposible de implementar en los pics (por la limitación de los recursos)

yo en mi paso con el ccs ( y muy poquisimo con C18 y hitech) me he dado cuenta que programar en C es un avance significativo en cuanto a agilizar la programación en ensamblador, pero nada mas, igual hay que activar un pin o encender un modulo de forma como se hace en asm, nosotros escribimos una linea de C y el compilador escribe unas cuantas en asm, no podemos olvidarnos de los registros ni las banderas de las interrupciones. 

por supuesto que no olvido el RTOS (aunque sigo viendo muy pocos programas escritos en rtos)


pajaro, la forma para devolver mas de un valor en una función es con puntero. Creo que tu pregunta tiene relación con el otro tema IF - valida funciones con paso de parametros proteus - ccs

pienso que si ves que el programa se te está complicando mucho, mejor uses variables globales.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: CCS - Retorno de más de 1 parámetro - return - Proteus
« Respuesta #21 en: 08 de Septiembre de 2009, 00:13:59 »
tengo entendido el que plus plus significa estar orientado al objeto. Cosa que es hasta la fecha es imposible de implementar en los pics (por la limitación de los recursos)

Hay varios compiladores orientados a objetos para PIC's, el mejor de los que prove es BoostC++ que genera lindo codigo incluso para el 16f84... incluso hay una variante de java llamada Jal que soporta incluso los chiquitines 12f, -con una sintaxis bastante particular. En la fecha existe un grupo de personas trabajando en el desarrollo de gcc para pics (gcc es GNU Compiler Collection, y dentro de esta coleccion no podria falta c++). Sobre este tema hay un hilo actualmente.
@fabianjsm is on twitter

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: CCS - Retorno de más de 1 parámetro - return - Proteus
« Respuesta #22 en: 08 de Septiembre de 2009, 10:53:48 »
Hola,
Citar
yo en mi paso con el ccs ( y muy poquisimo con C18 y hitech) me he dado cuenta que programar en C es un avance significativo en cuanto a agilizar la programación en ensamblador, pero nada mas, igual hay que activar un pin o encender un modulo de forma como se hace en asm, nosotros escribimos una linea de C y el compilador escribe unas cuantas en asm, no podemos olvidarnos de los registros ni las banderas de las interrupciones. 

El espiritu del C o la principal razon de existencia es la portabilidad, cuando lo diseñaron la idea fue que UNIX pueda ser facilmente portado a otras arquitecuras con otros micros sin tener que hacer todo de nuevo y sin perder la posibilidad de acceso a bajo nivel como es assembler. Por eso cuando trabajas con varios micros ( PIC, AVR, FreeScale, etc ) las cosas bien hechas y que no sean hardware dependiente son migradas sin problemas y sin tener que escribir todo de nuevo. El CCS tiene cosas muy piolas, pero te haces dependiente, si pasas a un AVR u otro micro que CCS no de soporte ahi empiezan los problemas.

Citar
Amigos, de lo poco que he aprendido en el mundo de la programación de los uC pic, he reconocido que hay que diferenciar los compiladores para micros, de los compiladores para ordenadores. No podemos por ejemplo hacer semejanzas con C++. tengo entendido el que plus plus significa estar orientado al objeto. Cosa que es hasta la fecha es imposible de implementar en los pics (por la limitación de los recursos)

El tema del C++ es practicamente un mito, ciertas caracteristicas del lenguaje ( constructores, destructores, sobrecarga de operadores, herencia simple, sobrecarga de funciones ) no implican una serie de recursos extras que no utilize lo mismo pero escrito en C plano.

Saludos !


 

anything