|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - Amilius
Páginas: 1 ... 6 7 [8] 9 10 ... 27
176
« en: Sábado 25 de Marzo de 2006, 21:34 »
Creo que el pinche escritor de ese problema quiso decir vector en lugar de matriz.
177
« en: Sábado 25 de Marzo de 2006, 21:31 »
Eso muy relativo, todo depende de cuanta memoria RAM tienes en total. Independientemente del total de memoria en S.O. modernos se trabaja con direcciones virtuales que son traducidas por el microprocesador a direcciones fisicas. Eso ya se. Lo importante es evitar reservar un bloque demasiado grande de memoria contigua tomando en cuenta cuanta RAM tienes. Si no fuera así pudieras trabajar igual con 128 de RAM o 2GB, pero no es asi, si no tienes un mínimo de RAM de acuerdo al software que tienes instalado el disco duro sufre las consecuencias. alguien le pudo responder a un neofito que significaba error de proteccion general ? y que te entienda ????
La computadora se esta protegiendo de quien ? blink.gif Pues simple, dile que se protege del pinche neofito que está metiendo mano en memoria que no le corresponde.
178
« en: Sábado 25 de Marzo de 2006, 15:28 »
En realidad es un contrasentido tener que alojar memoria, como si la memoria no estuviera alli !! La flexibilidad se programa y si esperamos que el sistema operativo la provea estamos fritos. Fijate que hay un proceso que se llama recolector de basura, el malloc se deberia llamar generador de basura.. por otra parte, es cierto, conviene que los almacenamientos este en variables globales y no el la pila de parametros. Si hablamos de S.O. modernos estas equivocado, la memoria RAM (fisica) no es la que reservas sino la memoria virtual. Y realmente no se puede decir que sea flexible un programa con arrays de tamaño fijo, independientemente del S.O. utilizado.
El malloc es una funcion fundamental en cualquier S.O. moderno. Fijate que harias para cargar varios MB de informacion (incluso imagina una base de datos de un par de GB). ¿Un array fijo que ocupa la memoria todo el tiempo? Eso muy relativo, todo depende de cuanta memoria RAM tienes en total. Con DOS tienes 640 Kb, reservar 120Kb es un abuso. En estos dias minimo tienes 512 Megas, asi que 120Kb no son nada, pero reservar 375 megas en un bloque contiguo no es para nada una buena idea. Otro factor que ayuda mucho es la programación orientada a objetos que maneja la memoria dinámicamente al crear y destruir objetos. Y aunque a alguno se le ocurra meter un "array estático" de 300 megas dentro de un objeto esa memoria será manejada dinámicamente y no en la pila. Asi aunque "sufra" mucho la máquina eventualmente puede ser que funcione. Claro que siempre es más cómodo usar un arreglo estático que otra estructura de datos, pero si usas programación orientada a objetos hay formas más inteligentes de hacer algo similar, prácticamente igual de cómodo pero sin severas penalizaciones en rendimiento. Por ejemplo, aprovechando la POO y la memoria virtual: en lugar de reservar un arreglo estático de objetos puedes reservar un arreglo estático de referencias a objetos y crear todos los objetos referenciados, luego destruir todos los objetos referenciados. Esto es bastante sencillo, no existe administración de memoria complicada. La ventaja es evitar reservar un bloque contiguo de memoria, en lugar de ello reservas varios bloques de menor tamaño y por lo tanto más manejables. A tal punto que eventualmente sólo los objetos que utilices terminarán en RAM mientras que el resto ocupara espacio en memoria virtual, esperando a que los utilices para entrar en RAM. Otra ventaja es que si necesitas crear más objetos pues simplemente creas otro arreglo de referencias más grande, copias las referencias del arreglo que quedo chico y reservas más objetos. Al momento de liberar la memoria de un objeto recuerda poner su referencia en la lista en 0 para tener forma de saber que ya lo liberaste cuando liberes todo el arreglo al final.
179
« en: Viernes 24 de Marzo de 2006, 16:09 »
Si piensas que alguien hará tus deberes estas equivocada, aqui se colabora con dudas puntuales.
180
« en: Jueves 16 de Marzo de 2006, 21:56 »
La verdad es que el factor más importante para crear código eficiente sigue siendo el programador, el lenguaje y compilador por buenos que sean no pueden hacer nada si el código es tipo "ordenamiento burbuja" cuando podría ser un "quick sort". Y también cuenta saber los trucos de optimizacion y como es recomendable utilizar el lenguaje. Saber en que circunstancias rtas estructuras de programación son más eficientes que otras, que prácticas de programación se deben evitar y en general tener idea de lo que hará el compilador con el codigo que estamos escribiendo.
181
« en: Miércoles 15 de Marzo de 2006, 18:32 »
bueno compañeros nos estamos quedando obsoletos con el OOP ahora hay que darle al AOSD o POA. Lo dudo por que hace tiempo que el POA sigue en el congelador. Igual que las bases de datos OO. Algun lenguaje POA va a tener que hacerse extremadamente popular en Linux (lo dudo) o microsoft debera decidir adoptar alguno (lo que por obvias razones económicas se que no lo hará). De todos modos el POA no tiene suficiente fuerza, no es comercial ni brinda ventajas lo suficientemente buenas para justificar que cientos de miles de programadores tengan que aprender un nuevo paradigma de programación, teniendo ya la carga de estar actualizandose constantemente. Está demostrado que no es saludable para el cerebro tener que desechar toda esa información para tener que "aprender" nuevamente y estar denuevo en 0.
182
« en: Viernes 10 de Marzo de 2006, 21:43 »
Para cuestiones de rendimiento entre lenguajes observar
http://www.tommti-systems.de/go.html?http:...benchmarks.html
por ejemplo.
Camilo. Grupo PENTEX. En general me quedo con las estadisticas de consumo de memoria. Pero esta y otras estadísticas de rendimiento no son mucho menos prueba de que uno u otro lenguaje sea más o menos eficiente. De todos modos no tomen con mucho cuidado este tipo de pruebas de rendimiento ya que no es dificil amañarlas para hacer aparecer a uno u otro compilador mejor o peor. Y no hablo de que hagan trampas, basta variar el ambiente de verificación: cpu, memoria, s.o., programas instalados, versiones instaladas y los resultados pueden variar significativamente. Tampoco refleja otros aspectos ahora mucho más importantes, como cuanto tiempo llevo elaborar los distintos codigos en distintos lenguajes y compiladores hasta lograr una versión estable.
183
« en: Viernes 10 de Marzo de 2006, 21:33 »
De todas formas una aplicacion win32 donde puedas encajar ASM donde quieras tiene acceso más directo a los recursos de la máquina ¿En un juego basado en directX que parte seria practica hacerla en ASM? No todo el codigo tiene que ver con graficos 3d. Tambien hay que programar el engine lógico del juego, incluso en algunos casos algo de I.A. Si en esa parte de tu codigo tienes alguna funcion que consume mucho tiempo de cpu, ya sea por que es un proceso pesado o llamado millones de veces entonces tienes un buen candidato para optimizarlo en asm. Claro, si existe el tiempo y necesidad de hacerlo en un proyecto formal o si tienes tiempo o simplemente se te antojo optimizar alguna cosa en tu proyecto personal. Pero lo primero es conocer bien las estadisticas de consumo de cpu de tu programa, sólo asi estarás seguro que no estás perdiendo tiempo optimizando algo que no influirá ni será notado por el usuario luego de ser optimizado.
184
« en: Jueves 9 de Marzo de 2006, 01:47 »
185
« en: Martes 7 de Marzo de 2006, 23:39 »
Generalmente se usa cuando tienes un algoritmo que crea y destruye objetos continuamente. La idea general es tener un administrador de estos objetos y no llamar directamente al constructor ni al destructor, sino a funciones del administrador de ese pool de objetos para reservar un objeto o para liberarlo.
El administrador del pool objetos se encarga de crear una cantidad de estos inicialmente y a medida que le van pidiendo mas objetos vuelve a crear otro paquete de estos de forma que no tenga que crear el paquete muy seguido ni cree tantos objetos que la mayoria nunca sean usados. Al liberar un paquete lo que hace es marcarlo como disponible para entregarlo al proceso que necesite un objeto nuevo. Si existen varios objetos liberados en el pool de objetos, entonces recien procede a liberar la memoria que ocupan de forma de evitar tener que volver a reservar esa memoria nuevamente.
Esto es especialmente efectivo si los objetos no tienen mucho peso en memoria, por ejemplo menos de 4kb, para evitar molestar continuamente al sistema operativo que administra la memoria y para evitar fragmentar la memoria RAM de forma que los bloques reservados/liberados sean de megas en lugar de kbytes.
Tambien sirve de mucho para evitar bugs por administracion de memoria ya que toda la adiministracion de esta esta centralizada en el administrador de objetos del pool y si queremos podemos potenciarlo de tal forma que podamos pedir informacion de que funcion/proceso pidio reservar un objeto, cuando lo hizo y sacar estadisticas de reserva/liberacion de los objetos del pool.
186
« en: Lunes 6 de Marzo de 2006, 17:40 »
Legalmente tienes que crearle un archivo de configuracion y un instalador, o por lo menos un dialogo inicial que detectando que no existe el archivo de configuracion te pida los datos que necesitas.
187
« en: Domingo 5 de Marzo de 2006, 23:16 »
"nunca serán humanos"
No se... me parece algo un tanto ingenuo pensar esto. Quiero decir que no es imposible que ante nuestros sentidos una maquina llegue a ser una persona aunque no lo sea, de hecho NO IMPORTA EN ABSOLUTO que sea o no sea una persona si nosotros percibimos a la maquina como persona. Esto es valido en todo momento antes, ahora y en el futuro. Si algo parece tan real que logra engañarnos entonces es real. Ejemplos sobran.
Respecto a la logica difusa nos parece muy poco natural porque la gran mayoria de lenguajes humanos, exceptuando lenguajes como el aymara, no funcionan con logica difusa, sino con la clasica que solo admite dos estados de verdad. Pero eso no significa realmente que sea poco natural, es mas, viendo desde otro punto de vista me parece lo mas natural.
"Debe de haber fórmulas alternativas de describir algoritmos."
Sin duda, depende mucho del lenguaje que usas. Por ejemplo todos los lenguajes de programacion comerciales funcionan en logica de dos estados, de hecho todas las computadoras personales lo hacen y por lo menos no conozco ni lenguaje ni maquina que funcione con logica difusa como su misma base. Claro que se puede implementar logica difusa sobre logica de 2 estados, pero obviamente sufrimos de las limitaciones mentales impuestas por el lenguaje (de maquinas y nuestro propio lenguaje) que solo trabaja con 2 estados y aunque es posible liberarse de ellas no es nada trivial.
188
« en: Jueves 2 de Marzo de 2006, 17:53 »
gracias por tu ayuda,
mi idea es evitar que se envie el formulario al pulsar enter... porque si estas rellenando un formulario y pulsas enter hace "submit" el boton submit que hay en el formulario... ¿ se puede evitar esto ?
Gracias Otra forma es crear un boton de ancho y alto 0, oculto en alguna parte, si es el primer boton recibira el foco principal para botones y sera el que sera activado al presionar enter. Esto es util si quieres modificar el comportamiento de tu pagina al presionar enter, si quieres que se presione uno u otro boton dependiendo de la situacion. Por ejemplo si tienes dos formularios en la misma pagina para distintas cada uno con su boton submit. Podrias detectar en cuales "input box" esta el usuario (es decir en que formulario) y dependiendo de eso llamar a uno u otro submit button.
189
« en: Jueves 2 de Marzo de 2006, 17:47 »
no quiero aprender a utilizar pascal para crear juegos Parece que estaban apurados y se saltearon un par de palabras
___________________
en tal caso el tema no va en programacion de juegos... es que si dice... quiero aprender pascal... en la seccion de video juegos donde se habla de como hacer video juegos... se entiende que quiere eso...
Seam, hay uno dedicado enteramente a hablar de pascal...
asi que podrías preguntar ahi...
pero si tu quieres aprender pascal por solo el hecho de aprender (en caso de que no te esten obligando en la universidad a aprenderlo...) entonces aprende Delphi... es pascal orientado a objetos y casi tan amigable como visual basic
y mas actual! Y no tendras que pelearte con el limite de 640kb de memoria.
190
« en: Jueves 2 de Marzo de 2006, 02:45 »
En otras palabras deseas acceder el string como array de chars o no?? O quieres definir un arreglo de strings???
191
« en: Martes 28 de Febrero de 2006, 20:45 »
Si hablas de ese punto verde que sale en el estilo visual predefinido del xp es hardcoded. Pero eso no significa que no puedas hacer tus propios input radio si te sobra el tiempo.
192
« en: Sábado 25 de Febrero de 2006, 21:27 »
Ni Java menos Csharp son interpretados. En un lenguaje interpretado puedes pedir una cadena de código al usuario en "run time" y llamar a una funcion que ejecute ese código en el acto por que al interpretador le da lo mismo trabajar con el codigo original que con el nuevo que le pasaste.
En Java y Csharp la administracion de memoria no la haces tu y dependiendo de que sigas las recomendaciones para generar codigo optimo puedes generar programas practicamente tan eficientes o incluso mas eficientes que si tu mismo hubieras hecho la administracion de memoria (Ojo, esto en caso que tus conocimientos de como administrar memoria no sean suficientes, o lo que es más común: no tengas el tiempo necesario para crear un codigo óptimo y debido a esto el resultado tenga menor eficiencia.)
De todas formas una aplicacion win32 donde puedas encajar ASM donde quieras tiene acceso más directo a los recursos de la máquina, comparado con una aplicación cuya administracion de memoria NO la haces tu y a parte esta pensada para evitar en lo posible esos accesos directos a recursos por seguridad. Asi que el truco final es utilizar una libreria de funciones que ocupan mas tiempo de cpu en codigo nativo y el grueso de la aplicacion que generalmente ocupa un tiempo de cpu menor en un lenguaje que te sea más cómodo de usar y te permita avanzar rápidamente en tu juego.
La gran ventaja de programar en C++ es tener la ventaja del control total, pero eso tiene sus costos en tiempo de programacion, ademas de tener una gran documentacion para win32, mucho mejor incluso que la de .NET.
Delphi tiene la ventaja de darte tanto comodidad al momento de hacer tu juego gracias a toda una infraestructura de objetos que te simplifican el trabajo. Pero, si lo necesitas puedes programar al estilo C++, dejando de lado la estructura de objetos que te provee el lenguaje y utilizar directamente la API y la GDI de windows de la misma forma que lo harias en C++. Tanto asi que tiene definidos tipos de datos equivalentes a los de C para tener total compatibilidad al momento de utilizar Dlls, objetos COM, o llamadas a la API y GDI de windows.
193
« en: Viernes 24 de Febrero de 2006, 04:08 »
Unos cinco a diez proyectos que nunca llegaron a ser. Casi todos en turbo pascal y algunos en qbasic excepto un clon de detective/clue que quedo a medias en delphi, por que no era práctico jugarlo.
194
« en: Lunes 20 de Febrero de 2006, 03:28 »
No veo el caso, pero puedes buscar una lista de direcciones de memoria especiales en modo real, en la ayuda del turbo pascal venia una pequeña lista de las memorias para modo texto y modo grafico para 320x240x8bits. La idea seria asignar un valor a esa posicion especial de la memoria y esto se reflejaria en pantalla. si mal no recuerdo creo que era A000 para graficos y B000 o B800? para texto con colores y todo eso, un byte el codigo ascii y el otro colores parpadeo y esas cosas.
195
« en: Jueves 16 de Febrero de 2006, 22:58 »
La idea principal es eliminar cualquier verificacion por minima que sea, de todos modos todos los juegos por lo menos tendrian dos zonas: la activa y la no activa para el jugador.
196
« en: Miércoles 15 de Febrero de 2006, 20:57 »
En delphi y en csharp existe una funcion para convertir coordenadas de pantalla, screen a coordenadas de tu ventana y viceversa, busca en la ayuda algo similar a "clientToScreen"
197
« en: Miércoles 15 de Febrero de 2006, 18:19 »
for (int i=0 ; i<=K.Count; i++) { //Habitacion P = (Habitacion) K; 1. Te aconsejo leer un manual de estilo de programacion, esos nombres de variables que usas solo te pueden llevar al desastre. 2. El ciclo for esta mal limitado, debe ser "<" al numero de elementros y nunca "<=" al numero de elementos, recuerda que existe el cero. 3. En lugar de esto: //Habitacion P = (Habitacion) K ;
es:
P = (Habitacion) K;
4. En esos casos donde de todos modos haras una asignacion igual a la anterior es mejor utilizar un foreach.
198
« en: Miércoles 15 de Febrero de 2006, 16:42 »
Por ejemplo si subes el precio de determinado item en 5% y luego quieres regresar al precio original tienes que usar "cantidad/1.05" (restar el 5% de la cantidad INICIAL) o de lo contrario vas a tener pérdidas si usas "cantidad*0.95%" (restar el 5% de la cantidad ACTUAL). 100/1.05 no es igual al 5% porque
100/1.05=95.238095238095238095238095238095
el 5% de 100 es 5 y 100*0.95 si es 95%
No se, creo que esto ha ido demasiado lejos pero no se porqué se me hace interesante Se trata de restar el 5% de la cantidad inicial. Lo que estas haciendo es restar el 5% de la cantidad actual. Inicial: 100 +5% = 100*1.05 = 105 ahora volvemos al precio INICIAL: = 105/1.05 = 100 Si haces esto: 105 * 0.95 = 99.75 vas a tener que poner de tu bolsillo el 0.25 de pérdida.
199
« en: Lunes 13 de Febrero de 2006, 20:33 »
Supongo que al usar "cantidad/1.07" quieren obtener la funcion inversa de "cantidad*1.07" asi que con esto ultimo aumentas un 7% y con lo anterior vuelves a la cantidad inicial. Por ejemplo si subes el precio de determinado item en 5% y luego quieres regresar al precio original tienes que usar "cantidad/1.05" (restar el 5% de la cantidad INICIAL) o de lo contrario vas a tener pérdidas si usas "cantidad*0.95%" (restar el 5% de la cantidad ACTUAL).
200
« en: Domingo 12 de Febrero de 2006, 16:10 »
...Luego me dices que coloque un Tpaintbox en el formulario y en la propiedad OnPaint pinte los bitmas en la posición que quiera (¿?), esto último no tengo idea de como hay que hacerlo. Además no entiendo como con un solo Tpaintbox puedo mostrar todas las imágenes bmp. ... Para pintar: miTpaintBox.canvas.draw(); En delphi existe un tab de properties para asignar a un evento como onPaint la función que quieras que se ejecute para responder al evento. Un evento como "OnPaint" es similar a una variable, pero del tipo función de objeto que recibe ciertos tipos de parámetros.
Páginas: 1 ... 6 7 [8] 9 10 ... 27
|
|
|