Foros - Stratos

Stratos => Principiantes => Mensaje iniciado por: player en 09 de Julio de 2009, 04:58:10 PM

Título: Array
Publicado por: player en 09 de Julio de 2009, 04:58:10 PM
Estoy leyendo este tema y de momento hay un ejemplo que no entiendo. Su enunciado es:

A cuarenta alumnos se les preguntó el nivel de calidad de los alimentos de la cafetería para alumnos en una escala de 1 a 10. Colocar las 40 respuestas en un array entero y sumar todos los resultados de la encuesta.

Este es el código que viene como ejemplo:


#include <stdio.h>
#define RESPONSE_SIZE 40 /* define array sizes */
#define FREQUENCY_SIZE 11

/* function main begins program execution */
int main( void )
{   
   int answer; /* counter to loop through 40 responses */
   int rating; /* counter to loop through frequencies 1-10 */

   /* initialize frequency counters to 0 */
   int frequency[ FREQUENCY_SIZE ] = { 0 };
   
   /* place the survey responses in the responses array */
   int responses[ RESPONSE_SIZE ] = { 1, 2, 6, 4, 8, 5, 9, 7, 8, 10,
        1, 6, 3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6,
        5, 6, 7, 5, 6, 4, 8, 6, 8, 10 };

   /* for each answer, select value of an element of array responses
  and use that value as subscript in array frequency to
  determine element to increment */
   for ( answer = 0; answer < RESPONSE_SIZE; answer++ ) {
      ++frequency[ responses [ answer ] ];
   } /* end for */

   /* display results */
   printf( "%s%17s\n", "Rating", "Frequency" );

   /* output the frequencies in a tabular format */
   for ( rating = 1; rating < FREQUENCY_SIZE; rating++ ) {
      printf( "%6d%17d\n", rating, frequency[ rating ] );
   } /* end for */

   return 0; /* indicates successful termination */

} /* end main */


Qué se consigue con int responses[ RESPONSE_SIZE ]? Declara la variable responses y la asocia al array [RESPONSE_SIZE]?

Y en frequency[ FREQUENCY_SIZE ], por qué lo inicializa a 0 y entre llaves?

Luego en el primer for hace una mezcla de todo y pone frequency[responses[answer]] y lo incrementa... y en el último for vuelve a usar frequency pero como frequency[rating] y no sé por qué. La verdad que lo veo bastante lioso y algo mal explicado para la gente que empezamos.. a ver si me podéis ayudar con alguna explicación. Gracias.
Título: Re: Array
Publicado por: Pogacha en 09 de Julio de 2009, 09:20:23 PM
Lee acerca de arrays de C.
Elije de aqui:
http://www.google.com/search?q=c+Arrays

Por ejemplo:
http://www.exforsys.com/tutorials/c-language/c-arrays.html
Título: Re: Array
Publicado por: player en 10 de Julio de 2009, 10:35:07 AM
Ya..si...ya sé que en google hay todo eso, preguntaba por una duda en concreto, no por dónde encontrar teoría sobre arrays. De todas formas, ya lo tengo medio entendido por mi cuenta. Gracias por la "ayuda".
Título: Re: Array
Publicado por: Pogacha en 10 de Julio de 2009, 02:01:07 PM
A ver si nos entendemos, claramente no sabes como funcionan los arrays, y no hay duda en concreto, simplemente no tenes idea de que estas hablando. Si te molesta mi "ayuda" no te preocupes ... otra vez me la guardo.
Título: Re: Array
Publicado por: Buffon en 10 de Julio de 2009, 02:20:43 PM
Player, este foro es para principiantes ofc, pero parece que seamos tus profesores particulares <.< y realmente por tus preguntas no te has tomado la molestia en aprender que es un array y como funciona.

pero bueno:


   int frequency[ FREQUENCY_SIZE ] = { 0 };


está mal inicializado, no hay más, lo más correcto sería:


   int frequency[ FREQUENCY_SIZE ] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
o mejor aún
   int frequency[ ] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};


pero bueno, quitando eso de encima, que yo habría hecho con un calloc de toda la vida xDDDD

   int frequency[ FREQUENCY_SIZE ] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};

te crea un buffer de 11 posiciones y le asigna a cada posición el valor 0. Esto sale en todos los libros, igual que el anterior, que crea un buffer de 40 posiciones (40 alumnos) y mete en cada alumno la nota obtenida.

la gracia de frequencie cual es, para cada alumno, mira que nota ha dicho responses[answer], aquí está mal la variable answer, en realidad la debería haber llamano 'alumn', responses[answer] si answer vale 5, nos indica el alumno número '5' que nota ha sacado, según el ejemplo el alumno 5 ha sacado un 5, entonces responses[5] devuelve 5, responses[4] devuelve 8, etc etc.

Así, si haces frequency[ responses[ alumno]]++; y frecuency empieza con todos con 0, si ponemos un ejemplo diferencia, responses fuera de 4 alumnos y todos sacan un 3, al hacer.

frecuency[responses[0]]++;
frecuency[responses[1]]++;
frecuency[responses[2]]++;
frecuency[responses[3]]++;

tendriamos que frecuency = {0,0,0,4,0,0,0,0,0,0,0};

Título: Re: Array
Publicado por: player en 10 de Julio de 2009, 03:33:26 PM
Gracias Buffon. El código está tal cual sacado del libro y me extrañaba que lo inicializara sólo a 0 y no pusiera las 11 posiciones como se supone que debería ser y tu has puesto, eso ya me ha descolocado para el resto del ejercicio.  Veo que hay por ahí algún otro fallo. Muchas gracias por tu ayuda y por aclarármelo.

A ver Pogacha no te lo tomes a mal, pero estoy siguiendo ese libro que todo el mundo dice que "es muy bueno" y como puedes ver estoy empezando y necesito que las explicaciones sean claras, lo que pasa que algunos códigos de ejemplo tienen fallos como habrás podido comprobar ahora y las explicaciones no son muy claras, entonces, si ya me he tomado la molestia de leerme el tema de arrays que viene en el libro y vengo aquí preguntando unas dudas en concreto que me ha creado ese ejemplo, yo no tengo la culpa de que el código esté mal y encima se me mande a leer más sobre arrays, porque si es el ejemplo lo que está mal necesito que alguien me lo aclare, porque yo puedo pensar que el ejemplo está mal pero aún no tengo la confianza necesaria para saber si estoy en lo cierto o no, entonces mejor pregunto.


Igual se han malinterpretado mis preguntas del tipo:

Y en frequency[ FREQUENCY_SIZE ], por qué lo inicializa a 0 y entre llaves?

Y se pensaba que no tenía ni idea de inicializar un array, pero no es así, ya se que un array se inicializa de esta forma y entre llaves, pero no entendía por qué hay un solo cero si se hace al principio un #define FREQUENCY_SIZE 11 y como pensaba que estaba bien y yo estaba equivocado ya me he descolocado para entender el resto del código.

Bueno gracias por vuestra ayuda y siento el malentendido. Ya no dejaré más dudas por aquí si se me echa en cara que parecéis mis profesores particulares. Ya me gustaría a mí aprender bien y poder ayudar a la gente a la que le cuesta como a mí. Saludos.

Título: Re: Array
Publicado por: Mars Attacks en 11 de Julio de 2009, 07:25:44 PM
De todas formas, aunque creas que ya sabes algo de todo esto, probablemente aún estés raspando la superficie. La inicialización vector[LOQUESEA] = {0} es equivalente a decirle que inicialice el primer elemento a cero y todos los restantes a elementos a cero (es decir; si hubieras puesto vector[LOQUESEA] = {1} te habría inicializado el primer elemento a uno y el resto a cero).

Existen muchas otras formas de hacerlo. Te recomiendo que, cuando estés viendo un capítulo, googlees hasta hartarte sobre esa parte de C o C++ en google, tanto en castellano como en inglés.

Por ejemplo, sobre inicialización de arrays:
http://stackoverflow.com/questions/201101/how-to-initialize-an-array-in-c
http://www.conclase.net/c/curso/index.php?cap=010

y aún hay más tralla que no cuentan esos hilos.
Título: Re: Array
Publicado por: player en 11 de Julio de 2009, 08:12:01 PM
Gracias por la información. Intentaré leer lo máximo posible sobre todo, lo que pasa que mucha información buena está en inglés y si ya me cuesta entendenrlo en español...en inglés ya ni os cuento. De todos modos veo que la programación me llevará bastantes años para cogerle el "truco" porque la verdad que es dificilísimo, muy complejo...y demasiado extenso.  Os veo a vosotros que controláis muchísimo del tema y yo me veo incapaz de coger un nivel así ni en 7 años por muchas horas de estudio que le dedique, veo que me cuesta demasiado coger las cosas.. Ya veremos cuando me toquen las asignaturas de programación como va la cosa. Saludos.
Título: Re: Array
Publicado por: Buffon en 12 de Julio de 2009, 12:13:49 PM
hombre, ni en 20 años serás un experto de C++, pero con 7 tendrás un nivel más que aceptable.

sobretodo a la hora de hacer los casts, utilizar static_cast<> reinterpret_cast<> en vez del típico cast entre paréntesis.

También piensa que C++ es C++, no Visual C++ que te "fuerza" a utilizar algunas librerías o te "esconde" muchas inicializaciones, que realmente son cosa del OS y no del lenguaje.
Título: Re: Array
Publicado por: player en 12 de Julio de 2009, 01:01:46 PM
Cita de: Buffon
hombre, ni en 20 años serás un experto de C++, pero con 7 tendrás un nivel más que aceptable.

Gracias por los animos.... :P

Cita de: Buffon
sobretodo a la hora de hacer los casts, utilizar static_cast<> reinterpret_cast<> en vez del típico cast entre paréntesis.

No tengo ni idea de lo que es esto, supongo que tarde o temprano lo descubriré

Cita de: Buffon
También piensa que C++ es C++, no Visual C++ que te "fuerza" a utilizar algunas librerías o te "esconde" muchas inicializaciones, que realmente son cosa del OS y no del lenguaje.

Al leer esto se me ha planteado una duda. Por ejemplo, si yo me paso varios años programando en C/C++ (que además es el lenguaje que más se utiliza en la carrera) después al terminar y salir al mercado laboral (si quisiera trabajar como programador) puedo estar buscando ofertas de trabajo pero pueden pedir cualquier otro lenguaje de programación que no sea ese, entonces, habiendo estado todos esos años con C/C++, se adquiere una buena base para luego cambiar de lenguaje y adaptarse más o menos de forma rápida?
Título: Re: Array
Publicado por: Vicente en 12 de Julio de 2009, 02:10:56 PM
Cita de: player en 12 de Julio de 2009, 01:01:46 PM
Al leer esto se me ha planteado una duda. Por ejemplo, si yo me paso varios años programando en C/C++ (que además es el lenguaje que más se utiliza en la carrera) después al terminar y salir al mercado laboral (si quisiera trabajar como programador) puedo estar buscando ofertas de trabajo pero pueden pedir cualquier otro lenguaje de programación que no sea ese, entonces, habiendo estado todos esos años con C/C++, se adquiere una buena base para luego cambiar de lenguaje y adaptarse más o menos de forma rápida?

A programar se aprende programando. No es lo mismo C++ que C# o que Python, pero las ideas básicas son iguales en todos. Además en la carrera seguramente toques más cosas que C/C++.
Título: Re: Array
Publicado por: player en 12 de Julio de 2009, 04:59:32 PM
Sí que se ven más cosas, claro, pero la gran mayoría de todo lo relacionado con la programación es C/C++
Título: Re: Array
Publicado por: [EX3] en 12 de Julio de 2009, 09:14:22 PM
Cita de: player en 12 de Julio de 2009, 04:59:32 PM
Sí que se ven más cosas, claro, pero la gran mayoría de todo lo relacionado con la programación es C/C++
O no. Si te fueras a dedicar a programacion empresarial, de gestion, seguramente acabrias aprendiendo mas sobre Visual Basic, C# y/o Java, si fueras a desarrollar para dispositivos moviles de seguro Java, en el ambito de desarrollo web ASP y/o seguramente PHP, etc... cada area tiene sus lenguajes mas predominantes segun necesidad, productividad y herramientas orientadas mas a tal proposito. C++ es lo generico por decirlo de alguna forma, pero no es el todo para un programador, ni ningun lenguaje en si. La programacion como dice Vicente no es lenguaje que aprendas si no la programacion en si. Tomatelo con paciencia que con la practica veras como poco a poco vas aprendiendo mas de lo que puedas llegar a imaginar.

Salu2...
Título: Re: Array
Publicado por: player en 12 de Julio de 2009, 09:48:35 PM
Me refería a la carrera, que la mayoría de cosas relacionadas con la programación las enfocan a C/C++ si no es que te coges asignaturas de programación en internet, bases de datos y de ese tipo, por eso estoy intentando aprender por mi cuenta antes de empezar esas asignaturas, así a la hora de hacer las prácticas puedo ir algo más suelto si ya llevo conocimientos aprendidos desde antes, pero también me gustaría especializarme más allá de lo que se ve en esas asignaturas.

Antes de entrar a la carrera estuve viendo algo de programación y digamos que tuve "malas experiencias" y le cogí demasiado respeto o cierta "manía" porque me veía incapaz de resolver el tipo de problemas como los que estoy viendo ahora,  así que cuando empecé me cogí las típicas asignaturas de matemáticas y demás que no tienen nada de programación, pero ahora ya tengo que cogerlas sí o sí si quiero seguir avanzando. Digamos que me va un poco mejor que antes pero me sigue costando mucho entender ciertas cosas y la verdad que me da bastante "miedo" tener que empezar a entregar prácticas de este tipo y hacer los exámenes.

Mucha gente  me dice que estoy perdiendo el tiempo con C y que me ponga a estudiar de lleno C# que es lo que más se usa ahora, pero claro, como has dicho [EX3] dependerá del campo en el que te muevas.
Título: Re: Array
Publicado por: [EX3] en 13 de Julio de 2009, 12:24:02 AM
Cita de: player en 12 de Julio de 2009, 09:48:35 PM
Mucha gente  me dice que estoy perdiendo el tiempo con C y que me ponga a estudiar de lleno C# que es lo que más se usa ahora, pero claro, como has dicho [EX3] dependerá del campo en el que te muevas.
Para nada. C y C++ no es una perdida de tiempo, es mas, si dominas C/C++ C# lo sabras aprovechar mejor seguramente que alguien como yo que viene del Basic. Y eso que C# es lo que mas se usa ahora, pues tampoco es asi. C# todavia no tiene el cupo de mercado que aun ostenta Java por ponerte un ejemplo similar. C# de momento es popular dentro de plataformas Windows (PC y dispostivos moviles con Windows Mobile) y en XBox360 por XNA. Fuera de ahi esta todavia asentandose gracias a proyectos como Mono (http://www.mono-project.com/) y algunas aplicaciones como el Unity3D lo usan para desarrollo pero creo que todavia no es algo equiparable al uso que tiene Java.

Hazte a la idea de que en la carrera no te van a enseñar a programar en C++ o en otro lenguaje, te van a enseñar a programar, punto. Quizas te enseñen metodologia de la programacion en Pascal y orientacion a objetos en Eiffel, como a mi compañero de trabajo. Por esto mismo, quitate el chip de programar en un lenguaje o en otro por que a la larga sera lo que menos te importe.

Salu2...
Título: Re: Array
Publicado por: Buffon en 13 de Julio de 2009, 10:18:46 AM
Yo veo un error que estés haciendo una carrera y te quieras dedicar a programar xD

para eso tienes módulos muy competitivos, un ingeniero es alguien con una abstracción sobre un sistema mucho mayor del que pueda tenerlo un chico de un módulo, capaz de resumir o redactar las necesidades de un cliente. Posiblemente termines programando alguna parte pero tampoco creas que va a ser tu cometido. Como todos tendrás que empezar siendo programador, pero intenta buscarte una empresa pequeño donde tengas la oportunidad y la empresa la necesidad que diseñes lo que programes para así evolucionar antes.
Título: Re: Array
Publicado por: player en 13 de Julio de 2009, 12:00:52 PM
La programación es lo que más me llama pero no sé  a lo que terminaré dedicándome al final, para eso aún queda tiempo. De momento tengo que ir pensando en el campo en el que quiero "especializarme". Tampoco descarto dedicarme a la docencia en un futuro, es algo que tengo en mente desde hace muchos años, son cosas que tienen que ir viniendo con el tiempo y las circunstancias que se den.
Título: Re: Array
Publicado por: Vicente en 13 de Julio de 2009, 12:13:50 PM
Cita de: player en 12 de Julio de 2009, 04:59:32 PM
Sí que se ven más cosas, claro, pero la gran mayoría de todo lo relacionado con la programación es C/C++

Tienes por ahí el plan de estudios? En la mía (UAM) por ejemplo era así:

1º: Pascal y C
2º: C y Ensamblador
3º: C, Lisp, Prolog, VHDL, Java, Matlab
4º: C, Lisp, Java, Smalltalk, C++, PHP, T-SQL, Ensamblador

Y seguro que alguno se me ha olvidao :p
Título: Re: Array
Publicado por: [EX3] en 13 de Julio de 2009, 12:31:01 PM
Cita de: player en 13 de Julio de 2009, 12:00:52 PM
La programación es lo que más me llama pero no sé  a lo que terminaré dedicándome al final, para eso aún queda tiempo.
Pues si no tienes claro a que quieres dedicarte no se que hace planteandote si quiera la carrera de informatica :P No se que edad tendras pero una cosa es que te guste o te llame la programacion, que puede ser por hobbie, y otra que sea eso a lo que quieras dedicarte laboralmente. No confundas una cosa con la otra por que puede inducirte a una grave equivocacion a la hora de tomar un camino formativo como es una carrera universitaria, ademas que no es lo mismo programar por aficion que programar por trabajo (ya te lo digo yo que ahora mismo tendria que estar programando en vez de estar navegando por el foro o por Meneame.net  :..)

Salu2...
Título: Re: Array
Publicado por: player en 13 de Julio de 2009, 01:21:43 PM
Cita de: Vicente

Tienes por ahí el plan de estudios? En la mía (UAM) por ejemplo era así:

1º: Pascal y C
2º: C y Ensamblador
3º: C, Lisp, Prolog, VHDL, Java, Matlab
4º: C, Lisp, Java, Smalltalk, C++, PHP, T-SQL, Ensamblador

en 1º se da C/C++
en 2º  C++ y  UML,  SQL
en 3º  C# y .net y diseño de algoritmos sin un lenguaje específico (supongo que de forma general)

en asignaturas como arquitectura de computadores se da ensamblador, supongo que debería incluirlo, aunque no sea asignatura 100% de programación.. Seguro que se me escapa algo más.
Título: Re: Array
Publicado por: Hechelion en 13 de Julio de 2009, 01:24:06 PM
Cita de: [EX3] en 13 de Julio de 2009, 12:31:01 PM
ya te lo digo yo que ahora mismo tendria que estar programando en vez de estar navegando por el foro o por Meneame.net 

jajajajajajaj. Hace mucho que no me sentía tan identificado con una frase.

Como muy bien dice Ex3, es completamente distinto tener la presión de trabajo (si, si sé que una buena organización evita mucha de la presión, pero a final de cuentas somos humanos.) a sentarte libremente a programar algo que te gusta.
Título: Re: Array
Publicado por: player en 13 de Julio de 2009, 01:29:00 PM
Cita de: [EX3] en 13 de Julio de 2009, 12:31:01 PM
Pues si no tienes claro a que quieres dedicarte no se que hace planteandote si quiera la carrera de informatica :P No se que edad tendras pero una cosa es que te guste o te llame la programacion, que puede ser por hobbie, y otra que sea eso a lo que quieras dedicarte laboralmente. No confundas una cosa con la otra por que puede inducirte a una grave equivocacion a la hora de tomar un camino formativo como es una carrera universitaria, ademas que no es lo mismo programar por aficion que programar por trabajo (ya te lo digo yo que ahora mismo tendria que estar programando en vez de estar navegando por el foro o por Meneame.net  :..)
Salu2...
A ver.. tengo claro que quiero dedicarme a esto, lo que no tengo claro es en qué campo quiero especializarme de todos los que un ingeniero abarca. Tan grave es eso con 21 años? Con el tiempo debo encontrar la rama por la que quiero tirar, por eso digo que aún no tengo claro a qué dedicarme. Una opción también sería la de especializarme en algo y ser profesor de esa asignatura o asignaturas, que es por ahora la opción que más me atrae, pero ya veremos por los caminos que me lleva la vida.
Título: Re: Array
Publicado por: [EX3] en 13 de Julio de 2009, 02:14:06 PM
Cita de: Hechelion en 13 de Julio de 2009, 01:24:06 PM
Como muy bien dice Ex3, es completamente distinto tener la presión de trabajo (si, si sé que una buena organización evita mucha de la presión, pero a final de cuentas somos humanos.) a sentarte libremente a programar algo que te gusta.
Mi problema no es la presion, eso se compensa cobrando las horas extras 0:-), mi problema es que desarrollar aplicaciones de banca es un coñazo como la copa de un señor pino :P A mi me gusta el desarrollo mas creativo y aqui no hay muchas opciones creativas, mas bien "bancarias"  >.< y doy gracias de que tenemos libertad a la hora de diseñar y desarrollar nuestras aplicaciones, por que si no ya me hubiera hecho el harakiri repetidas veces.

Cita de: player en 13 de Julio de 2009, 01:29:00 PM
Tan grave es eso con 21 años?
Necesitas respuesta o es una pregunta retorica? :P Yo considero tarde tener esas dudas con 21 años cuando mis compañeros ya lo tenian claro con 18 cuando empezaron la carrera, mas bien lo tenian claro cuando empezaron el bachiller. Vamos, que no querras empezar la carrera con 25 años para salir a los 30 a currar (aunque para algunos sea la tonica habitual). Piensa que cuanto antes empieces a trabajar mas experiencia cogeras y mas y mejores espectativas tendras cuando llegues a cierta edad, por ende, cuanto antes empieces la carrera antes empezaras a trabajar, que es el objetivo buscado.

No se tu, pero si es la carrera lo que planeas hacer, si yo fuera tu aclararia mis ideas lo antes posible para empezar este año la carrera de ser posible y despreocuparme ahora de como se inicializa un array en C. Ya tendras tiempo en la carrera para hartarte de aprender eso y muchas mas cosas ;)

Salu2...
Título: Re: Array
Publicado por: player en 13 de Julio de 2009, 02:24:35 PM
[Ex3] ya he explicado en la página anterior que ya estoy haciendo la carrera, hasta ahora me he sacado el tipo de asignaturas que no tienen nada que ver con asignaturas de programación (todo el rollazo que hay de matemáticas, física, sistemas operativos, estructura de computadores...) y ahora me toca coger las de programación porque tengo que seguir quitándome de encima y ya no hay alternativa, por eso estoy intentando estudiar por mi cuenta antes de empezar con esas asignaturas, así intento ir mejor preparado de cara a todas las prácticas que voy a tener que hacer.  Se entiende ya?  :P
Título: Re: Array
Publicado por: [EX3] en 13 de Julio de 2009, 02:40:47 PM
Culpa mia 0:-) Habia entendido lo contrario, que estabas planteandote si entrar o no en la carrera :P

Pues no se, segun tengo entendio, la gente hasta 3º año de carrera no se decanta por una especialidad u otra, asi que no se, sopesa si realmente quieres trabajar de programador o analista, sopesando los pros y contras que ello conlleva. Si tienes claro esto sabras entonces si te decantas por programacion o por docencia. Lo que si te digo, si quieres aprender un lenguaje no te dejes llevar por lo que diga fulano o mengano, en referencia a lo de estudiar C# "por que es lo que se lleva ahora" en vez de C. Estudia programacion en el lenguaje que te sientas comodo, si es C pues C, si es Java pues Java, C# pues C#, etc... pero ten en cuenta lo que te dije, la programacion no es un lenguaje en concreto, por lo que lo que aprendas en uno te servira para el resto (otra cosa sera la sintaxis).

Salu2...
Título: Re: Array
Publicado por: player en 13 de Julio de 2009, 02:51:38 PM
Cita de: [EX3]
Si tienes claro esto sabras entonces si te decantas por programacion o por docencia.
Y docencia de la programación? ::) La verdad que ser profesor de programación me gustaría bastante, me da igual si a nivel de módulo, nivel universitario o a nivel de academia privada, pero es una idea que me seduce bastante. Pero claro, para ello hay que controlar bastante y tener las cosas muy claras, y como veo que me cuesta bastante de entender, pienso que no sirvo para ello y no sé si estoy tirando por el camino correcto o por el contrario voy a tirar el tiempo, de ahí vienen la mayoría de mis dudas de no saber por donde tirar, lo tanto que me cuesta la programación.
Título: Re: Array
Publicado por: Buffon en 13 de Julio de 2009, 03:04:52 PM
Tampoco te creas, yo he sido becario de una asignatura de programación haciendo cuarto de carrera, está claro que llevaba MUCHO tiempo atrás programando en C++ pero los profesores sabían menos de programación que yo, hasta el punto de caérseme la cara de verguenza en clase cuando explicaban algo xDD

Un profesor de programación no enseña un lenguaje, enseña un método "universal" que luego se puede codificar en cualquier lenguaje específico.

Un profesor de programación enseña la metodología necesaria para sacar partido al desafio o problema que tienes, estructuras de datos, algoritmos etc, así que no tienes que ser un crack programando en C++, pero si que tienes que tener claro como resolver cualquier problema que te propongan.
Título: Re: Array
Publicado por: player en 13 de Julio de 2009, 03:46:42 PM
Entiendo lo que queréis decir [Ex3] y Buffon, la programación es algo más general que aprender un lenguaje. Entonces, queréis decir que si yo tengo que hacer mis prácticas en C++, lo que estoy haciendo es aprender programación en general y no solamente C++, porque en mayor o menor medida todos los lenguajes comparten los mismos algoritmos para la resolución de los problemas, estructuras de datos, arrays, estructuras de repetición...y el resto de cosas que estoy utilizando para C++, lo único que estoy aprendiendo en exclusividad es la sintaxis de este lenguaje, pero si luego por ejemplo tengo que hacer algo en java, todo lo aprendido anteriormente ya me sirve y lo que tendría que aprender es la sintaxis y algunas particularidades de ese lenguaje. Es así?
Título: Re: Array
Publicado por: Buffon en 13 de Julio de 2009, 04:35:11 PM
en realidad no, un algoritmo en lenguaje universal sería:

para i desde 0 hasta n hace
       tabla = i;
fpara

por ejemplo

luego en C++ se traduce por:

for(int i = 0; i < n; i++) {
      tabla = i;
}

en VB de otra, en Pascal de otra etc etc etc.

Título: Re: Array
Publicado por: player en 13 de Julio de 2009, 05:35:19 PM
Entonces por qué decís que enseñan programación y no un lenguaje si lo que están enseñando es a programar mediante C++?
Título: Re: Array
Publicado por: Mars Attacks en 13 de Julio de 2009, 09:45:05 PM
Porque enseñar a programar en términos genéricos es aprender algorítmica. Cuando bajas al nivel de lenguaje, los hay desde los que usan herramientas muy sofisticadas para hacerte gran parte del trabajo sucio hasta los que tienes que preocuparte tú de los más nimios movimientos de datos.
Gran parte de lo que aprendas con C++ será programación genérica (lo que puedas abstraer), pero posiblemente también aprenderás cosas "condicionadas" a C++, y no en términos genéricos.

El ejemplo del for de antes incluso se podría reforzar diciéndote que, en algunos contextos, es mejor hacer "for (int i=0; i < n; ++i)" porque optimiza algunos procesos internos del bucle. Pero algorítmicamente (es decir, en la "programación en teoría") el coste es el mismo y no llegarías a preocuparte de cómo recorres la lista de elementos o sus operaciones intrínsecas, sólo que tienes un iterador que se va incrementando (o decrementando) según un paso dado.
Título: Re: Array
Publicado por: player en 14 de Julio de 2009, 09:01:25 AM
Gracias por la aclaración, lo veo más claro.